《實(shí)用操作系統(tǒng)》復(fù)習(xí)要點(diǎn)
《《實(shí)用操作系統(tǒng)》復(fù)習(xí)要點(diǎn)》由會(huì)員分享,可在線閱讀,更多相關(guān)《《實(shí)用操作系統(tǒng)》復(fù)習(xí)要點(diǎn)(12頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、2011 年《實(shí)用操作系統(tǒng)》期末考試復(fù)習(xí)要點(diǎn) 一、考試題型說明 考試題型包括以下幾部分: 1、名詞解釋(共 5 題,每題 4 分,計(jì) 20 分) 2、計(jì)算題(共 1題,每題 15 分,計(jì) 15分) 3、簡答題(共 5題,每題 6分,計(jì) 30 分) 4、分析題(共 1 題,每題 10分,計(jì) 10分) 5、程序分析題(共 1題,每題 15 分,計(jì) 15 分) 6、程序設(shè)計(jì)題(共 1 題,每題 10 分,計(jì) 10 分) 二、復(fù)習(xí)說明 本次考試側(cè)重考察基本知識(shí)的掌握情況,所有考試內(nèi)容都來自課程 ppt 。大家在復(fù)習(xí)時(shí),要 結(jié)合復(fù)習(xí)提綱,多看 ppt ,但不需要死記硬背。另外,講義
2、中的程序代碼非常多,這些代碼 主要用作大家課后理解相關(guān)實(shí)現(xiàn)機(jī)制的補(bǔ)充材料。 因此, 大家沒有必要去仔細(xì)研讀代碼。 需 要提醒的是,在試卷中, 也會(huì)給出一段程序代碼, 需要大家說明其中的實(shí)現(xiàn)機(jī)制。 試卷中這 部分代碼也僅僅是用于輔助大家去回想 ppt 中的相關(guān)內(nèi)容,而不是考察大家對(duì)該代碼細(xì)節(jié) (每個(gè)語句)的理解。 名詞解釋要求大家能根據(jù)自己的理解、用簡單的言語解釋相關(guān)概念。 計(jì)算題要求大家能結(jié)合相關(guān)知識(shí), 給出計(jì)算結(jié)果。 評(píng)分時(shí)按步計(jì)算, 請大家務(wù)必寫出求解過 程。 簡單題希望大家通過對(duì)比分析、根據(jù)自己的理解扼要說明相關(guān)概念及實(shí)現(xiàn)機(jī)制的特點(diǎn)。 分析題要求大家根據(jù)題目要求,構(gòu)造出內(nèi)核相關(guān)算法
3、的實(shí)現(xiàn)機(jī)制示意圖。 程序分析題要求大家結(jié)合一段程序代碼,扼要說明內(nèi)核相關(guān)機(jī)制的實(shí)現(xiàn)過程。 程序設(shè)計(jì)題要求大家根據(jù)任務(wù)要求,寫出相應(yīng)代碼。該題與其他課程的程序設(shè)計(jì)要求類似, 但評(píng)分時(shí)不會(huì)過分在意語法方面的細(xì)節(jié)錯(cuò)誤。 三、復(fù)習(xí)提綱 (一)第一講 Linux 系統(tǒng)分析基礎(chǔ) 1 、單內(nèi)核、微內(nèi)核的概念 ? 微內(nèi)核: 只提供基礎(chǔ)功能,其他功能通過服務(wù)實(shí)現(xiàn) ? 微內(nèi)核功能被劃分為多個(gè)獨(dú)立過程,每個(gè)過程稱為服務(wù)器 單內(nèi)核:(Monolithic kernel ) 單內(nèi)核是一個(gè)很大的進(jìn)程。它的內(nèi)部又可以被分為若干 模塊(或者是層次或其它) 。但是在運(yùn)行的時(shí)候,它是一個(gè)獨(dú)立的二進(jìn)制大映象。其模塊間 的
4、通訊是通過直接調(diào)用其它模塊中的函數(shù)實(shí)現(xiàn) 2、 特權(quán)指令的概念及 Linux 中特權(quán)等級(jí)的分類 特權(quán)指令:指具有特殊權(quán)限的指令。這類指令只用于操作系統(tǒng)或其他系統(tǒng)軟件, 一般不直接提供給用戶使用。 在多用戶、 多任務(wù)的計(jì)算機(jī)系統(tǒng)中特權(quán)指令必不可少。 它主要用于系統(tǒng)資源的分配和管理,包括改變系統(tǒng)工作方式,檢測用戶的訪問權(quán)限, 修改虛擬存儲(chǔ)器管理的段表、頁表,完成任務(wù)的創(chuàng)建和切換等。 3、 Makefile的作用、Makefile的編寫方法、Makefile中的常用預(yù)定義變量、 偽目標(biāo).PHONY 的作用及使用方法 ? Makefile 的作用: 采用 GNU 編譯工具對(duì) .config 中
5、的源文件列表編譯 ? 完成內(nèi)核文件的配置、依賴關(guān)系及模塊的生成,隨后調(diào)用 Rules.make 編譯 ? Rules.make定義所有Makefile共用的編譯規(guī)則 Makefile支持的 make命令 ? make mrproper :檢查.o文件及文件依賴關(guān)系的正確性 ? make config :配置內(nèi)核并生成配置文件 ? make dep :根據(jù)配置文件創(chuàng)建相應(yīng)的依賴關(guān)系樹 ? make clean :清除舊版本的目標(biāo)文件 ? make zImage :編譯并用 gzip壓縮成1MB以下的內(nèi)核 未壓縮的文件是 vml in uz ? make bzImage :編譯并用
6、 gzip壓縮成1MB以上的內(nèi)核 ? make modules :編譯模塊 ? make modules_i nstall :安裝模塊 ? depmod ~a:生成模塊之間的依賴關(guān)系 ? makefile的編法:缺省情況下從 Makefile中的第一個(gè)目標(biāo)開始執(zhí)行 ? 執(zhí)行過程類似一次深度優(yōu)先遍歷 sum: main .0 sum.o gcc -o sum main .0 sum.o mai n.o: mai n.c sum.h gcc -c mai n.c sum.o: sum.c sum.h gcc -c sum.c (danteng ) ? Makefile中的常用
7、預(yù)定義變量:make可直接使用許多預(yù)定義的變量 ? AR:歸檔維護(hù)程序的名稱,默認(rèn)值為 ar ? ARFLAGS歸檔維護(hù)程序的選項(xiàng) ? AS:匯編程序的名稱,默認(rèn)值為 as ? ASFLAGS匯編程序的選項(xiàng) ? CC C編譯器的名稱,默認(rèn)值為 cc ? CFLAGS C編譯器的選項(xiàng) ? CXX C++編譯器的名稱,默認(rèn)值為 g++ ? CPPFLAGS C預(yù)編譯的選項(xiàng) ? ? 系統(tǒng)環(huán)境變量的處理 ? make過程中被解釋成 make變量 偽目標(biāo).PHONY勺作用及使用方法:(./PHONY來顯示的指名一個(gè)目標(biāo)是偽目標(biāo),有兩 個(gè)作用一個(gè)是改善性能,另外一個(gè)是來避免沖
8、突。 ) ? .phony是一個(gè)特殊工作目標(biāo) ? 用來指定一個(gè)假想的工作目標(biāo),即其后并不是一個(gè)實(shí)際文件, 且肯定要視為未更新 ? 使用場景 ? 避免與同名文件沖突、改善性能 ? 前例解決方法:.PHONY ? .PHONY: clea n ? clea n: ? $rm *.o exec_file ? make不檢查是否存在有文件名與依賴體中的一個(gè)名字相匹配的 文件,而直接執(zhí)行與之相應(yīng)的命令 ?方法:PHON目標(biāo)也可以有依賴關(guān)系 ? 使用場景 ? 當(dāng)一個(gè)目錄中有多個(gè)程序,將其放在一個(gè)makefile中會(huì)更方便 ? 因?yàn)槿笔∧繕?biāo)是makefile中的第一個(gè)目標(biāo),通常將
9、這個(gè) phony 目標(biāo)叫做"all",其依賴文件為各個(gè)程序 ? all : prog1 prog2 prog3 .PHONY: all prog1 : prog1.o utils.o cc -o prog1 prog1.o utils.o prog2 : prog2.o cc -o prog2 prog2.o prog3 : prog3.o sort.o utils.o cc -o prog3 prog3.o sort.o utils.o 4、Linux函數(shù)調(diào)用過程中堆棧結(jié)構(gòu)動(dòng)態(tài)變化過程 p2的執(zhí)行過程中又調(diào)用了函數(shù) p1 改進(jìn)程序中,main函數(shù)中調(diào)用了函數(shù) p2,而
10、在 oin eip—? pin pd P2 du? ■ 哪一 eip 一 pi(c) ? 4 eip 一 eip 一 eip— r ■ eip—> ■ main P2(M) ? ? * *-mai n 程癢的代碼段 OL ■ 電越 \ plttfs eip Q邱 c )—— p2堆棧 eip esf V 1 , mwiri堆桟 堆棧 (二)第二講進(jìn)程與線程 ? 1、Linux中進(jìn)程、線程及內(nèi)核線程的區(qū)別, 及其
11、與其他操作系統(tǒng)在實(shí)現(xiàn)機(jī)制上的 主要區(qū)別。在Linux系統(tǒng)中如何區(qū)別內(nèi)核線程與進(jìn)程。 ?(內(nèi)核線程)獨(dú)立運(yùn)行在內(nèi)核空間的標(biāo)準(zhǔn)進(jìn)程,支持內(nèi)核在后臺(tái)執(zhí)行一些操作 ? 刷新磁盤高速緩存 ? 交換出不用的頁框 ?維護(hù)網(wǎng)絡(luò)鏈接等待 ? 與普通進(jìn)程的區(qū)別 ? 只運(yùn)行在內(nèi)核態(tài),內(nèi)核線程沒有獨(dú)立的地址空間(mm指針被設(shè)置為NULL) ? 每個(gè)內(nèi)核線程執(zhí)行一個(gè)單獨(dú)的內(nèi)核函數(shù) ? 只使用大于 PAGE_OFFSE的線性地址空間 ? 進(jìn)程與線程的區(qū)別: ?從形態(tài)角度 ? 一個(gè)進(jìn)程可包含一個(gè)或多個(gè)線程 ? 從調(diào)度角度 ?進(jìn)程是資源分配的基本單位 ?線程是處理器調(diào)度的獨(dú)立單位 ?從虛擬化角度
12、 ?進(jìn)程提供兩種虛擬機(jī)制 ? 虛擬處理器:進(jìn)程獨(dú)享處理器的假象 ?虛擬內(nèi)存:進(jìn)程擁有系統(tǒng)內(nèi)所有內(nèi)存資源的假象 ? 線程之間可共享虛擬內(nèi)存,但各自擁有獨(dú)立虛擬處理器 ? 對(duì)Linux系統(tǒng)而言,線程只是一種特殊的進(jìn)程! ? 內(nèi)核態(tài)(亦稱核心態(tài)或系統(tǒng)態(tài)) ? 可執(zhí)行特權(quán)指令,訪問任意物理地址(包括系統(tǒng)空間) ?用戶態(tài) ?只能在對(duì)應(yīng)級(jí)別允許的范圍內(nèi)活動(dòng)(用戶空間) 2、Linux 2.4 與Linux 2.6 系統(tǒng)堆棧結(jié)構(gòu)的主要區(qū)別。 Linux 2.4進(jìn)程系統(tǒng)堆棧結(jié)構(gòu): Linux系統(tǒng)進(jìn)程個(gè)數(shù)限制 所有進(jìn)程的PCB及系統(tǒng)堆棧占用空間W 1/2的物理內(nèi)存總和 \內(nèi)樓堆袪
13、
進(jìn)鶴描逹符(均」K}
"e眾前兇祁地址
Linux 2.6進(jìn)程系統(tǒng)堆棧結(jié)構(gòu):
?進(jìn)程描述符由slab分配器動(dòng)態(tài)生成
? 棧底用新結(jié)構(gòu)struct thread」nfo,指向進(jìn)程描述符
<,100% + $
兩個(gè)連續(xù)物理頁百
(約&K)
Q
1
F ;
Mruui thread iufu
kirr?r^[lx 14、鏈表
? 表頭僅有一個(gè)指向首節(jié)點(diǎn)的指針,而沒有指向尾節(jié)點(diǎn)的指針
? 在可能是海量的HASH表中存儲(chǔ)的表頭就能減少一半的空間消耗
? 讀拷貝更新(rcu)
? 以“ _rcu結(jié)尾的宏
4、fork()的vfork()主要差別及創(chuàng)建進(jìn)程/線程的主要方法(常用函數(shù))。
asrriHnkage int Sy$_fork(strnet pt_regs regsi
< -
r vtUin do_(oi k(SIGCHLD, neys.esp., &館9時(shí) >);
Fork:
? 說明
? 子進(jìn)程完全復(fù)制父進(jìn)程的資源
? 子進(jìn)程的執(zhí)行獨(dú)立于父進(jìn)程
? 進(jìn)程間數(shù)據(jù)共享需通過專門的 15、進(jìn)程間通信機(jī)制來實(shí)現(xiàn)
? 返回值
? 父進(jìn)程執(zhí)行fork()返回子進(jìn)程的 PID值
? 子進(jìn)程執(zhí)行fork()返回0
? 調(diào)用失敗返回-1
齊niliM旳好 int SyS_VfOrkistmct pt_regs ief?) {
retufii(lo_rorlc(clone.vfqrk I clohe_vm | siGCHLD, 0);
Vfork:
? vfork()創(chuàng)建的子進(jìn)程與父進(jìn)程共享地址空間
? 子進(jìn)程作為父進(jìn)程的一個(gè)單獨(dú)線程在其地址空間運(yùn)行
? 子進(jìn)程從父進(jìn)程繼承控制終端、信號(hào)標(biāo)志位、可訪問的主存區(qū)、環(huán)
境變量和其他資源分配
? 子進(jìn)程對(duì)虛擬空間任何數(shù)據(jù)的修 16、改都可為父進(jìn)程所見
? 父進(jìn)程將被阻塞,直到子進(jìn)程調(diào)用 exeeve()或exit()
? 與fork()的關(guān)系
? 功能相同,但vfork()但不拷貝父進(jìn)程的頁表項(xiàng)
? 子進(jìn)程只執(zhí)行exee()時(shí),vfork()為首選
?創(chuàng)建進(jìn)程/線程的主要方法(常用函數(shù)):
? Linux進(jìn)程創(chuàng)建方法:
?在終端輸入命令,由shell進(jìn)程創(chuàng)建一個(gè)新進(jìn)程
?進(jìn)程創(chuàng)建函數(shù)
? pid_t fork(void);
? pid_t vfork(void);
? int cion e(i nt (*fn)(void * arg), void *staek, int flags, void * 17、arg) ;
? 創(chuàng)建輕量級(jí)線程
三函數(shù)都調(diào)用同一內(nèi)核函數(shù) do_fork( ) [/kernel/fork.c]
? Linux線程的創(chuàng)建:
? 函數(shù)調(diào)用形式
? int cion e(i nt (*fn)(void * arg), void *staek, int flags, void * arg);
? int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rt n)(void),
void *restrict arg);
? tid 18、p:新線程的線程描述表指針
? attr:為新線程定義不同屬性(如棧尺寸)默認(rèn)為NULL
? 第三個(gè)和第四個(gè)參數(shù)指定執(zhí)行的函數(shù) start_rt n 和傳遞給函數(shù)
的參數(shù)arg
? 兩者區(qū)別
? cione()創(chuàng)建內(nèi)核支持的用戶線程,對(duì)內(nèi)核可見且由內(nèi)核調(diào)度
? pthread_create()由基于POSIX標(biāo)準(zhǔn)的線程庫創(chuàng)建的用戶線程
?但在 Linux 里,pthread_create()最終調(diào)用 clone()實(shí)現(xiàn)
5、Linux線程同步、條件變量相關(guān)函數(shù)的使用方法。
(三) 第三講進(jìn)程調(diào)度
1、Linux 2.4與Linux 2.6調(diào)度體系結(jié)構(gòu)的主要區(qū)別
(2.6) 19、
一一二?■二 ~n
二一二 rr--r
-二二二二
I *試述LinUK 14 [j Linux 2j6逛程詢度休乘肺梅妁主耍差別.并灘旌Limx 度算
覽結(jié)構(gòu)圧譏fr機(jī)制.
1) Limi也4對(duì)有嵐第進(jìn)稈存命一個(gè)a nmqume 1憂M為走頭的個(gè)hi迸榨隊(duì)列中-湘地餐 從屮選軀最込訐調(diào)度的輦程探入運(yùn)杠,整牛臥列山 午讀/■弓口擬頂禺滬.實(shí)于處逼囂可以 丿[忡
2) Liniix2.6吩毎亡址理曙g瀚個(gè)數(shù)塑,活動(dòng)就堵進(jìn)程只列蛟組和不活砥就緒圧程*?1|敷 組.如果一個(gè)進(jìn)桿體耗完丁它的“時(shí)何片二就進(jìn)人屮話躍就緒雄科數(shù)卅的相應(yīng)趴列的陸尾* 出所行的趟觀眾“讓皐"「它的細(xì)何片交挑 20、話氐 汁謂臥就堵迸和隊(duì)列禺隊(duì)因此. 不弼耍仟:舸其他的開錯(cuò)?
至委蓋別卜Linux U的調(diào)度佯歸墓丁共亭至局馭列?HHitST CXn^開轎足桂性增 校的“陽山敗”禪牛處理曙屛百it立的就幅進(jìn)程釀列,薦牛處理罌可以:rt%巨打碉鹿很 序來挑選進(jìn)稈運(yùn)廳,平同處理器上的進(jìn)程可創(chuàng)完全ftfftt休醍*喚解和上下文臧?
0(訂調(diào)度算池皓構(gòu)|晦個(gè)敷址中有[如牛91緒建程隊(duì)列51呻1*幼毎*臥列對(duì)應(yīng)丁 UU 牛砒蟄的臬一『=通過世圏標(biāo)詁口列狀態(tài)*謂廈時(shí)* dgii fW_ft?t_bit找到第一于水為空
陽駅琳并取亂廿的進(jìn)棍即可.不首駅剤I邛序少牛卿進(jìn)程,挑選就緡程的聽度麻一毘的.
2、Linux 21、 2.4中調(diào)度優(yōu)先級(jí)的設(shè)計(jì)算法。
3、Linux 2.6 如何體現(xiàn)交互進(jìn)程優(yōu)先的? 內(nèi)核有四處對(duì)交互式進(jìn)程的優(yōu)先考慮
a) sleep_avg
i. 交互式進(jìn)程因?yàn)樾菝叽螖?shù)多、時(shí)間長, sleep_avg也會(huì)相對(duì)更大一些
b) interactive_credit
i. 記錄進(jìn)程的交互程度
ii. 判斷進(jìn)程是否是交互式進(jìn)程
c) TASK_INTERACTIVE宏
d) 就緒等待時(shí)間的獎(jiǎng)勵(lì) 對(duì)交互式進(jìn)程的優(yōu)先級(jí)獎(jiǎng)勵(lì) :
? 通過HIGH_CREDIT()累積方式完成獎(jiǎng)勵(lì)
?當(dāng)進(jìn)程從CPU切換下來時(shí),如果是交互式進(jìn)程,則它參與優(yōu)先級(jí)計(jì)算的 運(yùn)行時(shí)間會(huì)比實(shí)際運(yùn)行時(shí)間小,以此獲得 22、較高的優(yōu)先級(jí)
? 交互式進(jìn)程處于 TASK_UNINTERRUPTIBL狀態(tài)下的休眠時(shí)間也會(huì)疊力口
到 sleep_avg 上,從而獲得優(yōu)先級(jí)獎(jiǎng)勵(lì)
4、 Linux 2.4 與 Linux 2.6 中負(fù)載均衡的實(shí)現(xiàn)機(jī)制。
5、 idle 進(jìn)程的概念與作用。
概念:System Idle Process SYSTEM不是一個(gè)真正的進(jìn)程,是核心虛擬出來的,多 任務(wù)操作系統(tǒng)都有的!在沒有可用的進(jìn)程時(shí),系統(tǒng)處于空運(yùn)行狀態(tài),此時(shí)就是 System
Idle Process SYSTEM在運(yùn)行!故它占用 97%CPU時(shí)間,說明你的機(jī)器負(fù)荷很輕!你用
WINZIP解壓一個(gè)大的文件時(shí), 就可看到 23、,System Idle Process SYSTEM 占用 CPU時(shí)間變
化。
作用:就是在 CPU空閑的時(shí)候,發(fā)出一個(gè) IDLE命令,使 CPU掛起(暫時(shí)停止工作) ,
可有效的降低 CPU內(nèi)核的溫度,在操作系統(tǒng)服務(wù)里面,都沒有禁止它的選項(xiàng);默認(rèn)它 是占用除了當(dāng)前應(yīng)用程序所分配的處理器( CPU)百分比之外的所有占用率;一旦應(yīng)用
程序發(fā)出請求,處理器會(huì)立刻響應(yīng)的。
(五) 第五講系統(tǒng)調(diào)用與中斷處理
1、 封裝例程的概念與作用。
作用:屏蔽底層復(fù)雜性 將系統(tǒng)調(diào)用封裝成應(yīng)用程序可直接調(diào)用的函數(shù) (庫函數(shù) )
概念:
2、 系統(tǒng)調(diào)用與中斷在實(shí)現(xiàn)機(jī)制上的異同點(diǎn)。
3、 中斷與異 24、常的主要區(qū)別。
? 中斷(外中斷)
? 異步的,來自處理器之外的中斷信號(hào),在程序執(zhí)行的任何時(shí)候可能出現(xiàn)
? 會(huì)改變處理器執(zhí)行指令的順序
? 通常與CPU芯片內(nèi)部/外部硬件電路產(chǎn)生的電信號(hào)相對(duì)應(yīng)
? 異常(內(nèi)中斷)
?同步的,在(特殊或出錯(cuò))指令執(zhí)行時(shí)由 CPU控制單元產(chǎn)生
? 內(nèi)核為每個(gè)異常提供一個(gè)專門的異常處理程序
? 異常處理程序的執(zhí)行一般依賴于執(zhí)行程序的當(dāng)前現(xiàn)場,不能被屏蔽,一 旦出現(xiàn)應(yīng)立即響應(yīng)并進(jìn)行處理
? 區(qū)別
? 中斷允許嵌套發(fā)生,但異常多數(shù)情況為一重
? 異常處理過程中可能產(chǎn)生中斷,但反之則不會(huì)發(fā)生
“中斷信號(hào) ”通稱這兩種類型的中斷
4、 中斷上下文與 25、進(jìn)程上下文的區(qū)別。
進(jìn)程上下文:所謂的進(jìn)程上下文,就是一個(gè)進(jìn)程在執(zhí)行的時(shí)候,CPU的所有寄存器中的值、 進(jìn)程的狀態(tài)以及堆棧上的內(nèi)容, 當(dāng)內(nèi)核需要切換到另一個(gè)進(jìn)程時(shí), 它需要保存當(dāng)前進(jìn)程的所
有狀態(tài),即保存當(dāng)前進(jìn)程的進(jìn)程上下文,以便再次執(zhí)行該進(jìn)程時(shí),能夠恢復(fù)切換時(shí)的狀態(tài), 繼續(xù)執(zhí)行。
中斷上下文:可以理解為硬件傳遞過來的這些參數(shù)和內(nèi)核需要保存的一些環(huán)境, 主要是被中
斷的進(jìn)程的環(huán)境
區(qū)別:運(yùn)行在進(jìn)程上下文的內(nèi)核代碼是可以被搶占的( Linux2.6支持搶占)。但是一個(gè)中斷
上下文,通常都會(huì)始終占有 CPU (當(dāng)然中斷可以嵌套,但我們一般不這樣做) ,不可以被打
斷。
Linux內(nèi) 26、核工作在進(jìn)程上下文或者中斷上下文。提供系統(tǒng)調(diào)用服務(wù)的內(nèi)核代碼代表發(fā)起系 統(tǒng)調(diào)用的應(yīng)用程序運(yùn)行在進(jìn)程上下文;另一方面,中斷處理程序,異步運(yùn)行在中斷上下文。 中斷上下文和特定進(jìn)程無關(guān)。
5、軟中斷、tasklet及工作隊(duì)列在實(shí)現(xiàn)機(jī)制上的異同點(diǎn)。
軟中斷可以在不同 CPU上同時(shí)運(yùn)行,即使是同類型的軟中斷。 它適合需要快速響應(yīng)
的處理函數(shù),比如網(wǎng)絡(luò)收發(fā)。
tasklet不可以在不同 CPU上同時(shí)運(yùn)行(同類型,不同類型可以同時(shí)運(yùn)行)。實(shí)現(xiàn) 方法:在該tasklet上有個(gè)變量state,調(diào)度時(shí),如果該state不是運(yùn)行狀態(tài),將運(yùn)行, 并且將state設(shè)置為running狀態(tài),這樣其它 CPU不能同 27、時(shí)運(yùn)行該類型 tasklet。避 免了全局變量的鎖要求。
工作隊(duì)列適合需要睡眠的任務(wù), 它將任務(wù)交給一個(gè)內(nèi)核線程 KSoftirq來處理,這個(gè)
內(nèi)核線程和基本進(jìn)程類似,只不過它映射的內(nèi)存空間是內(nèi)核空間。
6、軟中斷調(diào)度機(jī)制。
(六)第六講系統(tǒng)調(diào)用與中斷處理
1、 邏輯地址、線性地址及物理地址的概念。
物理地址:用于內(nèi)存芯片級(jí)的單元尋址,與處理器和 CPU連接的地址總線相對(duì)應(yīng)。
邏輯地址:指的是機(jī)器語言指令中,用來指定一個(gè)操作數(shù)或者是一條指令的地址
線性地址:是邏輯地址到物理地址變換之間的中間層。程序代碼會(huì)產(chǎn)生邏輯地址,或者 說是段中的偏移地址,加上相應(yīng)段的基地址就生成了一個(gè)線性 28、地址
2、 在x86結(jié)構(gòu)中,從邏輯地址到物理地址的轉(zhuǎn)換、計(jì)算過程。
邏輯地址到線性地址的轉(zhuǎn)換:
? 檢查TI確定段描述符位置
? 從段選擇子的index字段計(jì)算段描述符的地址
? 將邏輯地址的偏移量與段描述符 base字段的值相加,得到線性地址
線性地址到邏輯地址的轉(zhuǎn)換:
? 第一步:形成頁表地址
? CR3包含頁目錄的起始地址,用 32位線性地址的最高10位A31?A22作 為頁目錄的頁目錄項(xiàng)的索引, 將其乘以4(每項(xiàng)4個(gè)字節(jié)),與CR3中的頁
目錄的起始地址相加,形成相應(yīng)頁表地址
? 第二步:形成頁面地址
? 從指定地址取出 32 位頁目錄項(xiàng)(頁表起始地址) ,其低 29、12 位為 0
? 用 32 位線性地址的 A21~A12 位作為頁表中的頁面的索引,將其乘以 4 ,
與頁表起始地址相加,形成 32 位頁面地址
? 第三步:形成 32 位物理地址
? 將 A11~A0 作為相對(duì)于頁面地址的偏移量,與 32 位頁面地址相加,得到 物理地址
3、 擴(kuò)展分頁與物理地址擴(kuò)展的概念。
擴(kuò)展分頁: 用于將大段連續(xù)的線性地址轉(zhuǎn)換成相應(yīng)的物理地址
物理地址:PAE只擴(kuò)大物理地址尋址能力,線性地址仍然是 32位長
? 內(nèi)核編程人員用同一線性地址映射不同的 RAM區(qū),PAE可顯著
增加系統(tǒng)中的進(jìn)程數(shù)量
? 只有內(nèi)核可以修改進(jìn)程的頁表, 用戶態(tài)下運(yùn)行的進(jìn)程不 30、能使用大 于4GB的物理地址空間
4、NUMA、管理區(qū)的概念。
4、 伙伴系統(tǒng)的定義、伙伴系統(tǒng)的合并及位圖含義。
伙伴系統(tǒng)的定義:
伙伴的必要條件
a) 大小相同
b) 物理地址連續(xù)
c) 假定伙伴的大小為 b,第一個(gè)伙伴的第一個(gè)頁框的物理地址必須
是2X bx 4K的倍數(shù)
事實(shí)上伙伴是通過對(duì)大塊的物理內(nèi)存劃分獲得的
d) 假如從第 0 個(gè)頁面開始到第 3 個(gè)頁面結(jié)束的內(nèi)存
e) 每次都對(duì)半劃分,那么第一次劃分獲得大小為 2 頁的伙伴
f) 進(jìn)一步劃分,可以獲得大小為 1頁的伙伴,例如0和1, 2和3
伙伴系統(tǒng)的合并及位圖含義:
? 當(dāng)兩個(gè)伙伴都空閑時(shí),則合并成一個(gè) 31、更大的塊
? 該過程一直進(jìn)行,直到找不到可以合并的伙伴為止
? 位圖用來描述伙伴的狀態(tài)
? 一對(duì)伙伴只使用一個(gè)位表示
? 0:伙伴的狀態(tài)一致,此時(shí)要么全空閑,要么全不(或部 分)空閑
如果全空閑,必然被合并 兩種情況下, 對(duì)應(yīng)的塊數(shù)據(jù)結(jié)構(gòu)都不在此 free_area_t 結(jié)構(gòu)中
? 1 :伙伴的狀態(tài)不一致,此時(shí)必然有一個(gè)空閑、一個(gè)不空
閑
表示對(duì)應(yīng)的塊數(shù)據(jù)結(jié)構(gòu)在此 free_area_t 結(jié)構(gòu)的 鏈表中
5、基于伙伴系統(tǒng)實(shí)現(xiàn)對(duì)內(nèi)容的分配與回收的算法。
塊分配函數(shù):__rmqueue(z one, order)
根據(jù)輸入?yún)?shù)order,在相應(yīng)鏈表(管理區(qū)描述符地址zone) 32、中查找連續(xù)的 空閑頁框
返回所分配的第一個(gè)頁框?qū)?yīng)的頁描述符的地址
塊釋放函數(shù): __free_pages_bulk(page, zone, order)
把釋放的頁框插入到伙伴系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)中, 以便以后可以在分配中使用
在這里循環(huán)檢查bitmap確認(rèn)伙伴塊是否空閑,空閑則合并成一個(gè)單獨(dú)的 塊,并把此塊加入到合適的鏈表中
page
I14
4
1 L
P?.g:e
3
』
o1
4
1
■?■ S—
2
5
3
9、10頁面分配馬的示意
內(nèi)存分配的Buddy算法
IL
5
4
12
n
3
gp
―
pa^e
?
2
inap
4
—
1
map
pag?
1
Jr
―>
0
fr ee_are a.[]
……|5
p也舉 pags
訶導(dǎo)頁面釋放潔
7、Slab分配器的概念與作用。
內(nèi)存管理的目標(biāo)是提供一種方法, 為實(shí)現(xiàn)各種目的而在各個(gè)用戶之間實(shí)現(xiàn)內(nèi)存共享。
內(nèi)存管理方法應(yīng)該實(shí)現(xiàn)以下兩個(gè)功能: 一是最小化管理內(nèi)存所需的時(shí)間; 二是最大化用于
般應(yīng)用的可用內(nèi)存(最小化管理開銷) 。
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 川渝旅游日記成都重慶城市介紹推薦景點(diǎn)美食推薦
- XX國有企業(yè)黨委書記個(gè)人述責(zé)述廉報(bào)告及2025年重點(diǎn)工作計(jì)劃
- 世界濕地日濕地的含義及價(jià)值
- 20XX年春節(jié)節(jié)后復(fù)工安全生產(chǎn)培訓(xùn)人到場心到崗
- 大唐女子圖鑒唐朝服飾之美器物之美繪畫之美生活之美
- 節(jié)后開工第一課輕松掌握各要點(diǎn)節(jié)后常見的八大危險(xiǎn)
- 廈門城市旅游介紹廈門景點(diǎn)介紹廈門美食展示
- 節(jié)后開工第一課復(fù)工復(fù)產(chǎn)十注意節(jié)后復(fù)工十檢查
- 傳統(tǒng)文化百善孝為先孝道培訓(xùn)
- 深圳城市旅游介紹景點(diǎn)推薦美食探索
- 節(jié)后復(fù)工安全生產(chǎn)培訓(xùn)勿忘安全本心人人講安全個(gè)個(gè)會(huì)應(yīng)急
- 預(yù)防性維修管理
- 常見閥門類型及特點(diǎn)
- 設(shè)備預(yù)防性維修
- 2.乳化液泵工理論考試試題含答案