




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 進程、輕量級進程和線程的概念以及它們的區別:進程(Process):進程是程序執行時的一個實例。可以看作是充分描述程序已經執行到何種程度的數據結構的匯集。進程的目的是擔當分配系統資源CPU時間、內存等)的實體。進程是資源管理的最小單元,能被內核單獨調度。?線程(Thread):線程代表進程的一個執行流。是操作系統能夠進行運算調度的最小單位。它被包含在進程之中,是進程中的實際運作單位。一條線程指的是進程中一個單一順序的控制流,一個進程中可以并發多個線程,每條線程并行執行不同的任務。線程不能被內核單獨調度。輕量級進程(LightwetghtProcess):輕量級進程(LWP)是一種實現多任務的方法。與普通進程相比,LWP與其他進程共享所有(或大部分)它的邏輯地址空間和系統資源;與線程相比,LWP有它自己的進程標識符,并和其他進程有著父子關系;這是和類Unix操作系統的系統調用vfork()生成的進程一樣的。另外,線程既可由應用程序管理,又可由內核管理,而LWP只能由內核管理并像普通進程一樣被調度。2、 什么導致操作系統不實時?Linux操作系統存在關中斷機制。導致的后果是:如果低優先級的進程由于進入臨界去或者為了盡快完成人物而關閉了中斷,那么即使有高優先級實時進程的中斷發生系統也無法響應Linux操作系統的內核是禁止搶占的。一個進程一旦進入內核,它將運行直到系統調用結束或進程被阻塞。這時候一個高優先級的實時進程只能等待。Linux使用的是基于優先級的任務調度策略。這種調度策略不能保證實時任務按時完成。Linux雖然給實時進程提供了較高的優先級,但是,并沒有加入時間限制。其他方面:Linux利用交換空間然進程運行在一個比實際內存大的虛擬內存空間中。當進程訪問的虛擬內存的內容在交換空間里時,Linux就要把在交換空間里的頁面交換到實際的內存中,而這段時間是不可預測的,造成了實時響應時間的不確定性。3、 tast_struct類型結構(進程描述符就是這種結構).其中,thread_info:描述進程的基本信息;mm_struct:指向內存區描述符的指針;tty_struct:描述與進程相關的tty;fs_struct:當前目錄;files_struct:指向文件描述符的指針;signal_struct:所接收的信號4、異常、中斷中斷通常分為同步(synchronous)中斷和異步(asynchronous)中斷。同步中斷:是指當程序執行時由CPU控制單元產生的,之所以成為同步,是因為只有在一條指令終止執行后CPU才會發出中斷。?異步中斷:是由其他硬件設備按照CPU時鐘信號隨機產生的。附:同步中斷也稱為異常(exception)、異步中斷也稱為中斷(interrupt)中斷和異常的分類:中斷分為:可屏蔽中斷、非屏蔽中斷。異常分為:處理器探測到的異常、故障(錯誤、缺頁)、陷阱(主要用途是調試程序)、異常中止(通常是出現硬件或系統表的嚴重錯誤X編程異常(通常是編程者發出請求時發生,一般是由int或int3指令或into、bound指令觸發)中斷上半部和中斷下半部中斷處理一般分為兩個部分,中斷處理程序是上半部:接收到一個中斷就立即執行,但只做有嚴格時限的工作,這些工作都是在所有中斷被禁止的情況下完成的。能夠被允許稍后完成的工作被推遲到下半部去。通常情況下,下半部會在中斷處理程序返回時立即執行。下半部具體放到以后的什么時候去做呢?下半部并不需要指明一個確切時間,只要把這些任務推遲一點,讓他們在系統不太繁忙并且中斷恢復后執行就可以了。通常下半部在中斷處理程序一返回就會馬上執行。下半部執行的關鍵在于當它們運行的時候,允許響應所有中斷。5、同步訪問內核數據結構(保護內核控制路徑訪問的數據結構)訪問數據結構的內核控制路徑單處理器保護多處理器進一步保護異常信號量無中斷本地中斷禁止自旋鎖可延遲函數無無或自旋鎖異常與中斷本地中斷禁止自旋鎖異常與可延遲函數本地軟中斷禁止自旋鎖中斷與可延遲函數本地中斷禁止自旋鎖異常、中斷與可延遲函數本地中斷禁止自旋鎖6、進程切換>通過一個進程切換保留對進程C的引用(示例圖)對進程切換圖的理解以及解釋我們假定prev指向被替換進程的描述符;而next指向被激活進程的描述符;last是輸出參數表示宏把進程C的描述符地址寫在內存的什么位置。在進程切換之前,宏把第一個輸入參數prev表示的變量的內容存入存入CPU的eax寄存器。在完成進程切換,A已經恢復執行時,宏把CPU的eax寄存器的內容寫入由第三個輸出函數-last所指示的A在內存中的位置。在schedule()執行過程中,參數last指向A的局部變量prev,所以prev被C的地址覆蓋。進程切換步驟或由兩部分組成?切換頁全局目錄以安裝一個新的地址空間切換內核態堆棧和硬件上下文,因為硬件上下文提供了內核執行新進程所需要的所有信息,包含CPU寄存器。7、mm_struct(內存描述符所使用的數據結構類型)其中,mm_cout:表示主使用計數器;map_count:表示線性區個數;mmap_sem:表示線性區的讀/寫信號量;pgd:指向頁全局目錄Linux通過類型為vm_area_struct的對象實現線性區,其中vm_start表示線性區內的第一個線性地址;vm_end表示線性區之后的第一個線性地址;vm_ops表示指向線性區的方法;vm_next表示進程鏈表中的下一個線性區。其中vm_ops字段指向vm_operations_struct數據結構,該結構存放的是線性區的方法。分別是:open(當把線性區增加到進程所擁有的線性區的集合時調用、close(當把進程所擁有的線性區集合刪除線性區時調用)、nopage(當程序視圖訪問RAM中不存在的一個頁,但該頁的線性地址屬于線性區時,由缺頁異常處理程序調用)8、缺頁異常處理seneaSI氐GY[toesItiejtiesLtypernatcF*ui&memoryregionaccessrigits?UOKthpaddresspr?p5sddrps!DKiiheeiwepiwi
occurintherhim袒Ltyjldiimy
jIlMMEhpwV:-|ll'lLMI|
州Irhe印(K€5§.W3虹就”InI■in-'lnQMlAndpaging此ncomigFnwQrywi1W55;KJIMMgseneaSI氐GY[toesItiejtiesLtypernatcF*ui&memoryregionaccessrigits?UOKthpaddresspr?p5sddrps!DKiiheeiwepiwi
occurintherhim袒Ltyjldiimy
jIlMMEhpwV:-|ll'lLMI|
州Irhe印(K€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,FLinux缺頁(PageFault)異常處理必須區分以下兩種情況:由變成錯誤引起的異常;由引用屬于進程地址空間但還尚未分配物理頁框的頁所引起的異常。線性區描述符可以讓缺頁異常處理程度非常有效地完成它的工作。do_page_fault()函數是缺頁中斷服務程序,它把缺頁的線性地址和當前進程的線性區相比較,然后根據上圖所
示的方案處理這個異常do_page_fault()函數的第一步是讀取引起缺頁的線性地址。當異常發生時,CPU控制單元把這個值存放在cr2控制寄存器中。接下來缺頁處理程序檢查異常發生時是否內核正在執行一些關鍵例程或正在運行內核程序。假定沒有發生以上情況,則函數檢查進程所擁有的線性區以決定引起缺頁的線性地址是否包含在進程的地址空間中,為此必須獲得進程的mmap_sem讀寫信號量,讀取后do_page_fault()函數開始搜索錯誤線性地址所在的線性區。如果address不屬于進程的地址空間,那么do_page_fault()函數繼續執行bad_area標記處的語句;如果address地址屬于進程的地址空間,則do_page_fault()函數轉到good_area標記處的語句執行。8、內核同步技術flCPU本J&TPU木:地CPU所?仃CPULinux內適用范圍描述宅了操作對一個計數搖原了地"讀一修改一寫X的指所有CFU卬iTjCPU禁止木地低中flCPU本J&TPU木:地CPU所?仃CPULinux內適用范圍描述宅了操作對一個計數搖原了地"讀一修改一寫X的指所有CFU卬iTjCPU禁止木地低中斷禁止本CPUI:的數中新處理保此指令順序不被改變自旋鉞加鎖時忙留禁止本CPU1-.白中斷處廿禁止所有CPU上的中斷和救中斷處迎內存屏障加鎖時阻寒等待(睡眠)禁止本地中斷令局禁止中斷struciT0CHf日」rry[hd|9、虛擬文件系統(fs_structstruciT0CHf日」rry[hd|9、虛擬文件系統(fs_struct結構)Ucniry XpuodcoperaciS&ftETlt的imdctieintry進程間廣曲日*的inodeLfcntrylklej>_0peniTicnisFilesAssociatedwithaProcessFs__struc結構目的:每個進程都有它自己當前的工作目錄和它自己的根目錄。這是內核用來表示進程與文件系
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 村委會入股合同協議書
- 退卡退費協議書
- 測量工臨時用工協議書
- 租金返還協議書
- 資料丟失協議書
- 酒吧禁毒協議書
- 實驗室安全合同協議書
- 租賃客戶協議書
- 美發解約協議書
- 打印店股權分配協議書
- 重慶地區現代方言中的古語詞
- 3第三章申論寫作 寫作課件
- 廣西建設工程質量檢測和建筑材料試驗收費項目及標準指導性意見(新)2023.10.11
- 商戶撤場退鋪驗收單
- 國開電大 可編程控制器應用實訓 形考任務5實訓報告
- PEP英語四年級下冊U5 My clothes Read and write(教學課件)
- DB37-T 2671-2019 教育機構能源消耗定額標準-(高清版)
- 信息系統項目管理師論文8篇
- (完整版)重大危險源清單及辨識表
- 試驗室儀器設備檢定校準證書和測試報告確認表(公司范本)
- 《傳媒翻譯》教學大綱
評論
0/150
提交評論