《liunx操作系統(tǒng)》課件15Linux內(nèi)核簡介-內(nèi)存管理及進(jìn)程通信_(tái)第1頁
《liunx操作系統(tǒng)》課件15Linux內(nèi)核簡介-內(nèi)存管理及進(jìn)程通信_(tái)第2頁
《liunx操作系統(tǒng)》課件15Linux內(nèi)核簡介-內(nèi)存管理及進(jìn)程通信_(tái)第3頁
《liunx操作系統(tǒng)》課件15Linux內(nèi)核簡介-內(nèi)存管理及進(jìn)程通信_(tái)第4頁
《liunx操作系統(tǒng)》課件15Linux內(nèi)核簡介-內(nèi)存管理及進(jìn)程通信_(tái)第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、內(nèi)存管理請(qǐng)求分頁內(nèi)存管理使得應(yīng)用程序認(rèn)為它擁有連續(xù)的可用的內(nèi)存(一個(gè)連續(xù)完整的地址空間)實(shí)際上它通常是被分隔成多個(gè)物理內(nèi)存碎片,還有部分暫時(shí)存儲(chǔ)在外部磁盤存儲(chǔ)器上(充當(dāng)內(nèi)存的磁盤空間即交換空間,swap),在需要時(shí)進(jìn)行數(shù)據(jù)交換,允許運(yùn)行比實(shí)際系統(tǒng)擁有的內(nèi)存大得多的程序請(qǐng)求分頁內(nèi)存管理示意圖物理內(nèi)存空間管理Linux物理內(nèi)存空間分成兩個(gè)區(qū)域內(nèi)核區(qū):存放內(nèi)核代碼和數(shù)據(jù),以及內(nèi)核管理進(jìn)程的數(shù)據(jù)結(jié)構(gòu),在低地址區(qū)動(dòng)態(tài)RMA區(qū):存放各個(gè)用戶進(jìn)程的代碼、數(shù)據(jù)等,在高地址區(qū)進(jìn)程用戶地址空間Linux系統(tǒng)中的進(jìn)程具有一段可執(zhí)行的程序(文本區(qū)域,只讀數(shù)據(jù))獨(dú)立的存儲(chǔ)空間(數(shù)據(jù)區(qū)域,靜態(tài)變量)專用的系統(tǒng)堆棧空間(堆

2、棧區(qū)域,動(dòng)態(tài)變量及函數(shù)傳遞)私有的進(jìn)程控制塊(task_struct數(shù)據(jù)結(jié)構(gòu))空閑物理頁面管理Buddy算法:以多個(gè)頁面為單位管理和分配空閑區(qū)域算法把物理內(nèi)存中的所有頁面按照2的整數(shù)次冪(1,2,4,8,16,32)進(jìn)行劃分,形成大小不同的存儲(chǔ)塊,成為頁面塊包含一個(gè)頁面的塊為1頁塊,包含兩個(gè)頁面的塊位2頁塊,將每種頁塊按照先后順序兩兩結(jié)合成一對(duì)對(duì)的buddy伙伴對(duì)空閑區(qū)域的管理按照頁塊大小分組進(jìn)行管理空閑物理頁面管理位圖法和空閑頁塊組鏈表Linux對(duì)內(nèi)存頁面塊的每種劃分都對(duì)應(yīng)一個(gè)位圖map,位圖中每一位代表一對(duì)buddy頁塊的使用情況:1對(duì)都空閑或被占用,該位為0;一組空閑而另一組被占用,位為

3、1系統(tǒng)按照buddy關(guān)系把具有相同大小的空閑頁面塊組成空閑頁面塊,每一個(gè)空閑頁面塊組用一個(gè)雙向循環(huán)鏈表進(jìn)行管理空閑物理頁面管理系統(tǒng)請(qǐng)求3個(gè)頁面頁面13被釋放內(nèi)存交換當(dāng)系統(tǒng)出現(xiàn)內(nèi)存不足時(shí),Linux內(nèi)存管理系統(tǒng)需要釋放內(nèi)存頁,由內(nèi)核的守護(hù)交換進(jìn)程kswapd工作增加系統(tǒng)中空閑內(nèi)存頁的數(shù)量,當(dāng)系統(tǒng)啟動(dòng)時(shí),交換守護(hù)進(jìn)程由內(nèi)核的init進(jìn)程啟動(dòng),初始化操作后進(jìn)入無限循環(huán),在每次循環(huán)末尾進(jìn)入睡眠,在一定時(shí)間后被喚醒并調(diào)度運(yùn)行kswapd發(fā)現(xiàn)可用內(nèi)存頁面短缺,找出不常用的內(nèi)存頁面,從活躍變成不活躍把已經(jīng)處于不活躍狀態(tài)的臟頁面寫入交換設(shè)備,成為不活躍干凈頁面內(nèi)存交換系統(tǒng)中設(shè)置了上限值和下限值,如果空閑內(nèi)存頁

4、數(shù)量大于上限值,交換守護(hù)進(jìn)程不做任何事情如果空閑頁數(shù)量低于上限值,交換進(jìn)程減少系統(tǒng)正在使用的頁面數(shù)減少緩沖區(qū)和頁高速緩存的大小,釋放頁面成為空閑頁System V的共享內(nèi)存頁交換到交換文件,釋放物理內(nèi)存將頁面換出物理內(nèi)存進(jìn)程通信系統(tǒng)進(jìn)程與系統(tǒng)內(nèi)核之間,各個(gè)進(jìn)程之間通過內(nèi)核進(jìn)行信息交換,相互通信,協(xié)調(diào)彼此間的活動(dòng)內(nèi)核中開辟一塊緩沖區(qū),進(jìn)程1把數(shù)據(jù)從用戶空間拷到內(nèi)核緩沖區(qū),進(jìn)程2再從內(nèi)核緩沖區(qū)把數(shù)據(jù)讀走進(jìn)程通信數(shù)據(jù)傳輸:一個(gè)進(jìn)程需要將它的數(shù)據(jù)發(fā)送給另一個(gè)進(jìn)程共享數(shù)據(jù):多個(gè)進(jìn)程想要操作共享數(shù)據(jù)通知事件:一個(gè)進(jìn)程需要向另一個(gè)或一組進(jìn)程發(fā)送消息資源共享:多個(gè)進(jìn)程之間共享同樣的資源進(jìn)程控制:控制進(jìn)程希望能

5、夠攔截另一個(gè)進(jìn)程的所有陷入和異常,并能夠及時(shí)知道它的狀態(tài)改變進(jìn)程通信linux下的進(jìn)程通信手段基本上是從Unix平臺(tái)上的進(jìn)程通信手段繼承而來的AT&T對(duì)Unix早期的進(jìn)程間通信手段進(jìn)行了系統(tǒng)的改進(jìn)和擴(kuò)充,形成了“system V IPC”,通信進(jìn)程局限在單個(gè)計(jì)算機(jī)內(nèi)BSD跳出了單機(jī)限制,形成了基于套接口(socket)的進(jìn)程間通信機(jī)制進(jìn)程通信PSOIX可移植性操作系統(tǒng)接口(Portable Operating System Interface)POSIX標(biāo)準(zhǔn)定義了操作系統(tǒng)應(yīng)該為應(yīng)用程序提供的標(biāo)準(zhǔn)接口,期望獲得軟件可移植性,不局限于UNIX為一個(gè)POSIX兼容的操作系統(tǒng)編寫的程序,應(yīng)該在任何其它

6、的POSIX操作系統(tǒng)上編譯執(zhí)行Linux進(jìn)程通信管道信號(hào)消息隊(duì)列共享內(nèi)存信號(hào)量套接字進(jìn)程通信同主機(jī)進(jìn)程間數(shù)據(jù)交互機(jī)制:無名管道(PIPE)、有名管道(FIFO)、消息隊(duì)列(Message Queue)和共享內(nèi)存(Share Memory)同主機(jī)進(jìn)程間同步機(jī)制:信號(hào)量(semaphore)同主機(jī)進(jìn)程間異步機(jī)制:信號(hào)(Signal)網(wǎng)絡(luò)主機(jī)間數(shù)據(jù)交互機(jī)制:套接字(Socket)管道通信管道是一種特殊的文件,一種最基本的進(jìn)程通信機(jī)制,首創(chuàng)于UNIX系統(tǒng),是一個(gè)固定1個(gè)頁面大小的緩沖區(qū)它以字符流形式發(fā)送大量數(shù)據(jù),連接一個(gè)讀進(jìn)程和一個(gè)寫進(jìn)程,將兩個(gè)進(jìn)程指向同一個(gè)臨時(shí)的索引節(jié)點(diǎn),而這個(gè)索引節(jié)點(diǎn)指向一個(gè)物理

7、頁面,以實(shí)現(xiàn)進(jìn)程間通信的共享文件管道通信管道通信機(jī)制管道通信機(jī)制提供以下三方面的協(xié)調(diào)能力:只有確定對(duì)方已存在時(shí),方能進(jìn)行通信當(dāng)一個(gè)進(jìn)程正在對(duì)pipe進(jìn)行讀/寫操作時(shí),另一個(gè)進(jìn)程必須等待當(dāng)寫(輸入)進(jìn)程把一定數(shù)量數(shù)據(jù)寫入pipe后,便去睡眠等待,直到讀(輸出)進(jìn)程取走數(shù)據(jù)后,再把它喚醒;當(dāng)讀進(jìn)程讀到一空pipe時(shí),也應(yīng)睡眠等待,直至寫進(jìn)程將數(shù)據(jù)寫入管道后,才將它喚醒無名管道與命名管道無名管道文件管道文件不屬于用戶直接命名的普通文件,是由系統(tǒng)調(diào)用創(chuàng)建的允許兩個(gè)進(jìn)程按“先入先出(FIFO)”方式傳遞數(shù)據(jù),但數(shù)據(jù)只能向一個(gè)方向流動(dòng)每個(gè)管道只有一個(gè)內(nèi)存頁面做緩沖區(qū),按環(huán)形緩沖區(qū)方式使用命名管道FIFO

8、(First in, First out)為一種特殊的文件類型,它在文件系統(tǒng)中有對(duì)應(yīng)的路徑當(dāng)一個(gè)進(jìn)程以讀(r)的方式打開該文件,而另一個(gè)進(jìn)程以寫(w)的方式打開該文件,那么內(nèi)核就會(huì)在這兩個(gè)進(jìn)程之間建立管道FIFO由內(nèi)核管理,不與硬盤打交道命名管道管道本質(zhì)上是一個(gè)先進(jìn)先出的隊(duì)列數(shù)據(jù)結(jié)構(gòu),最早放入的數(shù)據(jù)被最先讀出來保證信息交流的順序當(dāng)刪除FIFO文件時(shí),管道連接也隨之消失可以通過文件的路徑來識(shí)別管道,從而讓沒有親緣關(guān)系的進(jìn)程之間建立連接命名管道FIFO允許無親緣關(guān)系進(jìn)程間的通信FIFO提供一個(gè)路徑名與它創(chuàng)建的管道文件關(guān)聯(lián),即使與FIFO的創(chuàng)建進(jìn)程不存在親緣關(guān)系的進(jìn)程,只要可以訪問該路徑,就能夠彼此

9、通過FIFO相互通信文件操作方式基于“先進(jìn)先出”原理,嚴(yán)格遵循先進(jìn)先出(first in first out),讀總是從開始處返回?cái)?shù)據(jù),寫則把數(shù)據(jù)添加到末尾命名管道shell命令示例打開兩個(gè)終端,登錄同一個(gè)賬號(hào)建立命名管道:mkfifo m 755 namedpipe在tty1上輸入命令:cat namedpipe在tty2上輸入命令:echo “the fifo test” namedpipe中斷CPU對(duì)系統(tǒng)發(fā)生的某個(gè)事件做出的一種反應(yīng)CPU暫停正在執(zhí)行的程序,保留現(xiàn)場(chǎng)后,自動(dòng)的轉(zhuǎn)去執(zhí)行相應(yīng)的處理程序,處理完后,在返回?cái)帱c(diǎn)繼續(xù)執(zhí)行被“打斷”程序中斷處理分為中斷響應(yīng)和中斷處理兩步,中斷響應(yīng)由硬

10、件實(shí)施,中斷處理由軟件實(shí)施中斷分類由CPU外部引起的稱為中斷,如I/O中斷、時(shí)鐘中斷、控制臺(tái)中斷來自CPU內(nèi)部事件或程序執(zhí)行中的時(shí)間引起的過程,稱為異常,如CPU本身故障、程序故障由于在程序中使用了請(qǐng)求系統(tǒng)服務(wù)的系統(tǒng)調(diào)用而引發(fā)的過程,稱為陷入(trap)系統(tǒng)調(diào)用系統(tǒng)調(diào)用可以像普通C語言函數(shù)出現(xiàn)在C語言程序中系統(tǒng)調(diào)用把能進(jìn)程的狀態(tài)從用戶態(tài)變成核心態(tài)每個(gè)系統(tǒng)調(diào)用都有唯一的系統(tǒng)調(diào)用號(hào)所有的系統(tǒng)調(diào)用都集中在系統(tǒng)調(diào)用入口表中進(jìn)行統(tǒng)一管理信號(hào)機(jī)制信號(hào)也稱軟中斷,是在軟件層次上對(duì)中斷機(jī)制的一種模擬異步進(jìn)程可以通過彼此發(fā)送信號(hào)實(shí)現(xiàn)簡單通信系統(tǒng)預(yù)先規(guī)定若干不同類型的信號(hào),表示發(fā)生了不同的事件,每個(gè)信號(hào)對(duì)應(yīng)一個(gè)編號(hào)信號(hào)只是用來通知某進(jìn)程發(fā)生了什么事件,并不給該進(jìn)程傳遞任何數(shù)據(jù)信號(hào)機(jī)制進(jìn)程彼此間可用系統(tǒng)提供的系統(tǒng)調(diào)用發(fā)送信號(hào) 普通進(jìn)程只能向具有相同uid和gid的進(jìn)程發(fā)送信號(hào)或向相同進(jìn)程組中的其他進(jìn)程發(fā)送信號(hào) 進(jìn)程接到信號(hào)后,在退出內(nèi)核空間前做相應(yīng)處理系統(tǒng)內(nèi)核對(duì)除用戶自定義之外的信號(hào)都規(guī)定了相應(yīng)的處理程序,在默認(rèn)情況下信號(hào)由內(nèi)核處理,執(zhí)行內(nèi)核預(yù)定的處理程序信號(hào)機(jī)制信號(hào)的分類、產(chǎn)生和傳送對(duì)各種信號(hào)預(yù)先規(guī)定處理方式信號(hào)的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論