資源描述:
《Linux內(nèi)核分析之進程總結(jié)教學(xué)課件》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、姓名:*********班級:四班學(xué)號:***************Linux內(nèi)核分析之進程總結(jié)1.1.1進程的概念在Linux系統(tǒng)中,進程被賦予了下述特性的含義和特性:一個進程是對一個程序的執(zhí)行。一個進程的存在意味著存在一個task_struct結(jié)構(gòu),它包含著相應(yīng)的進程控制信息。一個進程可以生成或消滅其子進程。一個進程是獲得和釋放各種系統(tǒng)資源的基本單位。1.1Linux進程簡介1.2進程的虛擬地址結(jié)構(gòu)1.2.1管理每個進程中的區(qū)系統(tǒng)設(shè)立了稱為vm_area_struct的數(shù)據(jù)類型,進程的每個區(qū)都對
2、應(yīng)一個vm_area_struct結(jié)構(gòu),它主要包括下列內(nèi)容:區(qū)的標(biāo)志位,指明該區(qū)的類型以及是否被鎖住,是否可共享等屬性。缺頁處理程序會根據(jù)地址所在區(qū)的標(biāo)志位查找缺頁原因,并做相應(yīng)處理。區(qū)的起始地址,結(jié)束地址。共享區(qū)域指針,給出共享區(qū)vm_area_struct鏈表。文件系統(tǒng)指針,指向外存中與該區(qū)對應(yīng)的數(shù)據(jù)文件。此區(qū)域的操作函數(shù)指針。1.3進程的狀態(tài)和狀態(tài)轉(zhuǎn)換1.3.1Linux中的五種狀態(tài)。TASK_RUNNING進程處在執(zhí)行或就緒狀態(tài),表示在占有CPU,或者在就緒隊列中等待調(diào)度,只要調(diào)度到它,就可以
3、投入執(zhí)行。TASK_INTERRUPTIBLE進程正在睡眠,但是可以被軟中斷信號喚醒。TASK_UNINTERRUPTIBLE進程正在睡眠,且不可以被軟中斷信號喚醒。TASK_STOPPED表示進程的執(zhí)行被暫停,當(dāng)一個進程受到SIGSTIOP、SIGTSTP、SIGTTIN、SIGTTOU軟中斷信號后進入這個狀態(tài)。TASK_ZOMBIE進程執(zhí)行了系統(tǒng)調(diào)用exit后,進入僵死狀態(tài)。1.4進程控制1.4.1理解Linux系統(tǒng)進程的并發(fā)性下面介紹一下fork的功能與實現(xiàn)過程。系統(tǒng)調(diào)用fork通過執(zhí)行核心程序
4、fork過程完成的功能是:為子進程分配一個進程描述符task_struct結(jié)構(gòu),將父進程的進程描述符的內(nèi)容復(fù)制到新創(chuàng)建的結(jié)構(gòu)中,并重新設(shè)置那些與父進程不同的數(shù)據(jù)成員。為子進程分配一個唯一的進程標(biāo)識符號pid將父進程的地址空間的邏輯副本復(fù)制到子進程。復(fù)制父進程相聯(lián)的有關(guān)文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)和用戶文件描述符表,這樣子進程就繼承了父進程的文件系統(tǒng)相關(guān)的信息。復(fù)制軟中斷信號有關(guān)的數(shù)據(jù)結(jié)構(gòu)。設(shè)備子進程的狀態(tài)為TASK_RUNNING,把它加入到就緒隊列,并啟動調(diào)度程序。對父進程返回子進程的進程標(biāo)識號,對子進程返回
5、零。1.5進程管理Linux是一個多用戶多工的操作系統(tǒng)。多用戶是指多個用戶可以在同一時間使用電腦系統(tǒng);多工是指Linux可以同時執(zhí)行多個任務(wù),它可以在還未執(zhí)行完一個任務(wù)時又執(zhí)行另一項任務(wù)。Linux系統(tǒng)上所有運行的任務(wù)都可以稱之為一個進程,每個用戶任務(wù)、每個系統(tǒng)管理守護進程,也都可以稱之為進程。Linux用分時管理方法使所有的任務(wù)共同分享系統(tǒng)資源。我們所關(guān)心的是如何去控制這些進程,讓它們能夠很好地為用戶服務(wù)。Linux系統(tǒng)中所有進程都是相互聯(lián)系的。除了初始化進程外,所有進程都有一個父進程。新進程不是被
6、創(chuàng)建,而是被復(fù)制,或者從以前的進程復(fù)制而來。1.6進程調(diào)度1.6.1進程調(diào)度涉及的主要問題調(diào)度的時機。調(diào)度標(biāo)志設(shè)置。調(diào)度策略與優(yōu)先數(shù)的計算。調(diào)度的實現(xiàn)。1.7進程通信Linux中的進程通信分為三個部分:低級通信、管理通信和進程通信IPC(inter-processcommunication)。Linux同時支持計算機間通信(網(wǎng)絡(luò)通信)用TCP/TP協(xié)議并提供了相應(yīng)的系統(tǒng)調(diào)用接口。1.8死鎖1.8.1產(chǎn)生死鎖的條件1、互斥條件:一個資源每次只能被一個進程使用。2、請求與保持條件:一個進程因請求資源而阻塞
7、時,對已經(jīng)獲得的資源保持不放。3、不剝奪條件:進程已獲得的資源,在未使用完之前,不能強行剝奪。4、循環(huán)等待條件:若干進程之間形成一種頭尾相接的循環(huán)等待資源關(guān)系。1.8.2死鎖的解決和預(yù)防方法理解了死鎖的原因,尤其是產(chǎn)生死鎖的4個必要條件,就可以最大可能地避免、預(yù)防和解除死鎖。所以,在系統(tǒng)設(shè)計、進程調(diào)度等方面注意如何不讓這4個必要條件成立,如何確定資源的合理分配算法,避免進程永久占據(jù)系統(tǒng)資源。此外,也要放在進程在處于等待狀態(tài)的情況下占用資源,在系統(tǒng)運行過程中,對進程發(fā)出的每一個系統(tǒng)能夠滿足的資源申請進行
8、動態(tài)檢查,并根據(jù)檢查結(jié)果決定是否分配資源,若分配后系統(tǒng)可能發(fā)生死鎖,則不予分配,否則予以分配。因此,對資源的分配要給予合理的規(guī)劃。1.9Linux下的孤兒進程和僵尸進程1.9.1孤兒進程1.9.2僵尸進程1.9.3怎樣產(chǎn)生僵尸進程的1.9.4怎么查看僵尸進程1.9.5怎樣來清除僵尸進程1.10Linux進程的層次關(guān)系當(dāng)打開Linux系統(tǒng),LILO(LinuxLOader)找到Linux內(nèi)核把它加載到內(nèi)存。它初始化各種硬件,包括磁盤控制器。然后轉(zhuǎn)到保護模式