淺析linux中的進(jìn)程和中斷

淺析linux中的進(jìn)程和中斷

ID:33406091

大?。?22.50 KB

頁數(shù):7頁

時間:2019-02-25

淺析linux中的進(jìn)程和中斷_第1頁
淺析linux中的進(jìn)程和中斷_第2頁
淺析linux中的進(jìn)程和中斷_第3頁
淺析linux中的進(jìn)程和中斷_第4頁
淺析linux中的進(jìn)程和中斷_第5頁
資源描述:

《淺析linux中的進(jìn)程和中斷》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫

1、一進(jìn)程和進(jìn)程調(diào)度1.進(jìn)程1.1什么是進(jìn)程正在執(zhí)行的程序代碼的實(shí)時結(jié)果,即處于執(zhí)行期的程序及相關(guān)資源。系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單元Linux系統(tǒng)中的進(jìn)程:交互式進(jìn)程shell命令進(jìn)程、文本編輯器批處理進(jìn)程編譯實(shí)時進(jìn)程視頻應(yīng)用程序1.2Linux下的進(jìn)程結(jié)構(gòu)內(nèi)核將所有進(jìn)程存放在進(jìn)程鏈表,鏈表的每一項(xiàng)的類型為task_struct這個類型就稱為進(jìn)程描述符,一個進(jìn)程描述符包含了具體進(jìn)程的所有信息,包括進(jìn)程的狀態(tài)、進(jìn)程標(biāo)識值、進(jìn)程間的關(guān)系、打開的文件信息等1.進(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)

2、程的進(jìn)程號getppid()獲得當(dāng)前進(jìn)程的父進(jìn)程號2.進(jìn)程的狀態(tài)TASK_RUNNING運(yùn)行狀態(tài)(運(yùn)行就緒、正在運(yùn)行)TASK_INTERRUPTIBLE可中斷的阻塞狀態(tài)TASK_UNINTERRUPTIBLE不可中斷的阻塞狀態(tài)TASK_TRACED跟蹤狀態(tài)TASK_STOPPED暫停狀態(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)程。1.3Linux下進(jìn)程的創(chuàng)建和終止1.創(chuàng)建fork()拷貝當(dāng)

3、前進(jìn)程創(chuàng)建一個子進(jìn)程exec()讀取可執(zhí)行文件并將其載入地址空間開始運(yùn)行其中,fork()使用寫時復(fù)制技術(shù),避免拷貝大量用不到的數(shù)據(jù),使系統(tǒng)具有快速執(zhí)行能力2.終止do_exit()釋放與進(jìn)程相關(guān)的資源,進(jìn)程僵死不可運(yùn)行,處于退出狀態(tài)但仍保留了進(jìn)程描述符,此時進(jìn)程的存在只為父進(jìn)程能獲得它的信息wait()終止進(jìn)程,占用的所有資源被釋放1.4Linux下的進(jìn)程調(diào)度1.進(jìn)程的優(yōu)先級Linux采用兩種不同的優(yōu)先級范圍1)nice值-20~+19默認(rèn)值為0值越大優(yōu)先級越低2)實(shí)時優(yōu)先級可配置0~99值越大優(yōu)先級越高內(nèi)核將進(jìn)程分為兩個級別:普通進(jìn)程和實(shí)時進(jìn)程,任何實(shí)時進(jìn)程的優(yōu)先

4、級都高于普通進(jìn)程,實(shí)時優(yōu)先級和nice?優(yōu)先級處于互不相交的兩個范疇1.時間片進(jìn)程被搶占前持續(xù)運(yùn)行的時間時間片過長系統(tǒng)對交互響應(yīng)表現(xiàn)欠佳時間片過短明顯增大進(jìn)程切換帶來的處理器耗時Linux的CFS調(diào)度器并沒有直接分配時間片到進(jìn)程,而是劃分了處理器的使用比,它還會受到nice值得影響2.Linux下的進(jìn)程調(diào)度Linux的調(diào)度器類主要實(shí)現(xiàn)兩類進(jìn)程調(diào)度算法:實(shí)時調(diào)度算法和完全公平調(diào)度算法(CFS)1)對實(shí)時進(jìn)程的調(diào)度按優(yōu)先級執(zhí)行,一般不會被搶占。直到實(shí)時進(jìn)程執(zhí)行完,才會執(zhí)行普通進(jìn)程。如果有多個可執(zhí)行狀態(tài)的同優(yōu)先級的實(shí)時進(jìn)程,有兩種調(diào)度策略:a)SCHED_FIFO先進(jìn)先出b

5、)SHED_RR輪轉(zhuǎn)調(diào)度內(nèi)核為實(shí)時進(jìn)程分配時間片2)完全公平調(diào)度算法Completely?Fair?SchedulerCFS完全公平調(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ì)算出一個進(jìn)程應(yīng)該運(yùn)行多久可運(yùn)

6、行進(jìn)程數(shù)量趨于無限時,處理器使用比趨于0,為此CFS引入了每個進(jìn)程時間片底線,稱為最小粒度,默認(rèn)為1msCFS就是通過追蹤這個vruntime來進(jìn)行任務(wù)調(diào)度,CFS選擇具有最小vruntime值的進(jìn)程作為下一個可執(zhí)行進(jìn)程,用紅黑樹來組織調(diào)度實(shí)體,而鍵值就是vruntime。在每個tick中斷的時候,會更新進(jìn)程的信息,并檢查這個紅黑樹,判斷某些進(jìn)程是不是要被替換掉。那么CFS只要選擇最左葉子節(jié)點(diǎn)作為下一個可執(zhí)行進(jìn)程即可。實(shí)際上CFS緩存了最左葉子,可以直接選取left_most葉子_pick_next_entity()。二:中斷和中斷處理2.1什么是中斷硬件在需要的時候

7、向內(nèi)核發(fā)出信號由于處理器的速度遠(yuǎn)大于外圍硬件設(shè)備的速度,內(nèi)核可以線處理其它事物,等到硬件真正完成請求再對該請求進(jìn)行處理2.2中斷處理的上半部和下半部為了讓中斷處理既運(yùn)行的快,又完成多工作量,中斷處理程序從概念上分為上半部分(tophalf)和下半部分(bottomhalf),內(nèi)核把上半部和下半部分開處理。1.上半部——登記中斷中斷處理程序收到一個中斷,它就立即開始執(zhí)行,但只做有嚴(yán)格時間限制的工作,如對中斷的應(yīng)答和拷貝數(shù)據(jù)等,應(yīng)該盡量減少上半部的工作量,此時完全屏蔽中斷,要求快速,否則其它中斷得不到處理1.下半部——可以推遲處理的部分執(zhí)行與中斷處理密切

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。