linux內(nèi)核進程管理

linux內(nèi)核進程管理

ID:36326785

大?。?41.50 KB

頁數(shù):78頁

時間:2019-05-09

linux內(nèi)核進程管理_第1頁
linux內(nèi)核進程管理_第2頁
linux內(nèi)核進程管理_第3頁
linux內(nèi)核進程管理_第4頁
linux內(nèi)核進程管理_第5頁
資源描述:

《linux內(nèi)核進程管理》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫

1、第2章Linux內(nèi)核——進程管理本章主要介紹:進程概念進程的組成進程的狀態(tài)和調(diào)度進程間關(guān)系中斷處理與定時器系統(tǒng)調(diào)用進程間通信1進程概念20世紀60年代,進程(process)一詞首先在麻省理工學院的MULTICS和IBM的CTSS/360系統(tǒng)中被引入。對進程下個準確定義不容易,但有必要強調(diào)一下進程具有的兩個重要特性。1.獨立性進程是系統(tǒng)中獨立存在的實體,它可以擁有自己獨立的資源,比如文件和設(shè)備描述符等。在沒有經(jīng)過進程本身允許的情況下,其他進程不能訪問到這些資源。這一點上和線程有很大的不同。線程是共享資源的

2、程序?qū)嶓w,創(chuàng)建一個線程所花費的系統(tǒng)開銷要比創(chuàng)建一個進程小得多。一個程序至少有一個進程,一個進程至少有一個線程。線程是進程的一個實體,是CPU調(diào)度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。線程自己基本上不擁有系統(tǒng)資源,只擁有一點在運行中必不可少的資源(如程序計數(shù)器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源。2.動態(tài)性進程與程序的區(qū)別在于,程序只是一個靜態(tài)的指令集合,而進程是一個正在系統(tǒng)中活動的指令集合。在進程中加入了時間的概念。進程具有自己的生命周期和各種不

3、同的狀態(tài),這些概念在程序中都是不具備的。由于以上兩個性質(zhì),又可以衍生出進程的第三個重要特性,即并發(fā)性。若干個進程可以在單處理機狀態(tài)上并發(fā)執(zhí)行。注意并發(fā)性(concurrency)和多處理機并行(parallel)是兩個不同的概念。并行指在同一時刻內(nèi),有多條指令在多個處理機上同時執(zhí)行;并發(fā)指在同一時刻內(nèi)可能只有一條指令執(zhí)行,但多個進程的指令被快速輪換執(zhí)行,使得在宏觀上具有多個進程同時執(zhí)行的效果。2進程的組成作為申請系統(tǒng)資源的基本單位,進程必須有一個對應(yīng)的物理內(nèi)存空間。而對這樣的一塊空間,首先要用數(shù)據(jù)結(jié)構(gòu)進行

4、描述,才能進一步對之進行管理。在Linux中,進程以進程號PID(processID)作為標識。任何對進程進行的操作都要給予其相應(yīng)的PID號。每個進程都屬于一個用戶,進程要配備其所屬的用戶編號UID。此外,每個進程都屬于多個用戶組,所以進程還要配備其歸屬的用戶組編號GID的數(shù)組UID和GID都分4種,UID包括uid,euid,suid和fsuid,GID包括gid,egid,sgid和fsgid。一般來說uid=euid=fsuid,gid=egid=fsgid。進程標識:uid和gid是運行進程的用戶

5、標識和用戶組標識。euid和egid又稱為有效的uid和gid。出于系統(tǒng)安全權(quán)限的考慮,運行程序時要檢查euid和egid的合法性。通常,uid等于euid,gid等于egid。有時候,系統(tǒng)會賦予一般用戶暫時擁有root的uid和gid(作為用戶進程的euid和egid),以便于進行運作。suid和sgid是根據(jù)POSIX標準引入的,在系統(tǒng)調(diào)用改變uid和gid時,用于保留真正的uid和gid。fsuid和fsgid稱為文件系統(tǒng)的uid和gid,用于對文件系統(tǒng)操作時的合法性檢查,是LINUX獨特的標識類型

6、。它們一般分別和euid和egid一致,但在NFS文件系統(tǒng)中NFS服務(wù)器需要作為一個特殊的進程訪問文件,這時只修改客戶進程的fsuid和fsgid。進程運行的環(huán)境稱為進程上下文(context)。Linux中進程的上下文由進程控制塊PCB(processcontrolblock)、正文段(textsegment)、數(shù)據(jù)段(datasegment)以及用戶堆棧(stack)組成。其中:正文段存放該進程的可執(zhí)行代碼;數(shù)據(jù)段存放進程中靜態(tài)產(chǎn)生的數(shù)據(jù)結(jié)構(gòu);PCB包括進程的編號、狀態(tài)、優(yōu)先級以及正文段和數(shù)據(jù)段中數(shù)據(jù)

7、分布的大概情況?!獋€稱做進程表(processtable)的鏈表結(jié)構(gòu)將系統(tǒng)中所有的PCB塊聯(lián)系起來,如圖2-1所示。圖2-1進程的數(shù)據(jù)結(jié)構(gòu)Linux源代碼中也將進程稱作任務(wù)(Task),Linux上的所有進程都是由task_struct結(jié)構(gòu)體來管理。生成一個進程時會產(chǎn)生一個task_struct結(jié)構(gòu)體,此后通過task_struct結(jié)構(gòu)來管理進程。當然文件也是通過task_struct結(jié)構(gòu)來管理。Linux中的PCB塊又稱為task_struct結(jié)構(gòu),在2.4版本內(nèi)核中,每個task_struct占168

8、0個字節(jié)。Linux根據(jù)系統(tǒng)物理內(nèi)存的大小限制已打開進程的總數(shù)目。系統(tǒng)每次訪問一個進程時,內(nèi)核根據(jù)PID在進程表中查找相應(yīng)的進程PCB塊(具體查找過程通過一個PID的hash表實現(xiàn)),再通過PCB塊找到其對應(yīng)的代碼段與數(shù)據(jù)段,并進行操作。3進程的狀態(tài)和調(diào)度Linux系統(tǒng)信號信號主要用于通知進程異步事件的發(fā)生。在Linux中可以識別29種不同的信號,這些信號中的大部分都有了預先定義好的意義,進程可以顯式的用kill或killpg

當前文檔最多預覽五頁,下載文檔查看全文

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

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