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