Linux操作系統(tǒng) (2)_第1頁
Linux操作系統(tǒng) (2)_第2頁
Linux操作系統(tǒng) (2)_第3頁
Linux操作系統(tǒng) (2)_第4頁
Linux操作系統(tǒng) (2)_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第8章章 操作系統(tǒng)實例二:操作系統(tǒng)實例二:Linux 教學目標:本章的重點:了解Linux操作系統(tǒng)的特點、進程通信和調(diào)度、三級頁式虛擬存儲器管理、VFS和ext2文件系統(tǒng)以及Linux的安全機制等內(nèi)容。 教學提示:Linux是可免費獲得的多用戶、多任務(wù)操作系統(tǒng),是可以自由使用的UNIX兼容產(chǎn)品,這就是學習Linux的主要原因。了解Linux操作系統(tǒng)的特點、核心技術(shù)和實現(xiàn)方法有助于該系統(tǒng)進一步的開發(fā)和應用。8.1 Linux概述概述 8.1.1 8.1.1 學習學習LinuxLinux操作系統(tǒng)的意義操作系統(tǒng)的意義8.1.2 Linux8.1.2 Linux系統(tǒng)的特點系統(tǒng)的特點8.1.3 Lin

2、ux 8.1.3 Linux 系統(tǒng)的發(fā)展系統(tǒng)的發(fā)展8.1.4 Linux8.1.4 Linux體系結(jié)構(gòu)體系結(jié)構(gòu) 8.1.5 Linux8.1.5 Linux的用戶界面的用戶界面 8.2 Linux的進程管理的進程管理 8.2.1 Linux8.2.1 Linux進程的組成進程的組成LinuxLinux系統(tǒng)中的進程都具有以下系統(tǒng)中的進程都具有以下4 4個要素。個要素。(1) (1) 有一個程序正文段供其執(zhí)行。有一個程序正文段供其執(zhí)行。(2) (2) 有進程專用的系統(tǒng)堆??臻g。有進程專用的系統(tǒng)堆棧空間。(3) (3) 有一個進程描述符,即在內(nèi)核中的一個有一個進程描述符,即在內(nèi)核中的一個task_s

3、tructtask_struct數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)。有了這個數(shù)據(jù)結(jié)構(gòu),進程才能成為內(nèi)核調(diào)度的一個基本單位,接受內(nèi)有了這個數(shù)據(jù)結(jié)構(gòu),進程才能成為內(nèi)核調(diào)度的一個基本單位,接受內(nèi)核的調(diào)度。同時,該結(jié)構(gòu)還記錄著進程所占用的各項資源。核的調(diào)度。同時,該結(jié)構(gòu)還記錄著進程所占用的各項資源。(4) (4) 有一個獨立的地址空間,即擁有專有的用戶空間和專用的用戶空有一個獨立的地址空間,即擁有專有的用戶空間和專用的用戶空間堆棧。間堆棧。 8.2.2 Linux進程的狀態(tài)進程的狀態(tài) LinuxLinux的進程狀態(tài)共有的進程狀態(tài)共有6 6種。種。 (1) TASK_RUNNING (1) TASK_RUNNING:正

4、在運行:正在運行( (己獲得己獲得CPU)CPU)或準備運行或準備運行( (就緒態(tài)就緒態(tài)等待獲得等待獲得CPU)CPU)的進程。的進程。 (2) TASK_INTERRUPTIBLE (2) TASK_INTERRUPTIBLE:可中斷等待狀態(tài)。進程處于等待隊列中,一旦資:可中斷等待狀態(tài)。進程處于等待隊列中,一旦資源可用時被喚醒,也可以由其他進程通過信號源可用時被喚醒,也可以由其他進程通過信號(SIGNAL)(SIGNAL)或中斷喚醒。或中斷喚醒。 (3) TASK_UNINTERRUPTIBLE (3) TASK_UNINTERRUPTIBLE:不可中斷等待狀態(tài)。進程處于等待隊列中,一:不可

5、中斷等待狀態(tài)。進程處于等待隊列中,一旦資源可用時被喚醒,但不可以由其他進程通過信號旦資源可用時被喚醒,但不可以由其他進程通過信號(SIGNAL)(SIGNAL)或中斷喚醒?;蛑袛鄦拘?。 (4) TASK_ZOMBIE (4) TASK_ZOMBIE:進程僵死狀態(tài)。進程停止運行但是尚未釋放:進程僵死狀態(tài)。進程停止運行但是尚未釋放PCBPCB。 (5) TASK_STOPPED (5) TASK_STOPPED:進程停止狀態(tài)。可能被特定信號終止,也可能是受其他:進程停止狀態(tài)??赡鼙惶囟ㄐ盘柦K止,也可能是受其他進程的跟蹤調(diào)用而暫時將進程的跟蹤調(diào)用而暫時將CPUCPU出讓給跟蹤它的進程。出讓給跟蹤它的

6、進程。 (6) TASK_S (6) TASK_S:頁面被交換出內(nèi)存的進程。:頁面被交換出內(nèi)存的進程。 8.2.3 8.2.3 進程狀態(tài)的切換時機進程狀態(tài)的切換時機第一類是隱式地主動放棄第一類是隱式地主動放棄CPUCPU。這往往是因為需。這往往是因為需要的資源目前不能獲取,如執(zhí)行要的資源目前不能獲取,如執(zhí)行read()read()、selec()selec()等系統(tǒng)調(diào)用的過程中。等系統(tǒng)調(diào)用的過程中。 第二類是進程顯式地主動放棄第二類是進程顯式地主動放棄CPUCPU,如系統(tǒng)調(diào)用,如系統(tǒng)調(diào)用sched_yield()sched_yield()、sched_setscheduler()sched_s

7、etscheduler()及及pause()pause()均會導致當前進程讓出均會導致當前進程讓出CPUCPU。 8.2.4 Linux8.2.4 Linux的進程控制的進程控制 進程的創(chuàng)建進程的創(chuàng)建 LinuxLinux操作系統(tǒng)中,除初始化進程外,操作系統(tǒng)中,除初始化進程外,其他進程都是用系統(tǒng)調(diào)用其他進程都是用系統(tǒng)調(diào)用fork()fork()和和clone()clone()創(chuàng)建的,調(diào)用創(chuàng)建的,調(diào)用fork()fork()和和clone()clone()的進程是父的進程是父進程,被生成的進程是子進程。進程,被生成的進程是子進程。 2. 2. 進程的等待進程的等待 父進程可用系統(tǒng)調(diào)用父進程可用系

8、統(tǒng)調(diào)用wait3()wait3()等待它的任等待它的任何一個子進程終止,也可以用系統(tǒng)調(diào)用何一個子進程終止,也可以用系統(tǒng)調(diào)用wait4()wait4()等待某個特定的子進程終止。等待某個特定的子進程終止。 3. 3. 進程的終止進程的終止 當命令執(zhí)行完,希望終止自己時,可在其當命令執(zhí)行完,希望終止自己時,可在其程序末尾使用系統(tǒng)調(diào)用程序末尾使用系統(tǒng)調(diào)用exit()exit()。 4. 4. 進程上下文切換進程上下文切換 改變進程上下文的工作很復雜,是由系統(tǒng)改變進程上下文的工作很復雜,是由系統(tǒng)調(diào)用調(diào)用execve()execve()實現(xiàn)的。它用一個可執(zhí)行文件實現(xiàn)的。它用一個可執(zhí)行文件的副本覆蓋該進程

9、的內(nèi)存空間。的副本覆蓋該進程的內(nèi)存空間。 8.2.5 Linux 8.2.5 Linux 線程線程 LinuxLinux并不確切區(qū)分進程與線程,或者說并不確切區(qū)分進程與線程,或者說沒有真正意義上的線程概念,但通過沒有真正意義上的線程概念,但通過clone()clone()系 統(tǒng) 調(diào) 用 , 可 以 支 持 輕 量 級 進 程系 統(tǒng) 調(diào) 用 , 可 以 支 持 輕 量 級 進 程(Lightweight Process)(Lightweight Process)。 8.2.6 PCB(8.2.6 PCB(進程控制塊進程控制塊) ) L i n u x L i n u x 內(nèi) 核 利 用 一 個

10、數(shù) 據(jù) 結(jié) 構(gòu)內(nèi) 核 利 用 一 個 數(shù) 據(jù) 結(jié) 構(gòu)(task_struct)(task_struct)標志一個進程的存在。標志一個進程的存在。task_structtask_struct也就是也就是LinuxLinux進程控制塊進程控制塊PCB PCB 8.2.7 8.2.7 進程的調(diào)度進程的調(diào)度 LinuxLinux中實現(xiàn)了中實現(xiàn)了3 3種進程調(diào)度策略。種進程調(diào)度策略。 SCHED_FIFOSCHED_FIFO:先進先出:先進先出(First In First Out)(First In First Out)策略。策略。 SCHED_RRSCHED_RR:輪轉(zhuǎn)調(diào)度:輪轉(zhuǎn)調(diào)度(RoundRo

11、bin)(RoundRobin)策略。策略。 SCHED_OTHERSCHED_OTHER:其他策略。:其他策略。 8. 8.2.8 Linux8. 8.2.8 Linux進程通信進程通信 信號是信號是UNIXUNIX系統(tǒng)中最古老的進程間通信機系統(tǒng)中最古老的進程間通信機制,它主要用來向進程發(fā)送異步的事件信號。制,它主要用來向進程發(fā)送異步的事件信號。 LinuxLinux中,信號種類的數(shù)目和具體的平臺中,信號種類的數(shù)目和具體的平臺有關(guān),因為內(nèi)核用一個字代表所有的信號,有關(guān),因為內(nèi)核用一個字代表所有的信號,因此字的位數(shù)就是信號種類的最多數(shù)目。對因此字的位數(shù)就是信號種類的最多數(shù)目。對3232位的位的

12、i386i386平臺而言,一個字為平臺而言,一個字為3232位,因此位,因此信號有信號有3232。 8.2.9 8.2.9 信號量與信號量與PVPV操作操作 信號量也用來保護關(guān)鍵代碼或數(shù)據(jù)結(jié)構(gòu)信號量也用來保護關(guān)鍵代碼或數(shù)據(jù)結(jié)構(gòu)( (即臨界資源即臨界資源) )。 LinuxLinux利用信號量實現(xiàn)對關(guān)鍵代碼和數(shù)據(jù)的互斥訪問。利用信號量實現(xiàn)對關(guān)鍵代碼和數(shù)據(jù)的互斥訪問。 LinuxLinux信號量數(shù)據(jù)結(jié)構(gòu)中包含的信息主要有。信號量數(shù)據(jù)結(jié)構(gòu)中包含的信息主要有。 count(count(計數(shù)計數(shù)) ) waking( waking(等待喚醒計數(shù)等待喚醒計數(shù)) ) 3) 3) 等待隊列等待隊列4) loc

13、k(4) lock(鎖鎖) ) 8.2.10 8.2.10 管道管道 管道是管道是LinuxLinux中最常用的進程間通信中最常用的進程間通信IPCIPC機機制。利用管道時,一個進程的輸出可成為另制。利用管道時,一個進程的輸出可成為另外一個進程的輸入。當輸入輸出的數(shù)據(jù)量特外一個進程的輸入。當輸入輸出的數(shù)據(jù)量特別大時,這種別大時,這種IPCIPC機制非常有用。機制非常有用。 8.2.11 8.2.11 共享存儲區(qū)與消息隊列通信機制共享存儲區(qū)與消息隊列通信機制 1. Linux1. Linux進程間的共享存儲區(qū)通信進程間的共享存儲區(qū)通信 2. Linux2. Linux進程間的消息隊列進行通信進程

14、間的消息隊列進行通信 LinuxLinux進程間的通信也可以通過消息隊列進程間的通信也可以通過消息隊列進行。消息隊列可以是單消息隊列,也可以進行。消息隊列可以是單消息隊列,也可以是多消息隊列是多消息隊列( (按消息類型按消息類型) );既可以單向,;既可以單向,也可以雙向通信;既可以僅和兩個進程有關(guān),也可以雙向通信;既可以僅和兩個進程有關(guān),也可以被多個進程使用。也可以被多個進程使用。 8.3.1 Linux8.3.1 Linux的虛擬內(nèi)存管理的虛擬內(nèi)存管理 LinuxLinux的虛擬內(nèi)存管理功能可以概括為以的虛擬內(nèi)存管理功能可以概括為以下幾點。下幾點。(1) (1) 地址空間擴充。地址空間擴充

15、。(2) (2) 進程保護。進程保護。(3) (3) 內(nèi)存映射。內(nèi)存映射。(4) (4) 物理內(nèi)存分配。物理內(nèi)存分配。 8.3 Linux 存儲器管理存儲器管理 8.3.2 Linux8.3.2 Linux系統(tǒng)采用三級頁表系統(tǒng)采用三級頁表 PGD表 項 下 標PMD表 項 下 標PT下 標頁 內(nèi) 偏 移 量物 理 地 址PGD基 地 址8.3.3 8.3.3 內(nèi)存頁的分配與釋放內(nèi)存頁的分配與釋放 LinuxLinux系統(tǒng)的物理內(nèi)存頁分配采用鏈表和系統(tǒng)的物理內(nèi)存頁分配采用鏈表和位圖相結(jié)合的方法。位圖相結(jié)合的方法。 8.3.4 8.3.4 內(nèi)存交換內(nèi)存交換 當系統(tǒng)出現(xiàn)內(nèi)存不足時,當系統(tǒng)出現(xiàn)內(nèi)存不足

16、時,LinuxLinux內(nèi)存管理內(nèi)存管理子系統(tǒng)就要釋放一些內(nèi)存頁,從而增加系統(tǒng)子系統(tǒng)就要釋放一些內(nèi)存頁,從而增加系統(tǒng)中空閑內(nèi)存頁的數(shù)量。此任務(wù)是由內(nèi)核的交中空閑內(nèi)存頁的數(shù)量。此任務(wù)是由內(nèi)核的交換守護進程換守護進程kswapdkswapd完成的。完成的。 8.3.5 8.3.5 內(nèi)存的共享和保護內(nèi)存的共享和保護 LinuxLinux中內(nèi)存共享是以頁共享的方式實現(xiàn)的中內(nèi)存共享是以頁共享的方式實現(xiàn)的LinuxLinux可以對虛存段中的任一部分加鎖或保護??梢詫μ摯娑沃械娜我徊糠旨渔i或保護。 8.3.6 8.3.6 缺頁中斷缺頁中斷 磁盤中的可執(zhí)行文件映像一旦被映射到一磁盤中的可執(zhí)行文件映像一旦被映射

17、到一個進程的虛擬空間,它就開始執(zhí)行。由于一個進程的虛擬空間,它就開始執(zhí)行。由于一開始只有該映像區(qū)的開始部分被調(diào)入內(nèi)存,開始只有該映像區(qū)的開始部分被調(diào)入內(nèi)存,因此,進程遲早會執(zhí)行那些未被裝入內(nèi)存的因此,進程遲早會執(zhí)行那些未被裝入內(nèi)存的部分。當一個進程訪問了一個還沒有有效頁部分。當一個進程訪問了一個還沒有有效頁表項的虛擬地址時,處理器將產(chǎn)生缺頁中斷,表項的虛擬地址時,處理器將產(chǎn)生缺頁中斷,通知操作系統(tǒng),并把缺頁的虛擬地址通知操作系統(tǒng),并把缺頁的虛擬地址( (保存保存在在CR2CR2寄存器中寄存器中) )和缺頁時訪問虛存的模式一和缺頁時訪問虛存的模式一并傳給并傳給LinuxLinux的缺頁中斷處理程

18、序。的缺頁中斷處理程序。 8.4 Linux文件管理文件管理 8.4.1 Linux8.4.1 Linux文件系統(tǒng)的目錄結(jié)構(gòu)文件系統(tǒng)的目錄結(jié)構(gòu) LinuxLinux采用的是樹型目錄結(jié)構(gòu)管理文件。最采用的是樹型目錄結(jié)構(gòu)管理文件。最上層是根目錄,其他的所有目錄都是從根目錄上層是根目錄,其他的所有目錄都是從根目錄出發(fā)而生成的。出發(fā)而生成的。 8.4.2 Linux8.4.2 Linux文件系統(tǒng)的實現(xiàn)文件系統(tǒng)的實現(xiàn) LinuxLinux支持多種不同類型的文件系統(tǒng),包括支持多種不同類型的文件系統(tǒng),包括EXTEXT、EXT2EXT2、MINIXMINIX、UMSDOSUMSDOS、NCPNCP、IS096

19、60IS09660、HPFSHPFS、MSDOSMSDOS、NTFSNTFS、XIAXIA、VFATVFAT、PROCPROC、NFSNFS、SMBSMB、SYSVSYSV、AFFSAFFS以及以及UFSUFS等。等。由于每一種文件系統(tǒng)都有自己的組織結(jié)構(gòu)和文件操作函由于每一種文件系統(tǒng)都有自己的組織結(jié)構(gòu)和文件操作函數(shù),并且相互之間的差別很大,數(shù),并且相互之間的差別很大,LinuxLinux文件系統(tǒng)的實現(xiàn)有文件系統(tǒng)的實現(xiàn)有一定的難度。為支持上述的各種文件系統(tǒng),一定的難度。為支持上述的各種文件系統(tǒng),LinuxLinux在實現(xiàn)在實現(xiàn)文件系統(tǒng)時采用了兩層結(jié)構(gòu)。第一層是虛擬文件系統(tǒng)文件系統(tǒng)時采用了兩層結(jié)構(gòu)

20、。第一層是虛擬文件系統(tǒng)(Virtual (Virtual ,VFS)VFS),它把各種實際文件系統(tǒng)的公共結(jié)構(gòu)抽,它把各種實際文件系統(tǒng)的公共結(jié)構(gòu)抽象出來,建立統(tǒng)一的以象出來,建立統(tǒng)一的以i_nodei_node為中心的組織結(jié)構(gòu),為實為中心的組織結(jié)構(gòu),為實際文件系統(tǒng)提供兼容性。它的作用是屏蔽各類文件系統(tǒng)際文件系統(tǒng)提供兼容性。它的作用是屏蔽各類文件系統(tǒng)的差異,給用戶、應用程序和的差異,給用戶、應用程序和LinuxLinux的其他管理模塊提供的其他管理模塊提供統(tǒng)一的接口。第二層是統(tǒng)一的接口。第二層是LinuxLinux支持的各種實際文件系統(tǒng)。支持的各種實際文件系統(tǒng)。 8.4.3 8.4.3 虛擬文件系

21、統(tǒng)虛擬文件系統(tǒng) 虛擬文件系統(tǒng)虛擬文件系統(tǒng)(VFS)(VFS)是物理文件系統(tǒng)與服是物理文件系統(tǒng)與服務(wù)之間的一個接口層,它對每一個具體的文務(wù)之間的一個接口層,它對每一個具體的文件系統(tǒng)的所有細節(jié)進行抽象,使得件系統(tǒng)的所有細節(jié)進行抽象,使得LinuxLinux用用戶能夠用同一個接口使用不同的文件系統(tǒng)。戶能夠用同一個接口使用不同的文件系統(tǒng)。 8.4.4 EXT28.4.4 EXT2文件系統(tǒng)文件系統(tǒng) 擴展文件系統(tǒng)擴展文件系統(tǒng)EXTEXT和第二代擴展文件系統(tǒng)和第二代擴展文件系統(tǒng)EXT2EXT2是專門為是專門為LinuxLinux設(shè)計可擴展的文件系統(tǒng)。設(shè)計可擴展的文件系統(tǒng)。 8.4.5 Linux8.4.5 Linux的文件操作系統(tǒng)調(diào)用的文件操作系統(tǒng)調(diào)用 1. 1. 文件的打開文件的打開 主要函數(shù)有主要函數(shù)有sys_

溫馨提示

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

評論

0/150

提交評論