第5章 Linux內(nèi)核簡(jiǎn)介

第5章 Linux內(nèi)核簡(jiǎn)介

ID:44958770

大?。?14.00 KB

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

時(shí)間:2019-11-06

第5章 Linux內(nèi)核簡(jiǎn)介_(kāi)第1頁(yè)
第5章 Linux內(nèi)核簡(jiǎn)介_(kāi)第2頁(yè)
第5章 Linux內(nèi)核簡(jiǎn)介_(kāi)第3頁(yè)
第5章 Linux內(nèi)核簡(jiǎn)介_(kāi)第4頁(yè)
第5章 Linux內(nèi)核簡(jiǎn)介_(kāi)第5頁(yè)
資源描述:

《第5章 Linux內(nèi)核簡(jiǎn)介》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、第5章Linux內(nèi)核簡(jiǎn)介主要內(nèi)容Linux核心的一般結(jié)構(gòu)進(jìn)程的概念、進(jìn)程的調(diào)度和進(jìn)程通信文件系統(tǒng)的構(gòu)成和管理內(nèi)存管理設(shè)備驅(qū)動(dòng)及中斷處理5.1概述Linux系統(tǒng)大致可分為三層:靠近硬件的底層是內(nèi)核,即Linux操作系統(tǒng)常駐內(nèi)存部分。中間層是內(nèi)核之外的shell層,即操作系統(tǒng)的系統(tǒng)程序部分。最高層是應(yīng)用層,即用戶程序部分從結(jié)構(gòu)上看,Linux操作系統(tǒng)是采用單塊結(jié)構(gòu)的操作系統(tǒng)。一般說(shuō)來(lái),可以將操作系統(tǒng)劃分為內(nèi)核和系統(tǒng)程序兩部分?!襁M(jìn)程控制系統(tǒng)用于進(jìn)程管理、進(jìn)程同步、進(jìn)程通信、進(jìn)程調(diào)度和內(nèi)存管理等?!駜?nèi)存管理控制內(nèi)存分配與回收?!裎募到y(tǒng)管理文件、分配文件空間、管理空閑空間、控制對(duì)文件的訪問(wèn)并為用戶檢

2、索數(shù)據(jù)?!馤inux系統(tǒng)支持三種類型的硬件設(shè)備:字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)設(shè)備?!窈诵牡讓拥挠布刂曝?fù)責(zé)處理中斷以及與機(jī)器通信。5.2進(jìn)程管理5.2.1進(jìn)程和線程的概念1.進(jìn)程及其狀態(tài)簡(jiǎn)單說(shuō)來(lái),進(jìn)程就是程序的一次執(zhí)行過(guò)程。進(jìn)程至少要有三種基本狀態(tài)。這三種基本狀態(tài)是:運(yùn)行態(tài)、就緒態(tài)和封鎖態(tài)(或等待態(tài))。進(jìn)程的狀態(tài)可依據(jù)一定的條件和原因而變化2.Linux進(jìn)程狀態(tài)3.進(jìn)程的模式和類型在Linux系統(tǒng)中,進(jìn)程的執(zhí)行模式劃分為用戶模式和內(nèi)核模式按照進(jìn)程的功能和運(yùn)行的程序來(lái)分,進(jìn)程劃分為兩大類:一類是系統(tǒng)進(jìn)程,另一類是用戶進(jìn)程4.Linux線程Linux把線程定義為進(jìn)程的“執(zhí)行上下文”具有一段可執(zhí)行的程序、

3、專用的系統(tǒng)堆棧空間、私有的“線程控制塊”(即thread_struct數(shù)據(jù)結(jié)構(gòu))缺少自己的存儲(chǔ)空間5.2.2進(jìn)程的結(jié)構(gòu)1.task_struct結(jié)構(gòu)task_struct結(jié)構(gòu)包含下列幾方面的信息:·進(jìn)程狀態(tài)·調(diào)度信息·標(biāo)志符·內(nèi)部進(jìn)程通訊·鏈接信息·時(shí)間和計(jì)時(shí)器·文件系統(tǒng)·虛擬內(nèi)存·處理器信息2.進(jìn)程系統(tǒng)堆棧每個(gè)進(jìn)程都有一個(gè)系統(tǒng)堆棧,用來(lái)保存中斷現(xiàn)場(chǎng)信息和進(jìn)程進(jìn)入內(nèi)核模式后執(zhí)行子程序(函數(shù))嵌套調(diào)用的返回現(xiàn)場(chǎng)信息。每個(gè)進(jìn)程的系統(tǒng)堆棧和task_struct數(shù)據(jù)結(jié)構(gòu)之間存在緊密聯(lián)系,因而二者物理存儲(chǔ)空間也連在一起系統(tǒng)堆棧的大小靜態(tài)確定,用戶堆棧可在運(yùn)行時(shí)動(dòng)態(tài)擴(kuò)展5.2.3對(duì)進(jìn)程的操作1.進(jìn)程的創(chuàng)

4、建各個(gè)進(jìn)程構(gòu)成了樹形的進(jìn)程族系內(nèi)核在引導(dǎo)并完成了基本的初始化以后,就有了系統(tǒng)的第一個(gè)進(jìn)程(即初始化進(jìn)程,實(shí)際上是內(nèi)核線程)。除此之外,所有其他的進(jìn)程和內(nèi)核線程都由這個(gè)原始進(jìn)程或其子孫進(jìn)程所創(chuàng)建。除初始化進(jìn)程外,其他進(jìn)程都是用系統(tǒng)調(diào)用fork()和clone()創(chuàng)建的。fork()是全部復(fù)制,而clone()有選擇地復(fù)制2.進(jìn)程的等待父進(jìn)程可用系統(tǒng)調(diào)用wait3()等待它的任一個(gè)子進(jìn)程終止,也可以用系統(tǒng)調(diào)用wait4()等待某個(gè)特定的子進(jìn)程終止。wait3()算法如下:(1)如果父進(jìn)程沒(méi)有子進(jìn)程,則出錯(cuò)返回。(2)如果發(fā)現(xiàn)有一個(gè)終止的子進(jìn)程,則取出子進(jìn)程的進(jìn)程號(hào),把子進(jìn)程的CPU使用時(shí)間等加到父

5、進(jìn)程上,釋放子進(jìn)程占用的task_struct和系統(tǒng)空間堆棧,以供新進(jìn)程使用。(3)如果發(fā)現(xiàn)有子進(jìn)程,但都不處于終止態(tài),則父進(jìn)程睡眠,等待由相應(yīng)的信號(hào)喚醒。3.進(jìn)程的終止進(jìn)程可使用系統(tǒng)調(diào)用exit()終止自己其實(shí)現(xiàn)算法如下:(1)撤消所有的信號(hào)量。(2)釋放其所有的資源,包括存儲(chǔ)空間、已打開(kāi)的文件、工作目錄、信號(hào)處理表等。(3)置進(jìn)程狀態(tài)為“終止態(tài)”(TASK_ZOMBIE)。(4)向它的父進(jìn)程發(fā)送子進(jìn)程終止的信號(hào)。(5)執(zhí)行進(jìn)程調(diào)度。4.進(jìn)程映像的更換改換進(jìn)程映像的工作很復(fù)雜,是由系統(tǒng)調(diào)用execve()實(shí)現(xiàn)的,它用一個(gè)可執(zhí)行文件的副本來(lái)覆蓋該進(jìn)程的內(nèi)存空間。ELF可執(zhí)行文件格式示意圖exe

6、cve()系統(tǒng)調(diào)用的基本算法如下:(1)驗(yàn)證文件的可執(zhí)行性,即用戶有權(quán)執(zhí)行它。(2)讀文件頭,檢查它是一個(gè)可裝入模塊。(3)釋放原有的內(nèi)存空間。(4)按照可執(zhí)行文件的要求分配新的內(nèi)存空間,并裝入內(nèi)存。5.2.4進(jìn)程調(diào)度進(jìn)程調(diào)度機(jī)制主要涉及到調(diào)度方式、調(diào)度時(shí)機(jī)和調(diào)度策略1.調(diào)度方式基本上采用“搶占式優(yōu)先級(jí)”方式2.調(diào)度策略——三種不同的調(diào)度策略SCHED_FIFO——短實(shí)時(shí)進(jìn)程,對(duì)時(shí)間性要求比較強(qiáng)SCHED_RR——較長(zhǎng)時(shí)間的實(shí)時(shí)進(jìn)程,對(duì)應(yīng)“時(shí)間片輪轉(zhuǎn)法”SCHED_OTHER——交互式的分時(shí)進(jìn)程,這類進(jìn)程的優(yōu)先權(quán)取決于兩個(gè)因素:一個(gè)因素是進(jìn)程剩余時(shí)間配額;另一個(gè)是進(jìn)程的優(yōu)先數(shù)nice——優(yōu)先數(shù)

7、越小,其優(yōu)先級(jí)越高后臺(tái)進(jìn)程的優(yōu)先級(jí)低于任何交互(前臺(tái))進(jìn)程的優(yōu)先級(jí)3.調(diào)度時(shí)機(jī)(1)當(dāng)前進(jìn)程調(diào)用系統(tǒng)調(diào)用nanosleep()或者pause(),使自己進(jìn)入睡眠狀態(tài),主動(dòng)讓出一段時(shí)間的CPU使用權(quán)。(2)進(jìn)程終止,永久地放棄對(duì)CPU的使用。(3)在時(shí)鐘中斷處理程序執(zhí)行過(guò)程中,發(fā)現(xiàn)當(dāng)前進(jìn)程連續(xù)運(yùn)行的時(shí)間過(guò)長(zhǎng)。(4)當(dāng)喚醒一個(gè)睡眠進(jìn)程時(shí),發(fā)現(xiàn)被喚醒的進(jìn)程比當(dāng)前進(jìn)程更有資格運(yùn)行。(5)一個(gè)進(jìn)程通過(guò)執(zhí)行系

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

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

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(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)系客服處理。