操作系統(tǒng)重點(diǎn)總結(jié)_第1頁
操作系統(tǒng)重點(diǎn)總結(jié)_第2頁
操作系統(tǒng)重點(diǎn)總結(jié)_第3頁
操作系統(tǒng)重點(diǎn)總結(jié)_第4頁
操作系統(tǒng)重點(diǎn)總結(jié)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 進(jìn)程、輕量級(jí)進(jìn)程和線程的概念以及它們的區(qū)別:進(jìn)程(Process):進(jìn)程是程序執(zhí)行時(shí)的一個(gè)實(shí)例。可以看作是充分描述程序已經(jīng)執(zhí)行到何種程度的數(shù)據(jù)結(jié)構(gòu)的匯集。進(jìn)程的目的是擔(dān)當(dāng)分配系統(tǒng)資源CPU時(shí)間、內(nèi)存等)的實(shí)體。進(jìn)程是資源管理的最小單元,能被內(nèi)核單獨(dú)調(diào)度。?線程(Thread):線程代表進(jìn)程的一個(gè)執(zhí)行流。是操作系統(tǒng)能夠進(jìn)行運(yùn)算調(diào)度的最小單位。它被包含在進(jìn)程之中,是進(jìn)程中的實(shí)際運(yùn)作單位。一條線程指的是進(jìn)程中一個(gè)單一順序的控制流,一個(gè)進(jìn)程中可以并發(fā)多個(gè)線程,每條線程并行執(zhí)行不同的任務(wù)。線程不能被內(nèi)核單獨(dú)調(diào)度。輕量級(jí)進(jìn)程(LightwetghtProcess):輕量級(jí)進(jìn)程(LWP)是一種實(shí)現(xiàn)多任務(wù)的方法。與普通進(jìn)程相比,LWP與其他進(jìn)程共享所有(或大部分)它的邏輯地址空間和系統(tǒng)資源;與線程相比,LWP有它自己的進(jìn)程標(biāo)識(shí)符,并和其他進(jìn)程有著父子關(guān)系;這是和類Unix操作系統(tǒng)的系統(tǒng)調(diào)用vfork()生成的進(jìn)程一樣的。另外,線程既可由應(yīng)用程序管理,又可由內(nèi)核管理,而LWP只能由內(nèi)核管理并像普通進(jìn)程一樣被調(diào)度。2、 什么導(dǎo)致操作系統(tǒng)不實(shí)時(shí)?Linux操作系統(tǒng)存在關(guān)中斷機(jī)制。導(dǎo)致的后果是:如果低優(yōu)先級(jí)的進(jìn)程由于進(jìn)入臨界去或者為了盡快完成人物而關(guān)閉了中斷,那么即使有高優(yōu)先級(jí)實(shí)時(shí)進(jìn)程的中斷發(fā)生系統(tǒng)也無法響應(yīng)Linux操作系統(tǒng)的內(nèi)核是禁止搶占的。一個(gè)進(jìn)程一旦進(jìn)入內(nèi)核,它將運(yùn)行直到系統(tǒng)調(diào)用結(jié)束或進(jìn)程被阻塞。這時(shí)候一個(gè)高優(yōu)先級(jí)的實(shí)時(shí)進(jìn)程只能等待。Linux使用的是基于優(yōu)先級(jí)的任務(wù)調(diào)度策略。這種調(diào)度策略不能保證實(shí)時(shí)任務(wù)按時(shí)完成。Linux雖然給實(shí)時(shí)進(jìn)程提供了較高的優(yōu)先級(jí),但是,并沒有加入時(shí)間限制。其他方面:Linux利用交換空間然進(jìn)程運(yùn)行在一個(gè)比實(shí)際內(nèi)存大的虛擬內(nèi)存空間中。當(dāng)進(jìn)程訪問的虛擬內(nèi)存的內(nèi)容在交換空間里時(shí),Linux就要把在交換空間里的頁面交換到實(shí)際的內(nèi)存中,而這段時(shí)間是不可預(yù)測(cè)的,造成了實(shí)時(shí)響應(yīng)時(shí)間的不確定性。3、 tast_struct類型結(jié)構(gòu)(進(jìn)程描述符就是這種結(jié)構(gòu)).其中,thread_info:描述進(jìn)程的基本信息;mm_struct:指向內(nèi)存區(qū)描述符的指針;tty_struct:描述與進(jìn)程相關(guān)的tty;fs_struct:當(dāng)前目錄;files_struct:指向文件描述符的指針;signal_struct:所接收的信號(hào)4、異常、中斷中斷通常分為同步(synchronous)中斷和異步(asynchronous)中斷。同步中斷:是指當(dāng)程序執(zhí)行時(shí)由CPU控制單元產(chǎn)生的,之所以成為同步,是因?yàn)橹挥性谝粭l指令終止執(zhí)行后CPU才會(huì)發(fā)出中斷。?異步中斷:是由其他硬件設(shè)備按照CPU時(shí)鐘信號(hào)隨機(jī)產(chǎn)生的。附:同步中斷也稱為異常(exception)、異步中斷也稱為中斷(interrupt)中斷和異常的分類:中斷分為:可屏蔽中斷、非屏蔽中斷。異常分為:處理器探測(cè)到的異常、故障(錯(cuò)誤、缺頁)、陷阱(主要用途是調(diào)試程序)、異常中止(通常是出現(xiàn)硬件或系統(tǒng)表的嚴(yán)重錯(cuò)誤X編程異常(通常是編程者發(fā)出請(qǐng)求時(shí)發(fā)生,一般是由int或int3指令或into、bound指令觸發(fā))中斷上半部和中斷下半部中斷處理一般分為兩個(gè)部分,中斷處理程序是上半部:接收到一個(gè)中斷就立即執(zhí)行,但只做有嚴(yán)格時(shí)限的工作,這些工作都是在所有中斷被禁止的情況下完成的。能夠被允許稍后完成的工作被推遲到下半部去。通常情況下,下半部會(huì)在中斷處理程序返回時(shí)立即執(zhí)行。下半部具體放到以后的什么時(shí)候去做呢?下半部并不需要指明一個(gè)確切時(shí)間,只要把這些任務(wù)推遲一點(diǎn),讓他們?cè)谙到y(tǒng)不太繁忙并且中斷恢復(fù)后執(zhí)行就可以了。通常下半部在中斷處理程序一返回就會(huì)馬上執(zhí)行。下半部執(zhí)行的關(guān)鍵在于當(dāng)它們運(yùn)行的時(shí)候,允許響應(yīng)所有中斷。5、同步訪問內(nèi)核數(shù)據(jù)結(jié)構(gòu)(保護(hù)內(nèi)核控制路徑訪問的數(shù)據(jù)結(jié)構(gòu))訪問數(shù)據(jù)結(jié)構(gòu)的內(nèi)核控制路徑單處理器保護(hù)多處理器進(jìn)一步保護(hù)異常信號(hào)量無中斷本地中斷禁止自旋鎖可延遲函數(shù)無無或自旋鎖異常與中斷本地中斷禁止自旋鎖異常與可延遲函數(shù)本地軟中斷禁止自旋鎖中斷與可延遲函數(shù)本地中斷禁止自旋鎖異常、中斷與可延遲函數(shù)本地中斷禁止自旋鎖6、進(jìn)程切換>通過一個(gè)進(jìn)程切換保留對(duì)進(jìn)程C的引用(示例圖)對(duì)進(jìn)程切換圖的理解以及解釋我們假定prev指向被替換進(jìn)程的描述符;而next指向被激活進(jìn)程的描述符;last是輸出參數(shù)表示宏把進(jìn)程C的描述符地址寫在內(nèi)存的什么位置。在進(jìn)程切換之前,宏把第一個(gè)輸入?yún)?shù)prev表示的變量的內(nèi)容存入存入CPU的eax寄存器。在完成進(jìn)程切換,A已經(jīng)恢復(fù)執(zhí)行時(shí),宏把CPU的eax寄存器的內(nèi)容寫入由第三個(gè)輸出函數(shù)-last所指示的A在內(nèi)存中的位置。在schedule()執(zhí)行過程中,參數(shù)last指向A的局部變量prev,所以prev被C的地址覆蓋。進(jìn)程切換步驟或由兩部分組成?切換頁全局目錄以安裝一個(gè)新的地址空間切換內(nèi)核態(tài)堆棧和硬件上下文,因?yàn)橛布舷挛奶峁┝藘?nèi)核執(zhí)行新進(jìn)程所需要的所有信息,包含CPU寄存器。7、mm_struct(內(nèi)存描述符所使用的數(shù)據(jù)結(jié)構(gòu)類型)其中,mm_cout:表示主使用計(jì)數(shù)器;map_count:表示線性區(qū)個(gè)數(shù);mmap_sem:表示線性區(qū)的讀/寫信號(hào)量;pgd:指向頁全局目錄Linux通過類型為vm_area_struct的對(duì)象實(shí)現(xiàn)線性區(qū),其中vm_start表示線性區(qū)內(nèi)的第一個(gè)線性地址;vm_end表示線性區(qū)之后的第一個(gè)線性地址;vm_ops表示指向線性區(qū)的方法;vm_next表示進(jìn)程鏈表中的下一個(gè)線性區(qū)。其中vm_ops字段指向vm_operations_struct數(shù)據(jù)結(jié)構(gòu),該結(jié)構(gòu)存放的是線性區(qū)的方法。分別是:open(當(dāng)把線性區(qū)增加到進(jìn)程所擁有的線性區(qū)的集合時(shí)調(diào)用、close(當(dāng)把進(jìn)程所擁有的線性區(qū)集合刪除線性區(qū)時(shí)調(diào)用)、nopage(當(dāng)程序視圖訪問RAM中不存在的一個(gè)頁,但該頁的線性地址屬于線性區(qū)時(shí),由缺頁異常處理程序調(diào)用)8、缺頁異常處理seneaSI氐GY[toesItiejtiesLtypernatcF*ui&memoryregionaccessrigits?UOKthpaddresspr?p5sddrps!DKiiheeiwepiwi

occurintherhim袒Ltyjldiimy

jIlMMEhpwV:-|ll'lLMI|

州Irhe?。↘€5§.W3虹就”InI■in-'lnQMlAndpaging此ncomigFnwQrywi1W55;KJIMMgseneaSI氐GY[toesItiejtiesLtypernatcF*ui&memoryregionaccessrigits?UOKthpaddresspr?p5sddrps!DKiiheeiwepiwi

occurintherhim袒Ltyjldiimy

jIlMMEhpwV:-|ll'lLMI|

州Irhe?。↘€5§.W3虹就”InI■in-'lnQMlAndpaging此ncomigFnwQrywi1W55;KJIMMgI.3pi<-l-lAwcminUserModeBr0aniw伊<sd詁ScrENUtMk*H'friJinJl1>iriinqmndl柘ICopyOnVMileAddieuInjirmorym:||onAiwaIBkflF1l?I^O'\ 1。山1?1加d「m「k^ullcic+iiilt—_"*】Fgood_areaWih-jnocontextdn>知K^nuXpjqi?i-Hikemiyibup\ke*<reltfii&ad,F(xiàn)Linux缺頁(PageFault)異常處理必須區(qū)分以下兩種情況:由變成錯(cuò)誤引起的異常;由引用屬于進(jìn)程地址空間但還尚未分配物理頁框的頁所引起的異常。線性區(qū)描述符可以讓缺頁異常處理程度非常有效地完成它的工作。do_page_fault()函數(shù)是缺頁中斷服務(wù)程序,它把缺頁的線性地址和當(dāng)前進(jìn)程的線性區(qū)相比較,然后根據(jù)上圖所

示的方案處理這個(gè)異常do_page_fault()函數(shù)的第一步是讀取引起缺頁的線性地址。當(dāng)異常發(fā)生時(shí),CPU控制單元把這個(gè)值存放在cr2控制寄存器中。接下來缺頁處理程序檢查異常發(fā)生時(shí)是否內(nèi)核正在執(zhí)行一些關(guān)鍵例程或正在運(yùn)行內(nèi)核程序。假定沒有發(fā)生以上情況,則函數(shù)檢查進(jìn)程所擁有的線性區(qū)以決定引起缺頁的線性地址是否包含在進(jìn)程的地址空間中,為此必須獲得進(jìn)程的mmap_sem讀寫信號(hào)量,讀取后do_page_fault()函數(shù)開始搜索錯(cuò)誤線性地址所在的線性區(qū)。如果address不屬于進(jìn)程的地址空間,那么do_page_fault()函數(shù)繼續(xù)執(zhí)行bad_area標(biāo)記處的語句;如果address地址屬于進(jìn)程的地址空間,則do_page_fault()函數(shù)轉(zhuǎn)到good_area標(biāo)記處的語句執(zhí)行。8、內(nèi)核同步技術(shù)flCPU本J&TPU木:地CPU所?仃CPULinux內(nèi)適用范圍描述宅了操作對(duì)一個(gè)計(jì)數(shù)搖原了地"讀一修改一寫X的指所有CFU卬iTjCPU禁止木地低中flCPU本J&TPU木:地CPU所?仃CPULinux內(nèi)適用范圍描述宅了操作對(duì)一個(gè)計(jì)數(shù)搖原了地"讀一修改一寫X的指所有CFU卬iTjCPU禁止木地低中斷禁止本CPUI:的數(shù)中新處理保此指令順序不被改變自旋鉞加鎖時(shí)忙留禁止本CPU1-.白中斷處廿禁止所有CPU上的中斷和救中斷處迎內(nèi)存屏障加鎖時(shí)阻寒等待(睡眠)禁止本地中斷令局禁止中斷struciT0CHf日」rry[hd|9、虛擬文件系統(tǒng)(fs_structstruciT0CHf日」rry[hd|9、虛擬文件系統(tǒng)(fs_struct結(jié)構(gòu))Ucniry XpuodcoperaciS&ftETlt的imdctieintry進(jìn)程間廣曲日*的inodeLfcntrylklej>_0peniTicnisFilesAssociatedwithaProcessFs__struc結(jié)構(gòu)目的:每個(gè)進(jìn)程都有它自己當(dāng)前的工作目錄和它自己的根目錄。這是內(nèi)核用來表示進(jìn)程與文件系

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論