99精品国产综合久久久久五月天,免费观看欧美大片毛片不用播放器 ,AV无码理论片在线观看免费网站,国产精品国产成人国产三级
標(biāo)題:
[分享]
Linux內(nèi)核
[打印本頁]
作者:
marquis
時間:
2013-5-20 22:24
標(biāo)題:
Linux內(nèi)核
Linux系統(tǒng)大致可分為三層:
靠近硬件的底層是內(nèi)核,即Linux操作系統(tǒng)常駐內(nèi)存部分。
中間層是內(nèi)核之外的shell層,即操作系統(tǒng)的系統(tǒng)程序部分。
最高層是應(yīng)用層,即用戶程序部分
Linux有兩種不同的含義
嚴(yán)格技術(shù)角度:指的時開放源代碼的Unix類操作系統(tǒng)的內(nèi)核
一般意義:指以Linux內(nèi)核為基礎(chǔ)的操作系統(tǒng),包括內(nèi)核、系統(tǒng)工具、完整的開發(fā)環(huán)境和應(yīng)用
kernel時操作系統(tǒng)的核心程序,由幾個不同邏輯功能部分組成:
向外部提供對計算機設(shè)備的核心管理及調(diào)用,負(fù)責(zé)對計算機資源的抽象、分配和共享
代碼分為兩部分:
內(nèi)核所在的地址空間稱作內(nèi)核空間
其他應(yīng)用程序稱為外部管理程序,大部分是對外圍設(shè)備進(jìn)行管理和界面操作,外部管理程序和用戶進(jìn)程所占據(jù)的地址空間成為外部空間
Unix內(nèi)核用C語言寫成
單一內(nèi)核:所有的操作系統(tǒng)功能均被封裝在內(nèi)核中,與外部程序處于不同的地址空間。外部程序智能通過功能調(diào)用來訪問內(nèi)核
微內(nèi)核:內(nèi)核只提供最基本、最核心的一部分操作,如創(chuàng)建和刪除任務(wù)、中斷管理、進(jìn)程管理、存儲器管理、進(jìn)程間通信等,而其他功能如文件系統(tǒng)、網(wǎng)絡(luò)協(xié)議棧則在內(nèi)核外操作。
微內(nèi)核特點:
使操作系統(tǒng)具有良好的靈活性
操作系統(tǒng)內(nèi)部結(jié)構(gòu)簡單清晰
程序代碼維護(hù)十分方便
體現(xiàn)了面向?qū)ο笫杰浖慕Y(jié)構(gòu)特征
但是:Linux內(nèi)核采用單一內(nèi)核
原因:
注重效率
Linux將代碼執(zhí)行效率作為操作系統(tǒng)第一要務(wù)
Linux內(nèi)核的程序員都是世界各地的黑客,比起結(jié)構(gòu)的清晰,更注重功能的強大和高效率的代碼
特點:
每個功能部件不能輕易拆除
從結(jié)構(gòu)上看,Linux操作系統(tǒng)是采用單塊結(jié)構(gòu)的操作系統(tǒng)。
一般說來,可以將操作系統(tǒng)劃分為內(nèi)核和系統(tǒng)程序兩部分。
進(jìn)程控制系統(tǒng)用于進(jìn)程管理、進(jìn)程同步、進(jìn)程通信、進(jìn)程調(diào)度和內(nèi)存管理等。
●內(nèi)存管理控制內(nèi)存分配與回收。
●文件系統(tǒng)管理文件、分配文件空間、管理空閑空間、控制對文件的訪問并為用戶檢索數(shù)據(jù)。
●Linux系統(tǒng)支持三種類型的硬件設(shè)備:字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)設(shè)備。
●核心底層的硬件控制負(fù)責(zé)處理中斷以及與機器通信。
作者:
marquis
時間:
2013-5-20 22:24
本帖最后由 marquis 于 2013-5-20 23:03 編輯
5.2 進(jìn) 程 管 理
1.進(jìn)程及其狀態(tài)
簡單說來,進(jìn)程就是程序的一次執(zhí)行過程。
進(jìn)程至少要有三種基本狀態(tài)。這三種基本狀態(tài)是:運行態(tài)、就緒態(tài)和封鎖態(tài)(或等待態(tài))。
進(jìn)程的狀態(tài)可依據(jù)一定的條件和原因而變化
下載
(31.57 KB)
2013-5-20 22:30
運行狀態(tài):指當(dāng)前進(jìn)程已分配CPOU,它是程序正在處理器上執(zhí)行的狀態(tài)。在一般單一CPU機制中,任何時刻處于運行狀態(tài)的進(jìn)程至多只有一個。
就緒狀態(tài):指進(jìn)程已具備運行條件,但因為其他進(jìn)程正占用CPU,所以暫時不能運行而等待分配CPU資源的狀態(tài)。處于該狀態(tài)的進(jìn)程可以有多個。
封鎖狀態(tài):只進(jìn)程因等待某種事件發(fā)生(如等待某一輸入、輸出操作完成,等待其他進(jìn)程發(fā)來的信號等)而暫時不能運行的狀體。處于封鎖狀態(tài)的進(jìn)程尚不具備運行條件。也成為不可運行狀態(tài)或掛起狀態(tài)。可以有多個。
2.Linux進(jìn)程狀態(tài)
下載
(103.41 KB)
2013-5-20 22:35
3.進(jìn)程的模式和類型
在Linux系統(tǒng)中,進(jìn)程的執(zhí)行模式劃分為用戶模式和內(nèi)核模式
按照進(jìn)程的功能和運行的程序來分,進(jìn)程劃分為兩大類:一類是系統(tǒng)進(jìn)程,另一類是用戶進(jìn)程
下載
(39.28 KB)
2013-5-20 22:36
4.Linux線程
Linux把線程定義為進(jìn)程的“執(zhí)行上下文”
具有一段可執(zhí)行的程序、專用的系統(tǒng)堆?臻g、私有的“線程控制塊”(即thread_struct數(shù)據(jù)結(jié)構(gòu))
缺少自己的存儲空間
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)志符(PID)
·內(nèi)部進(jìn)程通訊(信號、管道、信號量等)
·鏈接信息(指向父進(jìn)程、兄弟進(jìn)程、子進(jìn)程的指針)
·時間和計時器(記錄進(jìn)程的創(chuàng)建時間和運行所占用的
CPU時間)
·文件系統(tǒng)
·虛擬內(nèi)存
·處理器信息
2.進(jìn)程系統(tǒng)堆棧
每個進(jìn)程都有一個系統(tǒng)堆棧,用來保存中斷現(xiàn)場信息和進(jìn)程進(jìn)入內(nèi)核模式后執(zhí)行子程序(函數(shù))嵌套調(diào)用的返回現(xiàn)場信息。
每個進(jìn)程的系統(tǒng)堆棧和task_struct數(shù)據(jù)結(jié)構(gòu)之間存在緊密聯(lián)系,因而二者物理存儲空間也連在一起
系統(tǒng)堆棧的大小靜態(tài)確定,用戶堆?稍谶\行時動態(tài)擴展
下載
(37.16 KB)
2013-5-20 22:37
5.2.3 對進(jìn)程的操作
1.進(jìn)程的創(chuàng)建
各個進(jìn)程構(gòu)成了樹形的進(jìn)程族系
內(nèi)核在引導(dǎo)并完成了基本的初始化以后,就有了系統(tǒng)的第一個進(jìn)程(即初始化進(jìn)程,實際上是內(nèi)核線程)。除此之外,所有其他的進(jìn)程和內(nèi)核線程都由這個原始進(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( )等待它的任一個子進(jìn)程終止,也可以用系統(tǒng)調(diào)用wait4( )等待某個特定的子進(jìn)程終止。
wait3( )算法如下:
(1)如果父進(jìn)程沒有子進(jìn)程,則出錯返回。
(2)如果發(fā)現(xiàn)有一個終止的子進(jìn)程,則取出子進(jìn)程的進(jìn)程號,把子進(jìn)程的CPU使用時間等加到父進(jìn)程上,釋放子進(jìn)程占用的task_struct和系統(tǒng)空間堆棧,以供新進(jìn)程使用。
(3)如果發(fā)現(xiàn)有子進(jìn)程,但都不處于終止態(tài),則父進(jìn)程睡眠,等待由相應(yīng)的信號喚醒。
3.進(jìn)程的終止
進(jìn)程可使用系統(tǒng)調(diào)用exit( )終止自己
其實現(xiàn)算法如下:
(1)撤消所有的信號量。
(2)釋放其所有的資源,包括存儲空間、已打開的文件、工作目錄、信號處理表等。
(3)置進(jìn)程狀態(tài)為“終止態(tài)”(TASK_ZOMBIE)。
(4)向它的父進(jìn)程發(fā)送子進(jìn)程終止的信號。
(5)執(zhí)行進(jìn)程調(diào)度。
4.進(jìn)程映像的更換
改換進(jìn)程映像的工作很復(fù)雜,是由系統(tǒng)調(diào)用execve( )實現(xiàn)的,它用一個可執(zhí)行文件的副本來覆蓋該進(jìn)程的內(nèi)存空間。
ELF可執(zhí)行文件格式示意圖
下載
(16.32 KB)
2013-5-20 22:49
execve( )系統(tǒng)調(diào)用的基本算法如下:
(1)驗證文件的可執(zhí)行性,即用戶
有權(quán)執(zhí)行它。
(2)讀文件頭,檢查它是一個可裝入模塊。
(3)釋放原有的內(nèi)存空間。
(4)按照可執(zhí)行文件的要求分配新的內(nèi)存空間,并裝入內(nèi)存
5.2.4 進(jìn)程調(diào)度
進(jìn)程調(diào)度機制主要涉及到調(diào)度方式、調(diào)度時機和調(diào)度策略
1.調(diào)度方式
基本上采用“搶占式優(yōu)先級”方式
2.調(diào)度策略——三種不同的調(diào)度策略
SCHED_FIFO——短實時進(jìn)程,對時間性要求比較強
SCHED_RR——較長時間的實時進(jìn)程,對應(yīng)“時間片輪轉(zhuǎn)法”
SCHED_OTHER——交互式的分時進(jìn)程,這類進(jìn)程的優(yōu)先權(quán)取決于兩個因素:一個因素是進(jìn)程剩余時間配額;另一個是進(jìn)程的優(yōu)先數(shù)nice ——優(yōu)先數(shù)越小,其優(yōu)先級越高
后臺進(jìn)程的優(yōu)先級低于任何交互(前臺)進(jìn)程的優(yōu)先級
3.調(diào)度時機
(1)當(dāng)前進(jìn)程調(diào)用系統(tǒng)調(diào)用nanosleep( )或者pause( ),使自己進(jìn)入睡眠狀態(tài),主動讓出一段時間的CPU使用權(quán)。
(2)進(jìn)程終止,永久地放棄對CPU的使用。
(3)在時鐘中斷處理程序執(zhí)行過程中,發(fā)現(xiàn)當(dāng)前進(jìn)程連續(xù)運行的時間過長。
(4)當(dāng)喚醒一個睡眠進(jìn)程時,發(fā)現(xiàn)被喚醒的進(jìn)程比當(dāng)前進(jìn)程更有資格運行。
(5)一個進(jìn)程通過執(zhí)行系統(tǒng)調(diào)用來改變調(diào)度策略或者降低自身的優(yōu)先權(quán)(如nice命令),從而引起立即調(diào)度。
圖片附件:
圖片10.png
(2013-5-20 22:30, 31.57 KB) / 下載次數(shù) 6761
http://fudaan.com/bbs/attachment.php?aid=2987&k=388947da2f6f818d22c0446e7e4c6ae9&t=1745015838&sid=oXQz7x
圖片附件:
圖片11.png
(2013-5-20 22:35, 103.41 KB) / 下載次數(shù) 6838
http://fudaan.com/bbs/attachment.php?aid=2989&k=6e78857e0101d5057471d3d82621549e&t=1745015838&sid=oXQz7x
圖片附件:
圖片14.png
(2013-5-20 22:36, 39.28 KB) / 下載次數(shù) 6757
http://fudaan.com/bbs/attachment.php?aid=2990&k=aad495b9df653b076747f193c1193d93&t=1745015838&sid=oXQz7x
圖片附件:
圖片13.png
(2013-5-20 22:37, 37.16 KB) / 下載次數(shù) 6761
http://fudaan.com/bbs/attachment.php?aid=2991&k=08353c32afa84379468665459ce55e99&t=1745015838&sid=oXQz7x
圖片附件:
圖片15.png
(2013-5-20 22:49, 16.32 KB) / 下載次數(shù) 6561
http://fudaan.com/bbs/attachment.php?aid=2992&k=1f7d356cf59f2519dd0ded6a4f4db94d&t=1745015838&sid=oXQz7x
作者:
marquis
時間:
2013-5-20 22:26
本帖最后由 marquis 于 2013-5-20 23:18 編輯
5.2.5 shell基本工作原理
它不屬于內(nèi)核部分,而是在核心之外,以用戶態(tài)方式運行。其基本功能是解釋并執(zhí)行用戶打入的各種命令,實現(xiàn)用戶與Linux核心的接口。
下載
(82.58 KB)
2013-5-20 23:15
后面是本章節(jié)的實例部分。請各位同學(xué)自己把代碼敲到計算機里面,并進(jìn)行編譯、運行。
編譯的工具為計算機自帶的gcc工具
進(jìn)程屬性
進(jìn)程的組成元素
程序的當(dāng)前上下文(context),它是程序當(dāng)前執(zhí)行的狀態(tài)
程序的當(dāng)前執(zhí)行目錄
程序訪問的文件和目錄
程序的信任狀態(tài),或者叫做訪問權(quán)限
內(nèi)存和其他分配給進(jìn)程的資源
進(jìn)程標(biāo)識號
進(jìn)程的兩個知名屬性:進(jìn)程號(Process ID, PID)和父進(jìn)程號(Parent Process ID,PPID)
PID/PPID都為整數(shù),唯一標(biāo)識一個進(jìn)程
所有的進(jìn)程有個共同的祖先:pid=1的進(jìn)程,即init進(jìn)程
下載
(30.09 KB)
2013-5-20 23:15
Real和effective標(biāo)識號
進(jìn)程的屬性
下載
(33.11 KB)
2013-5-20 23:15
下載
(40.85 KB)
2013-5-20 23:15
用戶和用戶組的信息
getlogin()函數(shù)返回用戶的登錄名
getpwname()函數(shù)以上面的函數(shù)返回值為參數(shù),從/etc/passwd文件中返回該登錄名的所有信息。
#include <unistd.h>
char *getlogin(void)
#include <pwd.h>
struct passwd *getpwnam(const char *name)
下載
(37.21 KB)
2013-5-20 23:15
使用system創(chuàng)建進(jìn)程
system函數(shù)原型如下:
#include <stdlib.h>
int system(const char *string)
它通過把system傳遞給/bin/sh –c來執(zhí)行 string所指定的命令,string中可以包含選項和參數(shù),接著整個命令行(/bin/sh –c string)又傳遞給系統(tǒng)調(diào)用execve(隨后介紹)。如果沒有/bin/sh,system返回127,如果出現(xiàn)其他錯誤,則返回-1;如果至此那個成功則返回string的代碼
下載
(26.75 KB)
2013-5-20 23:15
Fork系統(tǒng)調(diào)用創(chuàng)建進(jìn)程
fork調(diào)用創(chuàng)建一個新進(jìn)程
語法:
#include <unistd.h>
pid_t fork(void)
如果fork成功,就向父進(jìn)程返回子進(jìn)程的pid,并向子進(jìn)程返回0.
fork創(chuàng)建的新進(jìn)程是和父進(jìn)程(出了pid和ppid)一樣的副本,包括真實有效的UID,GID,進(jìn)程組和會話ID、環(huán)境、資源限制、打開的文件以及共享的進(jìn)程段
父進(jìn)程和子進(jìn)程之間有一點區(qū)別。子進(jìn)程沒有繼承父進(jìn)程的超時設(shè)置(使用alarm調(diào)用)、父進(jìn)程的文件鎖、或者未決信號。
下載
(28.56 KB)
2013-5-20 23:15
圖片附件:
圖片17.png
(2013-5-20 23:15, 82.58 KB) / 下載次數(shù) 6736
http://fudaan.com/bbs/attachment.php?aid=2993&k=4b1bcafaaa4999fdd4c3db449e05ae64&t=1745015838&sid=oXQz7x
圖片附件:
圖片18.jpg
(2013-5-20 23:15, 30.09 KB) / 下載次數(shù) 6699
http://fudaan.com/bbs/attachment.php?aid=2994&k=0c639af532b31a28fd52cb70046cf718&t=1745015838&sid=oXQz7x
圖片附件:
圖片19.png
(2013-5-20 23:15, 33.11 KB) / 下載次數(shù) 6750
http://fudaan.com/bbs/attachment.php?aid=2995&k=b8f0e22165b416f9fd6ae2ca2bbd9230&t=1745015838&sid=oXQz7x
圖片附件:
圖片20.jpg
(2013-5-20 23:15, 40.85 KB) / 下載次數(shù) 6788
http://fudaan.com/bbs/attachment.php?aid=2996&k=d77c63e1bd9b9734072abdcb3ac22c48&t=1745015838&sid=oXQz7x
圖片附件:
圖片21.jpg
(2013-5-20 23:15, 37.21 KB) / 下載次數(shù) 6735
http://fudaan.com/bbs/attachment.php?aid=2997&k=75105b4588073a833ea786b1177e49e8&t=1745015838&sid=oXQz7x
圖片附件:
圖片22.jpg
(2013-5-20 23:15, 26.75 KB) / 下載次數(shù) 6695
http://fudaan.com/bbs/attachment.php?aid=2998&k=d719aeca1a592ad0aa3948b4b0b4af87&t=1745015838&sid=oXQz7x
圖片附件:
圖片23.jpg
(2013-5-20 23:15, 28.56 KB) / 下載次數(shù) 6728
http://fudaan.com/bbs/attachment.php?aid=2999&k=af0869b5c8b1a08538283cdd56eba9df&t=1745015838&sid=oXQz7x
歡迎光臨 WDlinux官方論壇 (http://fudaan.com/bbs/)
Powered by Discuz! 7.2