




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、2022-6-121第第5 5章章 Linux Linux 內核簡介內核簡介2022-6-122 主要內容Linux核心的一般結構進程的概念、進程的調度和進程通信文件系統(tǒng)的構成和管理內存管理設備驅動及中斷處理2022-6-123 5.1 Linux內核概述 Linux系統(tǒng)大致可分為三層:靠近硬件的底層是內核,即Linux操作系統(tǒng)常駐內存部分。中間層是內核之外的shell層,即操作系統(tǒng)的系統(tǒng)程序部分。最高層是應用層,即用戶程序部分 2022-6-124Linux有兩種不同的含義 嚴格技術角度:指的時開放源代碼的類Unix操作系統(tǒng)的內核 一般意義:指以Linux內核為基礎的操作系統(tǒng),包括內核、系統(tǒng)
2、工具、完整的開發(fā)環(huán)境和應用 5.1 Linux內核概述2022-6-125Linux的版本 LinuxLinux有兩種版本,一個是核心(有兩種版本,一個是核心(KernelKernel)版本,另一個是發(fā)行)版本,另一個是發(fā)行(DistributionDistribution)版本。)版本。 序號由三部分數(shù)字構成,其形式為序號由三部分數(shù)字構成,其形式為: : major.minor.patchlevel major.minor.patchlevel 主版本號主版本號. .次版本號次版本號. .修訂版本號修訂版本號 例如:例如:2.2.6 6.1.18 8表示對核心表示對核心2.2.6 6版本的第
3、版本的第1 18 8次修訂。次修訂。 約定:次版本號為奇數(shù)時,表示該版本加入新內容,但不一定很穩(wěn)定,約定:次版本號為奇數(shù)時,表示該版本加入新內容,但不一定很穩(wěn)定,相當于測試版相當于測試版,如,如2.5.XX2.5.XX;次版本號為偶數(shù)時,表示這是一個可以使;次版本號為偶數(shù)時,表示這是一個可以使用的穩(wěn)定版本用的穩(wěn)定版本,如,如2.6.XX2.6.XX。查看內核版本:查看內核版本: uname -r uname -r 2022-6-126kernel是操作系統(tǒng)的核心程序。向外部提供對計算機設備的核心管理及調用,負責對計算機資源的抽象、分配和共享 代碼分為兩部分: 內核所在的地址空間稱作內核空間 其
4、他應用程序稱為外部管理程序,大部分是對外圍設備進行管理和界面操作,外部管理程序和用戶進程所占據(jù)的地址空間成為外部空間 5.1 Linux內核概述2022-6-127Unix內核用C語言寫成單一內核:所有的操作系統(tǒng)功能均被封裝在內核中,與外部程序處于不同的地址空間。外部程序只能通過功能調用來訪問內核。微內核:內核只提供最基本、最核心的一部分操作,如創(chuàng)建和刪除任務、中斷管理、進程管理、存儲器管理、進程間通信等,而其他功能如文件系統(tǒng)、網(wǎng)絡協(xié)議棧則在內核外操作。 5.1 Linux內核概述2022-6-128微內核特點: 使操作系統(tǒng)具有良好的靈活性 操作系統(tǒng)內部結構簡單清晰 程序代碼維護十分方便 體現(xiàn)
5、了面向對象式軟件的結構特征 5.1 Linux內核概述2022-6-129但是:Linux內核采用單一內核原因: 注重效率 Linux將代碼執(zhí)行效率作為操作系統(tǒng)第一要務 Linux內核的程序員都是世界各地的黑客,比起結構的清晰,更注重功能的強大和高效率的代碼特點: 每個功能部件不能輕易拆除 5.1 Linux內核概述2022-6-1210從結構上看,Linux操作系統(tǒng)是采用單塊結構的操作系統(tǒng)。一般說來,可以將操作系統(tǒng)劃分為內核和系統(tǒng)程序兩部分。2022-6-1211進程控制系統(tǒng)用于進程管理、進程同步、進程通信、進程調度和內存管理等。內存管理控制內存分配與回收。文件系統(tǒng)管理文件、分配文件空間、管
6、理空閑空間、控制對文件的訪問并為用戶檢索數(shù)據(jù)。Linux系統(tǒng)支持三種類型的硬件設備:字符設備、塊設備和網(wǎng)絡設備。核心底層的硬件控制負責處理中斷以及與機器通信。2022-6-12125.2 進 程 管 理-進程和線程的概念1進程及其狀態(tài)簡單說來,進程就是程序的一次執(zhí)行過程。進程至少要有三種基本狀態(tài)。這三種基本狀態(tài)是:運行態(tài)、就緒態(tài)和封鎖態(tài)(或等待態(tài))。進程的狀態(tài)可依據(jù)一定的條件和原因而變化 2022-6-1213進程的三種基本狀態(tài)運行狀態(tài):指當前進程已分配CPU,它是程序正在處理器上執(zhí)行的狀態(tài)。在一般單一CPU機制中,任何時刻處于運行狀態(tài)的進程至多只有一個。就緒狀態(tài):指進程已具備運行條件,但因為
7、其他進程正占用CPU,所以暫時不能運行而等待分配CPU資源的狀態(tài)。處于該狀態(tài)的進程可以有多個。封鎖狀態(tài):指進程因等待某種事件發(fā)生(如等待某一輸入、輸出操作完成,等待其他進程發(fā)來的信號等)而暫時不能運行的狀態(tài)。處于封鎖狀態(tài)的進程尚不具備運行條件。也稱為不可運行狀態(tài)或掛起狀態(tài)??梢杂卸鄠€。2022-6-12142Linux進程狀態(tài)2022-6-1215 3進程的模式和類型在Linux系統(tǒng)中,進程的執(zhí)行模式劃分為用戶模式和內核模式按照進程的功能和運行的程序來分,進程劃分為兩大類:一類是系統(tǒng)進程,另一類是用戶進程 2022-6-12164Linux線程Linux把線程定義為進程的“執(zhí)行上下文” 具有一
8、段可執(zhí)行的程序、專用的系統(tǒng)堆??臻g、私有的“線程控制塊”(即thread_struct數(shù)據(jù)結構) 缺少自己的存儲空間 2022-6-1217程序、進程與線程進程是程序的一次執(zhí)行;線程可理解為進程中執(zhí)行的一段代碼片段進程是系統(tǒng)進行資源分配和調度的一個獨立單位;線程基本上不擁有系統(tǒng)資源進程間相互獨立的;線程可與同屬一個進程的其他的線程共享進程所擁有的全部資源。進程與線程之間的數(shù)量關系?解決執(zhí)行較長時間的操作而不至于用戶界面失去響應 為什么有了進程還要有線程?2022-6-1218多線程優(yōu)勢提高應用程序的響應速度。 耗時操作時程序無法響應鼠標、鍵盤事件多CPU系統(tǒng)更加有效。 線程數(shù)小于CPU個數(shù)時,
9、不同程序在不同CPU上執(zhí)行,真正同時執(zhí)行改善程序結構。 復雜的進程可考慮分為多個線程,有利于理解和維護2022-6-1219多線程程序特點多線程執(zhí)行順序無法保證。 取決于操作系統(tǒng)調度策略和優(yōu)先級等多線程切換可能發(fā)生在任何時間、任何地點。多線程程序的行為無法預測。 多個線程運行時,結果很可能不同有必要對多線程進行控制!2022-6-12205.2.2 進程的結構1task_struct結構,包含下列幾方面的信息: 進程狀態(tài) 調度信息 標志符(PID) 內部進程通訊(信號、管道、信號量等) 鏈接信息(指向父進程、兄弟進程、子進程的指針) 時間和計時器(記錄進程的創(chuàng)建時間和運行所占用的 CPU時間)
10、 文件系統(tǒng) 虛擬內存 處理器信息2022-6-1221 2進程系統(tǒng)堆棧每個進程都有一個系統(tǒng)堆棧,用來保存中斷現(xiàn)場信息和進程進入內核模式后執(zhí)行子程序(函數(shù))嵌套調用的返回現(xiàn)場信息。 每個進程的系統(tǒng)堆棧和task_struct數(shù)據(jù)結構之間存在緊密聯(lián)系,因而二者物理存儲空間也連在一起 系統(tǒng)堆棧的大小靜態(tài)確定,用戶堆??稍谶\行時動態(tài)擴展 2022-6-12225.2.3 對進程的操作1進程的創(chuàng)建各個進程構成了樹形的進程族系 內核在引導并完成了基本的初始化以后,就有了系統(tǒng)的第一個進程(即初始化進程,實際上是內核線程)。除此之外,所有其他的進程和內核線程都由這個原始進程或其子孫進程所創(chuàng)建。 除初始化進程外
11、,其他進程都是用系統(tǒng)調用fork( )和clone( )創(chuàng)建的。 fork( )是全部復制 ,而clone( ) 有選擇地復制 2022-6-1223 2進程的等待父進程可用系統(tǒng)調用wait3( )等待它的任一個子進程終止,也可以用系統(tǒng)調用wait4( )等待某個特定的子進程終止。wait3( )算法如下:(1)如果父進程沒有子進程,則出錯返回。(2)如果發(fā)現(xiàn)有一個終止的子進程,則取出子進程的進程號,把子進程的CPU使用時間等加到父進程上,釋放子進程占用的task_struct和系統(tǒng)空間堆棧,以供新進程使用。(3)如果發(fā)現(xiàn)有子進程,但都不處于終止態(tài),則父進程睡眠,等待由相應的信號喚醒。 202
12、2-6-1224殺死程序一個程序由于以下原因而終止 它的main函數(shù)調用了return 它調用了exit 它調用了_exit 它調用了abort 它被一個信號終止2022-6-1225進程的終止進程可使用系統(tǒng)調用exit( )終止自己其實現(xiàn)算法如下:(1)撤消所有的信號量。(2)釋放其所有的資源,包括存儲空間、已打開的文件、工作目錄、信號處理表等。(3)置進程狀態(tài)為“終止態(tài)”(TASK_ZOMBIE)。(4)向它的父進程發(fā)送子進程終止的信號。(5)執(zhí)行進程調度。2022-6-1226使用abort函數(shù)abort用于調試分析程序崩潰。但是仍然比較粗暴,應該作為最后的手段使用,比如碰到類似嚴重內存
13、不足的錯誤,無法使用程序的方法處理時再使用。函數(shù)原型:#include void abort (void)2022-6-1227使用kill函數(shù)Kill用于一個進程終止另外一個進程原型:#include #include int kill(pid_t pid, int sig)Pid指定要終止的進程,而sig是要發(fā)送的信號(本節(jié)只關注SIGKILL一種信號)2022-6-12285.2.4 進程調度進程調度機制主要涉及到調度方式、調度時機和調度策略1調度方式基本上采用“搶占式優(yōu)先級”方式 2調度策略三種不同的調度策略 SCHED_FIFO短實時進程,對時間性要求比較強 SCHED_RR較長時間
14、的實時進程,對應“時間片輪轉法” SCHED_OTHER交互式的分時進程,這類進程的優(yōu)先權取決于兩個因素:一個因素是進程剩余時間配額;另一個是進程的優(yōu)先數(shù)nice 優(yōu)先數(shù)越小,其優(yōu)先級越高 后臺進程的優(yōu)先級低于任何交互(前臺)進程的優(yōu)先級 2022-6-12293調度時機(1)當前進程調用系統(tǒng)調用nanosleep( )或者pause( ),使自己進入睡眠狀態(tài),主動讓出一段時間的CPU使用權。(2)進程終止,永久地放棄對CPU的使用。(3)在時鐘中斷處理程序執(zhí)行過程中,發(fā)現(xiàn)當前進程連續(xù)運行的時間過長。(4)當喚醒一個睡眠進程時,發(fā)現(xiàn)被喚醒的進程比當前進程更有資格運行。(5)一個進程通過執(zhí)行系統(tǒng)
15、調用來改變調度策略或者降低自身的優(yōu)先權(如nice命令),從而引起立即調度。4調度算法2022-6-12305.2.5 shell基本工作原理 它不屬于內核部分,而是在核心之外,以用戶態(tài)方式運行。其基本功能是解釋并執(zhí)行用戶打入的各種命令,實現(xiàn)用戶與Linux核心的接口。2022-6-1231作業(yè)本章節(jié)截圖為實例部分。請把代碼敲到計算機里面,并進行編譯、運行。編譯的工具為計算機自帶的gcc工具將代碼和截圖、心得等按照實驗報告模板填寫上交2022-6-1232等待進程-wait函數(shù)族當用fork創(chuàng)建了新進程,為了收集新進程退出狀態(tài)并防止出現(xiàn)僵尸進程,父進程應該等待新進程的終止。僵尸進程即該進程已經
16、完成并終止,但是并沒有釋放資源,仍然在進程表里面存在。孤兒進程是指進程創(chuàng)建完新進程還沒有等新進程結束,父進程就已經結束。這種進程的父進程均改為init進程。父進程使用wait或者waitpid收集子進程的退出狀態(tài)。2022-6-1233原型:#include #include pid_t wait(int *status)pid_t waitpid(pid_t pid,int *status, int options);/其中status保存子進程的退出狀態(tài)。Pid等待進程的pid??赡苋≈等缦拢?022-6-1234例12022-6-12352022-6-1236使用kill函數(shù)Kill用于
17、一個進程終止另外一個進程原型:#include #include int kill(pid_t pid, int sig)Pid指定要終止的進程,而sig是要發(fā)送的信號(本節(jié)只關注SIGKILL一種信號)2022-6-1237例22022-6-12382022-6-1239進程標識號進程的兩個知名屬性:進程號(Process ID, PID)和父進程號(Parent Process ID,PPID)PID/PPID都為整數(shù),唯一標識一個進程所有的進程有個共同的祖先:pid=1的進程,即init進程2022-6-1240例32022-6-1241Real和effective標識號進程的屬性202
18、2-6-1242例42022-6-1243用戶和用戶組的信息getlogin()函數(shù)返回用戶的登錄名getpwname()函數(shù)以上面的函數(shù)返回值為參數(shù),從/etc/passwd文件中返回該登錄名的所有信息。#include char *getlogin(void)#include struct passwd *getpwnam(const char *name)2022-6-1244例52022-6-1245使用system創(chuàng)建進程system函數(shù)原型如下:#include int system(const char *string)它通過把system傳遞給/bin/sh c來執(zhí)行 string所指定的命令,string中可
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度房屋贈與及環(huán)境監(jiān)測服務合同
- 幼兒園教師聘用合同(2025年度)附幼兒教育創(chuàng)新項目合作
- 2025年度水稻種植回收與農業(yè)市場風險管理合同
- 二零二五年度文化產業(yè)集團股份轉讓與文化衍生品開發(fā)協(xié)議
- 二零二五年度農民工工資代付與工程進度掛鉤合同
- 共青團入團知識培訓課件
- 2025年梁上打孔工程消防責任免除協(xié)議
- 二零二五年度土地流轉與農業(yè)廢棄物資源化利用合同
- 2025遼寧大連融金征信服務選聘8人筆試參考題庫附帶答案詳解
- 2025江蘇無錫市宜興市宜能實業(yè)有限公司招聘線路設計輔助人員2人筆試參考題庫附帶答案詳解
- 小升初閱讀理解專題課件
- 血漿吸附療法課件
- 人教部編版九年級下冊歷史第四單元 經濟大危機和第二次世界大戰(zhàn)單元測試題
- 個人理財實務教學課件
- (完整版)新版PEP小學英語五年級下冊教材分析
- 第2講 麥克斯韋方程組
- 研發(fā)經費填報指標說明及核算方法
- 一年級思維訓練(課堂PPT)
- 綠色光年20162017雙上海閔行區(qū)江川綠色光
- GB_T 27025-2019 檢測和校準實驗室能力的通用要求(高清版)
- 菊花深加工項目可行性研究報告寫作范文
評論
0/150
提交評論