版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第8章Linux內(nèi)核簡介1進(jìn)程是現(xiàn)代操作系統(tǒng)的核心概念,它用來描述程序的執(zhí)行過程,是實現(xiàn)多任務(wù)操作系統(tǒng)的基礎(chǔ)。操作系統(tǒng)的其他所有內(nèi)容都是圍繞著進(jìn)程展開的。因此,正確地理解和認(rèn)識進(jìn)程是理解操作系統(tǒng)原理的基礎(chǔ)和關(guān)鍵。28.1進(jìn)程管理8.1.1程序的順序執(zhí)行與并發(fā)執(zhí)行1.程序的順序執(zhí)行 程序的各操作步驟之間是依序執(zhí)行的,程序與程序之間是串行執(zhí)行的(1)順序性(2)封閉性(3)可再現(xiàn)性38.1進(jìn)程管理8.1.1程序的順序執(zhí)行與并發(fā)執(zhí)行2.程序的并發(fā)執(zhí)行 若干程序或程序段同時運行。它們的執(zhí)行在時間上是重疊的。(1)間斷性(2)沒有封閉性(3)不可再現(xiàn)性48.1進(jìn)程管理8.1.1程序的順序執(zhí)行與并發(fā)執(zhí)行3.并發(fā)執(zhí)行的潛在問題 程序在并發(fā)執(zhí)行時會導(dǎo)致執(zhí)行結(jié)果的不可再現(xiàn)性,這是多道程序系統(tǒng)必須解決的問題。58.1進(jìn)程管理設(shè)某停車場使用程序控制電子公告牌來顯示空閑車位數(shù)??臻e車位數(shù)用一個計數(shù)器C記錄。車輛入庫時執(zhí)行程序A,車輛出庫時執(zhí)行程序B,它們都要更新同一個計數(shù)器C。并發(fā)執(zhí)行示例如果兩個程序的運行時序如表所示,即一個程序?qū)進(jìn)行更新的操作是在另一個程序的更新操作全部完成之后才開始,則C被正確地更新了。時間T0T1T2T3T4T5程序AC
NN-1N
C
程序B
C
MM+1M
CC的值100100999999100并發(fā)執(zhí)行示例如果兩個程序的運行時序如表所示穿插地進(jìn)行,即當(dāng)一個程序正在更新C,更新操作還未完成時,CPU發(fā)生了切換,另一個程序被調(diào)度運行,并且也對C進(jìn)行更新。時間T0T1T2T3T4T5程序AC
N
N-1N
C
程序B
C
MM+1
M
CC的值10010010010099101并發(fā)執(zhí)行示例8.1.2進(jìn)程的概念1.進(jìn)程進(jìn)程是一個可并發(fā)執(zhí)行的程序在一個數(shù)據(jù)集上的一次運行程序是進(jìn)程的組成部分,是進(jìn)程的執(zhí)行文本,而進(jìn)程是程序的執(zhí)行過程程序是靜態(tài)的指令集合,可以永久存在;而進(jìn)程是動態(tài)的過程實體,動態(tài)地產(chǎn)生、發(fā)展和消失98.1進(jìn)程管理8.1.2進(jìn)程的概念2.進(jìn)程的特性(1)動態(tài)性(2)并發(fā)性(3)獨立性(4)異步性108.1進(jìn)程管理8.1.2進(jìn)程的概念3.進(jìn)程的基本狀態(tài)(1)就緒態(tài)(2)運行態(tài)(3)等待態(tài)118.1進(jìn)程管理8.1.2進(jìn)程的概念3.進(jìn)程狀態(tài)的轉(zhuǎn)換128.1進(jìn)程管理8.1.3進(jìn)程控制塊進(jìn)程由程序、數(shù)據(jù)和進(jìn)程控制塊3個基本部分組成:程序是進(jìn)程執(zhí)行的可執(zhí)行代碼數(shù)據(jù)是進(jìn)程所處理的對象進(jìn)程控制塊用于記錄有關(guān)進(jìn)程的各種信息。138.1進(jìn)程管理8.1.3進(jìn)程控制塊進(jìn)程控制塊(PCB)是為管理進(jìn)程而設(shè)置的一個數(shù)據(jù)結(jié)構(gòu),用于記錄進(jìn)程的相關(guān)信息:(1)進(jìn)程描述信息(2)進(jìn)程控制與調(diào)度信息(3)資源信息(4)現(xiàn)場信息148.1進(jìn)程管理8.1.4Linux系統(tǒng)中的進(jìn)程1.Linux進(jìn)程的狀態(tài)158.1進(jìn)程管理8.1.4Linux系統(tǒng)中的進(jìn)程Linux進(jìn)程的基本狀態(tài)(1)可執(zhí)行態(tài)(2)睡眠態(tài)(3)暫停態(tài)(4)僵死態(tài)168.1進(jìn)程管理8.1.4Linux系統(tǒng)中的進(jìn)程2.Linux進(jìn)程的狀態(tài)轉(zhuǎn)換過程新創(chuàng)建的進(jìn)程處于可執(zhí)行的就緒態(tài),等待調(diào)度執(zhí)行處于可執(zhí)行態(tài)的進(jìn)程在就緒態(tài)和運行態(tài)之間輪回運行態(tài)、睡眠態(tài)和就緒態(tài)形成一個回路運行態(tài)、暫停態(tài)和就緒態(tài)也構(gòu)成一個回路處于運行態(tài)的進(jìn)程執(zhí)行結(jié)束后進(jìn)入僵死態(tài)178.1進(jìn)程管理8.1.4Linux系統(tǒng)中的進(jìn)程3.Linux的進(jìn)程描述符Linux系統(tǒng)用task_struct結(jié)構(gòu)來記錄進(jìn)程的信息進(jìn)程標(biāo)識號(pid):標(biāo)識該進(jìn)程的一個整數(shù)歸屬關(guān)系(uid、gid):進(jìn)程的屬主和屬組的標(biāo)識號家族關(guān)系(parent、children、sibling):關(guān)聯(lián)父進(jìn)程、子進(jìn)程及兄弟進(jìn)程的鏈接指針鏈接指針(tasks、run_list):將進(jìn)程鏈入進(jìn)程鏈表和可執(zhí)行隊列的指針狀態(tài)(state):進(jìn)程當(dāng)前的狀態(tài)。188.1進(jìn)程管理調(diào)度信息(policy、prio、time_slice):調(diào)度使用的調(diào)度策略、優(yōu)先級和時間片等。記時信息(start_time、utime、stime):進(jìn)程建立的時間以及執(zhí)行用戶代碼與系統(tǒng)代碼的累計時間。信號信息(signal、sighand):進(jìn)程收到的信號以及使用的信號處理程序。退出碼(exit_code):進(jìn)程運行結(jié)束后的退出代碼,供父進(jìn)程查詢用。文件系統(tǒng)信息(fs、files):包括文件系統(tǒng)及打開文件的信息。地址空間信息(mm):進(jìn)程使用的地址空間。硬件現(xiàn)場信息(thread):進(jìn)程切換時保存的CPU寄存器的內(nèi)容。運行信息(thread_info):有關(guān)進(jìn)程運行環(huán)境、狀況的CPU相關(guān)信息。198.1進(jìn)程管理1.查看系統(tǒng)進(jìn)程信息要對進(jìn)程進(jìn)行監(jiān)測和控制,首先必須要了解當(dāng)前進(jìn)程的情況(1)ps命令使用該命令可以確定有哪些進(jìn)程正在運行以及進(jìn)程運行的狀態(tài)、進(jìn)程是否結(jié)束、進(jìn)程有沒有僵死,以及哪些進(jìn)程占用了過多的資源等208.2進(jìn)程管理的命令例1.顯示所有的進(jìn)程。[root@rhel~]#ps-e例2.顯示所有不帶控制帶終端的進(jìn)程,并顯示用戶名和進(jìn)程的起始時間。[root@rhel~]#ps-aux例3.顯示root用戶的進(jìn)程。[root@rhel~]#ps-uroot21ps命令示例(2)top命令
使用top命令可以顯示當(dāng)前正在運行的進(jìn)程以及關(guān)于它們的重要信息,包括它們的內(nèi)存和CPU使用量。執(zhí)行top命令可以顯示目前正在系統(tǒng)中執(zhí)行的進(jìn)程,并通過它所提供的互動式界面,用熱鍵加以管理。要退出top,按[q]鍵即可。228.2進(jìn)程管理的命令選項選項含義-c列出進(jìn)程時,顯示每個進(jìn)程的完整命令,包括命令名稱、路徑和參數(shù)等-d<間隔秒數(shù)>監(jiān)控進(jìn)程執(zhí)行狀況的間隔時間,單位以秒計算-n<執(zhí)行次數(shù)>設(shè)置監(jiān)控信息的更新次數(shù)-u<用戶名|有效用戶UID>僅監(jiān)視指定有效用戶UID或用戶名匹配的進(jìn)程-p<進(jìn)程PID>僅監(jiān)視指定進(jìn)程UID的進(jìn)程-U<用戶名|用戶UID>僅監(jiān)視指定用戶UID或用戶名匹配的進(jìn)程top命令常用選項(3)殺死進(jìn)程使用kill命令可以殺死進(jìn)程,在使用kill命令之前,需要得到要被殺死的進(jìn)程的PID(進(jìn)程號)用戶可以使用ps命令獲得進(jìn)行的PID,然后用進(jìn)程的PID作為kill命令的參數(shù)248.2進(jìn)程管理的命令8.3進(jìn)程通信25系統(tǒng)中的進(jìn)程和系統(tǒng)內(nèi)核之間,以及各個進(jìn)程之間需要相互通信,以便協(xié)調(diào)彼此間的活動。Linux系統(tǒng)支持的進(jìn)程通信機制信號機制管道SystemIPC機制8.3.1信號機制261.信號概念信號(signal,亦稱做軟中斷)機制是在軟件層次上對中斷機制的一種模擬。異步進(jìn)程可以通過彼此發(fā)送信號來實現(xiàn)簡單通信。信號機制流程27系統(tǒng)預(yù)先規(guī)定若干個不同類型的信號運行進(jìn)程當(dāng)遇到相應(yīng)事件,就把一個信號寫到相應(yīng)進(jìn)程task_struct結(jié)構(gòu)的signal位圖接收信號的進(jìn)程如果已收到信號,則執(zhí)行預(yù)先規(guī)定好的信號處理程序處理之后,再返回原先正在執(zhí)行的程序。2.信號分類,隨系統(tǒng)而變,可分為:進(jìn)程終止、進(jìn)程執(zhí)行異常系統(tǒng)調(diào)用出錯報警信號終端交互作用、系統(tǒng)一般用戶自己留出定義信號的編號283.進(jìn)程對信號可采取的處理方式(1)忽略信號(2)阻塞信號(3)由進(jìn)程處理該信號(4)由系統(tǒng)進(jìn)行默認(rèn)處理294.對信號的檢測和處理流程對信號的檢測和響應(yīng)是在系統(tǒng)空間進(jìn)行的:從系統(tǒng)空間返回用戶空間之前進(jìn)行信號檢測當(dāng)前進(jìn)程在內(nèi)核中進(jìn)入睡眠以后剛被喚醒,要檢測有無信號308.3.2管道文件31管道是Linux中最常用的IPC機制,一個管道線就是連接兩個進(jìn)程的一個打開文件命令ls|more。在執(zhí)行這個命令行時要創(chuàng)建一個管道文件和兩個進(jìn)程:“|”對應(yīng)管道文件,命令ls對應(yīng)一個進(jìn)程,它向該文件中寫入信息,稱做寫進(jìn)程;命令more對應(yīng)另一個進(jìn)程,它從文件中讀出信息,稱做讀進(jìn)程。8.3.3SystemIPC機制32消息通信:進(jìn)程可以通過系統(tǒng)調(diào)用建立消息隊列,其他進(jìn)程都可以向該隊列發(fā)送消息或者接收消息,從而實現(xiàn)進(jìn)程間的消息傳遞。共享內(nèi)存:進(jìn)程可以通過系統(tǒng)調(diào)用設(shè)立一片共享內(nèi)存區(qū),相關(guān)進(jìn)程就可以讀/寫該共享區(qū)的信息信號量:信號量是系統(tǒng)內(nèi)的一種數(shù)據(jù)結(jié)構(gòu),它的值代表著可使用資源的數(shù)量,可以被一個或多個進(jìn)程進(jìn)行檢測和設(shè)置。8.4磁盤管理338.4.1磁盤分區(qū)(1)磁盤分區(qū)的目的:(a)易于管理和使用(b)有利于數(shù)據(jù)的安全(c)節(jié)約尋找文件的時間8.4磁盤管理34(2)磁盤分區(qū)的類別:基本分區(qū)能立刻生效但不能再分區(qū)擴展分區(qū)需要再次分區(qū)后才能生效,由擴展分區(qū)進(jìn)行二次劃分就是邏輯分區(qū),況且邏輯分區(qū)沒有數(shù)量上限制。注意:基本分區(qū)和擴展分區(qū)兩種,他們總數(shù)目之和不能大于四個8.4磁盤管理35(2)磁盤分區(qū)命令:查看當(dāng)前磁盤的分區(qū)狀況:fdisk–l讓硬盤進(jìn)入分區(qū)模式:fdisk/dev/sdb要創(chuàng)建分區(qū),需要輸入n,并設(shè)置分區(qū)的起始和終止扇區(qū)8.4磁盤管理368.4.2磁盤格式化創(chuàng)建分區(qū),對磁盤進(jìn)行格式化后才可以進(jìn)行數(shù)據(jù)的存儲:磁盤的格式化命令:mkfs8.4磁盤管理378.4.3磁盤的掛載在掛載某個分區(qū)前,需要先建立一個以目錄的形式掛載點。如果將分區(qū)掛載到該掛載點下,那么往這個目錄寫數(shù)據(jù)時,就都會寫到該分區(qū)中。8.4磁盤管理38(1)掛載點目錄:將磁盤切到根目錄,media和mnt這兩個目錄被叫做掛載點目錄。也可以自己創(chuàng)建一個目錄作為一個掛載點目錄。(2)臨時掛載:將指定的一個目錄作為掛載點目錄時,如果掛載點的目錄有文件,那么文件會被隱藏。如使用命令:mount/dev/sdb5/test,將/dev/sdb5掛載到test目錄中8.4磁盤管理39(3)查看到當(dāng)前系統(tǒng)上所有磁盤的掛載信息:df–h(4)查看對應(yīng)分區(qū)的UUID(編號):blkid(5)永久掛載:使用永久掛載,即開機會自動掛載在命令行直接輸入vim/etc/fstab就可以編輯,實現(xiàn)開機自動掛載由于內(nèi)核還沒有讀取這個命令,需要使用mount-a來讓內(nèi)核讀取這個文件。然后用mount|grep/test來過濾信息,查看是否成功掛載。8.5內(nèi)存管理40早期Linux內(nèi)存主要采用的是頁式內(nèi)存管理,但同時也采用了段機制程序所使用的地址,通常是沒被段式內(nèi)存管理映射的地址,稱為邏輯地址通過段式內(nèi)存管理映射的地址,稱為線性地址8.5內(nèi)存管理41在Linux操作系統(tǒng)中,虛擬地址空間分為:內(nèi)核空間是控制計算機的硬件資源,并提供上層應(yīng)用程序運行的環(huán)境用戶空間即上層應(yīng)用程序的活動空間,應(yīng)用程序的執(zhí)行必須依托于內(nèi)核提供的資源8.5內(nèi)存管理42用戶態(tài)的應(yīng)用程序可以通過三種方式來訪問內(nèi)核態(tài)的資源:(1)系統(tǒng)調(diào)用(2)庫函數(shù)(3)Shell腳本8.5內(nèi)存管理43發(fā)生從用戶態(tài)到內(nèi)核態(tài)的切換:(1)系統(tǒng)調(diào)用(2)異常事件(3)外圍設(shè)備的中斷8.6設(shè)備管理448.6.1Linux設(shè)備管理綜述 Linux設(shè)備管理的主要特點是把設(shè)備當(dāng)作文件來看待,只要安裝了設(shè)備的驅(qū)動程序,應(yīng)用程序就可以像使用文件一樣使用設(shè)備,而不必知道它們的具體存在形式和操作方式。8.6設(shè)備管理451.Linux設(shè)備的標(biāo)識在Linux系統(tǒng)中,每個設(shè)備都對應(yīng)一個設(shè)備文件,位于dev目錄下。設(shè)備文件是一種特殊類型的文件,字符設(shè)備的文件類型為“c”,塊設(shè)備的文件類型為“b”。用戶用設(shè)備文件的名稱來指定設(shè)備,而內(nèi)核則使用主設(shè)備號(majornumber)和次設(shè)備號(minornumber)來標(biāo)識一個具體的設(shè)備8.6設(shè)備管理462.Linux偽設(shè)備及其標(biāo)識偽設(shè)備(pseudodevice)是指沒有對應(yīng)任何實際設(shè)備,完全由驅(qū)動軟件虛構(gòu)出來的設(shè)備(1)空設(shè)備/dev/null(2)滿設(shè)備/dev/full(3)零設(shè)備/dev/zero:(4)隨機數(shù)設(shè)備/dev/random8.6設(shè)備管理473.設(shè)備文件的描述結(jié)構(gòu)每個設(shè)備文件都有一個獨立的i節(jié)點沒有文件大小和數(shù)據(jù)塊索引等信息,而是包含了主次設(shè)備號和一些設(shè)備描述信息沒有數(shù)據(jù)塊,因為它并不包含任何實際數(shù)據(jù)8.6設(shè)備管理488.6.2LinuxI/O系統(tǒng)的軟件結(jié)構(gòu) Linux實現(xiàn)設(shè)備獨立性的手段是通過分層軟件結(jié)構(gòu)把設(shè)備納入文件系統(tǒng)的管理之下,使進(jìn)程可以通過文件系統(tǒng)的接口來使用設(shè)備。8.6設(shè)備管理498.6.3Linux的設(shè)備管理機制1.設(shè)備驅(qū)動模型與設(shè)備管理器2.設(shè)備的注冊與注銷3.設(shè)備節(jié)點的建立與刪除4.設(shè)備的操作8.6設(shè)備管理508.6.4字符設(shè)備的管理
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度農(nóng)貿(mào)場農(nóng)產(chǎn)品質(zhì)量檢測中心建設(shè)合同4篇
- 2025年金融衍生品交易總合同2篇
- 2025年度牛只運輸車輛GPS定位與實時監(jiān)控服務(wù)合同4篇
- 2025版人工智能語音助手定制開發(fā)合同4篇
- 房屋出租委托代理合同(2篇)
- 2025年度學(xué)校教室窗簾更換項目承包合同4篇
- 二零二五版人工智能教育平臺合作合并合同2篇
- 2025年度物流倉儲設(shè)施承包招商合同范本4篇
- 二零二五版南山磚廠產(chǎn)品認(rèn)證與質(zhì)量檢測服務(wù)合同2篇
- 二零二五年度農(nóng)業(yè)循環(huán)經(jīng)濟發(fā)展規(guī)劃合同3篇
- 2024版塑料購銷合同范本買賣
- JJF 2184-2025電子計價秤型式評價大綱(試行)
- GB/T 44890-2024行政許可工作規(guī)范
- 2024年安徽省中考數(shù)學(xué)試卷含答案
- 2025屆山東省德州市物理高三第一學(xué)期期末調(diào)研模擬試題含解析
- 2024年滬教版一年級上學(xué)期語文期末復(fù)習(xí)習(xí)題
- 兩人退股協(xié)議書范文合伙人簽字
- 2024版【人教精通版】小學(xué)英語六年級下冊全冊教案
- 汽車噴漆勞務(wù)外包合同范本
- 微項目 探討如何利用工業(yè)廢氣中的二氧化碳合成甲醇-2025年高考化學(xué)選擇性必修第一冊(魯科版)
- 2024年重慶南開(融僑)中學(xué)中考三模英語試題含答案
評論
0/150
提交評論