版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Linux 進程管理 Email:SummaryLinux進程概述Linux進程的狀態(tài)和標(biāo)識Linux進程調(diào)度Linux進程的創(chuàng)建撤消Linux進程間的通信機制Linux 信號量機制Linux進程概述Linux進程組成代碼段:數(shù)據(jù)段:PCBLinux進程PCBLinux的PCB是一個名為task_struct的數(shù)據(jù)結(jié)構(gòu),稱為任務(wù)結(jié)構(gòu)體。它包含linux進程的所有信息,是linux的核心數(shù)據(jù)結(jié)構(gòu)。task_struct 結(jié)構(gòu)定義在include/linux/sched.hPCB:Linux進程概述task_struct的主要內(nèi)容:進程狀態(tài)和標(biāo)志進程標(biāo)識進程控制塊6進程的族親關(guān)系進程控制塊7進程間
2、鏈接信息進程調(diào)度信息進程控制塊8進程的時間信息 進程的虛存信息進程控制塊9進程的文件信息 與進程間通信有關(guān)的信息進程控制塊10其它信息 進程控制塊11Linux進程概述向量表task數(shù)組 因為系統(tǒng)中同時會有多個進程在活動,為了方便管理,系統(tǒng)必須能夠很容易地找到任一個進程的結(jié)構(gòu)。向量表task是一個指針數(shù)組,其中的每一個指針指向系統(tǒng)中的一個task_struct數(shù)據(jù)結(jié)構(gòu)。 在linux內(nèi)核源代碼kernel/sched.c中task數(shù)組的定義如下:Struct task_struct *taskNR_TASKS=&init_task;可以看到:1、Task數(shù)組的大小NR_TASKS(/inclu
3、de/linux/task.h)決定了系統(tǒng)中容納進程最大數(shù)量,它的默認值被定義為512。2、task數(shù)組的第一個指針指向一個名字為init_task的結(jié)構(gòu)體,它是系統(tǒng)初始化進程init的任務(wù)結(jié)構(gòu)體。 Task_struct的管理Linux進程概述雙向循環(huán)鏈表為了加快訪問任務(wù)結(jié)構(gòu)體的速度,Linux把系統(tǒng)中所有的任務(wù)結(jié)構(gòu)體相互連接成一個雙向循環(huán)鏈表。 Task_struct的管理Struct task_struct *next_task;/*指向后一個任務(wù)結(jié)構(gòu)體的指針*/Struct task_struct *prev_task;/*指向前一個任務(wù)結(jié)構(gòu)體的指針*/ 當(dāng)創(chuàng)建新的進程時,要從系統(tǒng)內(nèi)存
4、中分配一個新的task_struct結(jié)構(gòu),并將其加入到task向量表中。撤消進程時,則執(zhí)行反操作。宏定義:SET_LINKS:插入一個任務(wù)結(jié)構(gòu)體REMOVE_LINKS:刪除一個任務(wù)結(jié)構(gòu)體For_each_task:遍歷所有任務(wù)結(jié)構(gòu)體 Linux進程概述nr_tasks為了記錄系統(tǒng)中實際存在的進程數(shù),系統(tǒng)定義了一個全局變量,其值隨系統(tǒng)中存在的進程數(shù)目而變化。在kernel/fork.c中,它的定義及初始化如下:Int nr_tasks =1;Task_struct的管理Linux進程概述Task_struct的管理Linux進程概述Linux進程在處理機上的執(zhí)行狀態(tài)在Linux系統(tǒng)中,用戶不能
5、直接訪問系統(tǒng)資源,如處理機、寄存器、存儲器和各種外圍設(shè)備。因此提供了兩種不同指令:為了區(qū)分處理機在執(zhí)行那種指令,通常將處理機的執(zhí)行狀態(tài)又分為兩種:一般指令:供用戶和系統(tǒng)編程使用,不能直接訪問系統(tǒng)資源;特權(quán)指令:供操作系統(tǒng)使用,可以直接訪問和控制系統(tǒng)資源;管態(tài)(內(nèi)核態(tài)、系統(tǒng))目態(tài)(用戶態(tài)) Linux進程概述進程空間和系統(tǒng)空間 進程的虛存空間內(nèi)核代碼內(nèi)核數(shù)據(jù)區(qū)程序代碼進程數(shù)據(jù)進程堆棧系統(tǒng)數(shù)據(jù)Task_struct內(nèi)核堆棧系統(tǒng)空間進程空間正文段用戶數(shù)據(jù)段的系統(tǒng)數(shù)據(jù)段Linux進程的狀態(tài)和標(biāo)識Linux進程的狀態(tài)(5種)每個進程在系統(tǒng)中所處的狀態(tài)記錄在它的任務(wù)結(jié)構(gòu)體的成員項state中。#defin
6、e TASK_RUNNING 0 可運行態(tài)(執(zhí)行、就緒)#define TASK_INTERRUPTIBLE 1 可中斷的等待態(tài)#define TASK_UNINTERRUPTIBLE 2 不可中斷的等待態(tài)#define TASK_ZOMBLE 3 僵死態(tài)#define TASK_STOPPED 4 暫停態(tài)/include/linux/sched.hLinux進程的狀態(tài)和標(biāo)識Linux進程的狀態(tài)運行態(tài):該狀態(tài)進程稱為當(dāng)前進程(current process) 實際上linux并沒有該狀態(tài),而是將其歸結(jié)在可運行態(tài)。系統(tǒng)中設(shè)置全局指針變量current,指向當(dāng)前進程??蛇\行態(tài)又可細分為運行態(tài)(執(zhí)行
7、)、可運行態(tài)(就緒):可運行態(tài) Linux中把所有處于運行、就緒狀態(tài)的進程鏈接成一個雙向鏈表,稱為可運行隊列(run_queue)。使用任務(wù)結(jié)構(gòu)體中的兩個指針:Struct task_struct *next_run;/*指向后一個任務(wù)結(jié)構(gòu)體的指針*/Struct task_struct *prev_run;/*指向前一個任務(wù)結(jié)構(gòu)體的指針*/該鏈表的首結(jié)點為init_task。系統(tǒng)設(shè)置全局變量nr_running記錄處于運行、就緒態(tài)的進程數(shù)。Linux進程的狀態(tài)和標(biāo)識等待態(tài)(wait)阻塞在linux中將該狀態(tài)進一步劃分為:可中斷的等待態(tài)(interruptible):該狀態(tài)的進程可以由信號(
8、signal)解除其等待態(tài)。不可中斷的等待狀態(tài)(uninterruptible):該狀態(tài)的進程,一般都是直接或間接在等待硬件條件,只能用特定的方式來解除其等待狀態(tài),如使用wakeup()。Linux進程的狀態(tài)處于等待態(tài)的進程根據(jù)其等待的事件排在不同的等待隊列中。Linux進程的狀態(tài)和標(biāo)識暫停態(tài)(stopped):進程由于需要接受某種特殊處理而暫時停止運行所處的狀態(tài)。通常,進程在接受到外部進程的某個信號(SIGSTOP、SIGSTP、SIGTTOU)而進入暫停態(tài)。通常正在接受調(diào)試的進程就處于暫停態(tài)。僵死態(tài)(zombie):進程的運行已經(jīng)結(jié)束,但是由于某種原因它的進程結(jié)構(gòu)體仍在系統(tǒng)中。Linux進程的狀態(tài)Linux進程的狀態(tài)和標(biāo)識Linux進程的狀態(tài)轉(zhuǎn)換Linux進程調(diào)度Linux系統(tǒng)是一個同時具有分時和實時特性的操作系統(tǒng)。 linux在進程調(diào)度中采用的是可搶占調(diào)度方式: 在分時特性中為了使進程得到平均的處理機使用時間而采用時間片輪轉(zhuǎn)法(內(nèi)核) 在實時特性中,對于當(dāng)前運行的進程而言,當(dāng)有更緊急的進程到來時,系統(tǒng)剝奪當(dāng)前進程的運行,而把處理機分配給緊急進程。Linux中的進程分為普通進程和實時進程。實時進程的優(yōu)先級高于普通進程。對實時進程和普通進程采用不同的調(diào)度策略。 Linux進程調(diào)度Linux進程 調(diào)度策略#define SCHED_NORMAL 0 普通進程的時間片輪轉(zhuǎn)算法 (c
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 飼料加工技術(shù)提升-洞察分析
- 消費升級背景下的青年消費-洞察分析
- 2025年滬教版九年級物理下冊月考試卷含答案
- 香料作物種植標(biāo)準(zhǔn)化-洞察分析
- 微生物生物量動態(tài)監(jiān)測-洞察分析
- 網(wǎng)絡(luò)請求緩存管理-洞察分析
- 2025年滬教版六年級語文上冊月考試卷
- 2025年外研銜接版七年級地理下冊階段測試試卷含答案
- 痛風(fēng)治療目標(biāo)預(yù)測-洞察分析
- 二零二五年度二手車交易車輛運輸合同模板4篇
- 2025年中國高純生鐵行業(yè)政策、市場規(guī)模及投資前景研究報告(智研咨詢發(fā)布)
- 湖北省黃石市陽新縣2024-2025學(xué)年八年級上學(xué)期數(shù)學(xué)期末考試題 含答案
- 2022-2024年浙江中考英語試題匯編:完形填空(學(xué)生版)
- 2025年廣東省廣州市荔灣區(qū)各街道辦事處招聘90人歷年高頻重點提升(共500題)附帶答案詳解
- 中試部培訓(xùn)資料
- 硝化棉是天然纖維素硝化棉制造行業(yè)分析報告
- 央視網(wǎng)2025亞冬會營銷方案
- 北師大版數(shù)學(xué)三年級下冊豎式計算題100道
- 計算機網(wǎng)絡(luò)技術(shù)全套教學(xué)課件
- 屋頂分布式光伏發(fā)電項目施工重點難點分析及應(yīng)對措施
- 胃鏡下超聲穿刺護理配合
評論
0/150
提交評論