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

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

ID:36326785

大?。?41.50 KB

頁(yè)數(shù):78頁(yè)

時(shí)間:2019-05-09

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

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

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

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

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

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

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

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

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

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

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

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

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