版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、進(jìn)程和進(jìn)程調(diào)度1.進(jìn)程1.1什么是進(jìn)程正在執(zhí)行的程序代碼的實時結(jié)果,即處于執(zhí)行期的程序及相關(guān)資源。系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單元Linux系統(tǒng)中的進(jìn)程:交互式進(jìn)程shell命令進(jìn)程、文本編輯器批處理進(jìn)程編譯實時進(jìn)程視頻應(yīng)用程序1.2 Linux下的進(jìn)程結(jié)構(gòu)內(nèi)核將所有進(jìn)程存放在進(jìn)程鏈表,鏈表的每一項的類型為task_struct 這個類型就稱為進(jìn)程描述符,一個進(jìn)程描述符包含了具體進(jìn)程的所有信息,包 括進(jìn)程的狀態(tài)、進(jìn)程標(biāo)識值、進(jìn)程間的關(guān)系、打開的文件信息等進(jìn)程標(biāo)識內(nèi)核通過唯一的進(jìn)程標(biāo)識值PID來標(biāo)識每一個來標(biāo)志每一個進(jìn)程PID存放在進(jìn)程描述符中g(shù)etpid()獲得當(dāng)前進(jìn)程的進(jìn)程號getppid(
2、)獲得當(dāng)前進(jìn)程的父進(jìn)程號進(jìn)程的狀態(tài)TASK_RUNNINGTASK_INTERRUPTIBLETASK_UNINTERRUPTIBLETASK_TRACEDTASKSTOPPED運(yùn)行狀態(tài)(運(yùn)行就緒、正在運(yùn)行)可中斷的阻塞狀態(tài)不可中斷的阻塞狀態(tài)跟蹤狀態(tài)暫停狀態(tài)設(shè)置當(dāng)前進(jìn)程的狀態(tài):set_current_state(current,state);進(jìn)程家族樹:-Linux系統(tǒng)的進(jìn)程之間存在繼承關(guān)系,所有的進(jìn)程都是PID為1 的init進(jìn)程的后代,內(nèi)核在系統(tǒng)啟動的最后階段啟動init進(jìn)程。Linux下進(jìn)程的創(chuàng)建和終止創(chuàng)建fork()拷貝當(dāng)前進(jìn)程創(chuàng)建一個子進(jìn)程exec()讀取可執(zhí)行文件并將其載入地址空間
3、開始運(yùn)行其中,fork()使用寫時復(fù)制技術(shù),避免拷貝大量用不到的數(shù)據(jù),使系統(tǒng)具有 快速執(zhí)行能力終止do_exit()釋放與進(jìn)程相關(guān)的資源,進(jìn)程僵死不可運(yùn)行,處于退出狀態(tài)但仍保留了進(jìn)程描述符,此時進(jìn)程的存在只為父進(jìn)程能獲得它的信息wait()終止進(jìn)程,占用的所有資源被釋放Linux下的進(jìn)程調(diào)度1.進(jìn)程的優(yōu)先級Linux采用兩種不同的優(yōu)先級范圍1) nice值-20+19默認(rèn)值為0值越大優(yōu)先級越低F SUIDPIDPPIDCPRINI ADDR SZWCHANTTYTIMECMD4 S0100800 -917polls700:;00init1 S0200800 -0kthrea700:kthrea
4、dd1 S0320800 -0runks700:ksoftirqd/O1 S0620*-0cpust700:頂1migration/05 S0720*-0watchd700:watchdog/01 S0820*-0cpust700:migration/11 S01020800 -0runks700:ksoftirqd/11 S01120800 -0worker700:JOO:103kworker/0:15 S01220*-0watchd700:watchdog/11 S0132060-況-0rescue700:cpuset1 S0142060-況-0rescue7 00:khelper5 S2
5、)3若時優(yōu)先級o可配19 0-99B3值越大高3;00kdevtmpfsPID PPID RTPRIDTIMECOMMAND0-00:00:00/sbin/init0-00:00:00kthreadd2-90:00:00ksoftirqd/O29900:09:01migration/29900:00:09watchdog/O29900:00:00mtgration/12-00:00:00ksoftirqd/12-00:00:03kworker/0:1內(nèi)核將進(jìn)程分為兩個級別:?普通進(jìn)程和 E先級都高于普甬進(jìn)程耳實時優(yōu)先級和Jnice 14 L - 加:河 khHpb2-時間片進(jìn)程被搶占前持續(xù)運(yùn)行
6、的時間時間片過長系統(tǒng)對交互響應(yīng)表現(xiàn)欠佳時間片過短明顯增大進(jìn)程切換帶來的處理器耗時Linux的CFS調(diào)度器并沒有直接分配時間片到進(jìn)程,而是劃分了處理器的 使用比,它還會受到nice值得影響3. Linux下的進(jìn)程調(diào)度Linux的調(diào)度器類主要實現(xiàn)兩類進(jìn)程調(diào)度算法:實時調(diào)度算法和完全公平調(diào)度算法(CFS)對實時進(jìn)程的調(diào)度按優(yōu)先級執(zhí)行,一般不會被搶占。直到實時進(jìn)程執(zhí)行完,才會執(zhí)行普通進(jìn)程。如果有多個可執(zhí)行狀態(tài)的同優(yōu)先級的實時進(jìn)程,有兩種調(diào)度策略:SCHED_FIFO先進(jìn)先出SHED_RR輪轉(zhuǎn)調(diào)度 內(nèi)核為實時進(jìn)程分配時間片 完全公平調(diào)度算法Completely Fair SchedulerCFS完全公平
7、調(diào)度針對普通進(jìn)程的調(diào)度類CFS基于一個簡單的理念:所有任務(wù)都應(yīng)該公平的分配處理器。理 想情況下,n個進(jìn)程的調(diào)度系統(tǒng)中,每個進(jìn)程獲得1/n處理器時間CFS使用vruntime變量記錄一個進(jìn)程運(yùn)行多長時間以及還應(yīng)該再運(yùn) 行多久,它是一個通過優(yōu)先級和系統(tǒng)負(fù)載等加權(quán)過的時間,nice值在 CFS中被作為進(jìn)程獲得的處理器運(yùn)行比的權(quán)重,越低的nice值(越高的 優(yōu)先級)進(jìn)程獲得更多的處理器使用權(quán)重CFS在所有可運(yùn)行進(jìn)程總數(shù)基礎(chǔ)上計算出一個進(jìn)程應(yīng)該運(yùn)行多久可運(yùn)行進(jìn)程數(shù)量趨于無限時,處理器使用比趨于0,為此CFS引入 了每個進(jìn)程時間片底線,稱為最小粒度,默認(rèn)為1msCFS就是通過追蹤這個vruntime來進(jìn)行
8、任務(wù)調(diào)度,CFS選擇具有最 小vruntime值的進(jìn)程作為下一個可執(zhí)行進(jìn)程,用紅黑樹來組織調(diào)度實體,而鍵 值就是vruntime。在每個tick中斷的時候,會更新進(jìn)程的信息,并檢查這個紅 黑樹,判斷某些進(jìn)程是不是要被替換掉。那么CFS只要選擇最左葉子節(jié)點作為 下一個可執(zhí)行進(jìn)程即可。實際上CFS緩存了最左葉子,可以直接選取left_most 葉子_pick_next_entity()二:中斷和中斷處理2.1什么是中斷硬件在需要的時候向內(nèi)核發(fā)出信號由于處理器的速度遠(yuǎn)大于外圍硬件設(shè)備的速度,內(nèi)核可以線處理其它事 物,等到硬件真正完成請求再對該請求進(jìn)行處理2.2中斷處理的上半部和下半部為了讓中斷處理既
9、運(yùn)行的快,又完成多工作量,中斷 處理程序從概念上分 為上半部分(top half)和下半部分(bottom half),內(nèi)核把上半部和下半部分開處 理。上半部一一登記中斷中斷處理程序收到一個中斷,它就立即開始執(zhí)行,但只做有嚴(yán)格時間限制 的工作,如對中斷的應(yīng)答和拷貝數(shù)據(jù)等,應(yīng)該盡量減少上半部的工作量,此時完全屏蔽中斷,要求快速,否則其它 中斷得不到處理下半部一一可以推遲處理的部分執(zhí)行與中斷處理密切相關(guān)但上半部分本身不執(zhí)行的工作,允許被稍后完成2.3注冊中斷處理程序每一設(shè)備都有相關(guān)的驅(qū)動程序,如果設(shè)備使用中斷,相應(yīng)的驅(qū)動程序就需 要注冊一個中斷處理程序驅(qū)動程序通過request_irq()函數(shù)注冊
10、一個中斷處理程序,并且激活給定的中 斷線intrequest_irq(unsigned int irq, irq_handler_thandler,unsigned long flags,const char *name,void *dev)irq要分配的中斷號handler指針,指向處理這個中斷的實際中斷處理程序typedef irqreturn_t (*irq_handler_t) (int,void *)flags中斷處理的標(biāo)志RQF_DISABLED內(nèi)核在處理中斷處理程序期間,禁止所有其它中斷IRQF_SAMPLE_RANDOM中斷對內(nèi)核熵池有貢獻(xiàn) 內(nèi)核熵池-負(fù)責(zé)提 供從各種隨機(jī)事件導(dǎo)
11、出的真正隨機(jī)數(shù)IRQF_TIMER系統(tǒng)定時器的中斷處理IRQF_SHARED 在多個中斷處理程序之間共享中斷線name與中斷相關(guān)的設(shè)備的ASCII文本表示dev對于共享的中斷線,提供唯一的標(biāo)志信息區(qū)分共享同一中斷處理程序的多個設(shè)備,支持共享.函數(shù)返回0表示成功執(zhí)行,返回非0表示有錯誤2.4中斷處理程序編寫中斷處理程序return_t intr_handler(int irq, void *dev)返回類型irqreturn_tIRQ_NONE不是指定的設(shè)備產(chǎn)生的中斷IRQ_HANDLED被正確調(diào)用對于共享的中斷處理程序:flags 必須設(shè)置為 IRQF_SHARED對每個注冊的中斷處壬理程序,
12、dev參數(shù)唯一(可以使用指向設(shè)備結(jié)構(gòu)的指針)釋放中斷處理程序 void free_irq(unsigned int irq,void *dev)2.5 /proc/interrupts該文件存放系統(tǒng)中與中斷相關(guān)的統(tǒng)計信息CPU。CPU10:673514115 lO-APIC-edgetimer1:14949 lO-APIC-edge180428:10 IO-APIC-edgertcO9:219207 10-APIC-fasteoi acpi10:00 lO-APIC-edgeite-cir12:62491235 lO-APIC-edge1804216:488419 IO-APIC-fasteo
13、i uhcl_hcd:usb3, nncO, flrewlreohc1, jmb38x_ms:slot0,nouveau, sndhdaintel18:7477 IO-APIC-fasteoi uhcihcd:usb819:18182042 10-APIC-fasteoi ehclhcd:usbl, uhci hcd:usb5, uhcL_hcd:usb721:00 IO-APIC-fasteoi uhcihcd:usb423:17252541 10-APIC-fasteoi ehclhcd:usb2, uhci hcd:usb647:65785619 PCI-MSI-edgeahci48:3
14、48541077 PCI-MSI-edgeiwlwifi49:列是中斷第1PC三列【是接接數(shù)d_的值tel對斷的中斷1控制器,2FC愜I ed卵PthO2.6中斷的控制函 數(shù)說 明local _irq_disable()禁止本地中斷侍遞local_irq_enable()激活本地中斷傳遞local_irq_save()保存本地中斷傳遞的當(dāng)前狀態(tài),然后禁止本地中斷傳遞local_irq_restore()恢復(fù)本地中斷傳追到給定的狀態(tài)disablc_ir(i()禁止給定中斷線,井確保該函數(shù)返回之前在該中斷線上沒有處理程序在運(yùn)行disable ir(Lnosync()禁止給定中斷線enable_inqO激活繪定中斷線irqs_disabled()如果本地中斷傳遞被禁止,5W返回非0;否則返回0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工業(yè)建設(shè)塔吊租賃合同樣本
- 勞務(wù)規(guī)范制度宣傳板
- 汽車承銷協(xié)議書范本
- 醫(yī)院建筑施工圖設(shè)計合同
- 電子產(chǎn)品公司總經(jīng)理任職合同
- 會展活動招標(biāo)文件撰寫技巧
- 電信運(yùn)營商出納勞動合同
- 學(xué)校建設(shè)模板施工合同
- 游樂園專用停車場出租協(xié)議
- 停車場車位租賃合同
- 個人簡歷求職簡歷課件.ppt
- 副神經(jīng)節(jié)瘤圖文.ppt
- 業(yè)務(wù)流程繪制方法IDEF和IDEFPPT課件
- (完整版)垃圾自動分揀機(jī)構(gòu)PLC控制畢業(yè)設(shè)計.doc
- 小學(xué)四年級音樂課程標(biāo)準(zhǔn)
- 我的一次教研經(jīng)歷
- 雙向細(xì)目表和單元測試卷及組卷說明
- 工業(yè)廠房中英文對照施工組織設(shè)計(土建、水電安裝)范本
- PCR儀使用手冊
- 離子色譜法測定空氣中二氧化硫
- 水蒸汽熱力性質(zhì)表
評論
0/150
提交評論