




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 進程、輕量級進程和線程的概念以及它們的區(qū)別:進程(Process):進程是程序執(zhí)行時的一個實例??梢钥醋魇浅浞置枋龀绦蛞呀?jīng)執(zhí)行到何種程度的數(shù)據(jù)結構的匯集。進程的目的是擔當分配系統(tǒng)資源CPU時間、內存等)的實體。進程是資源管理的最小單元,能被內核單獨調度。?線程(Thread):線程代表進程的一個執(zhí)行流。是操作系統(tǒng)能夠進行運算調度的最小單位。它被包含在進程之中,是進程中的實際運作單位。一條線程指的是進程中一個單一順序的控制流,一個進程中可以并發(fā)多個線程,每條線程并行執(zhí)行不同的任務。線程不能被內核單獨調度。輕量級進程(LightwetghtProcess):輕量級進程(LWP)是一種實現(xiàn)多任務的方法。與普通進程相比,LWP與其他進程共享所有(或大部分)它的邏輯地址空間和系統(tǒng)資源;與線程相比,LWP有它自己的進程標識符,并和其他進程有著父子關系;這是和類Unix操作系統(tǒng)的系統(tǒng)調用vfork()生成的進程一樣的。另外,線程既可由應用程序管理,又可由內核管理,而LWP只能由內核管理并像普通進程一樣被調度。2、 什么導致操作系統(tǒng)不實時?Linux操作系統(tǒng)存在關中斷機制。導致的后果是:如果低優(yōu)先級的進程由于進入臨界去或者為了盡快完成人物而關閉了中斷,那么即使有高優(yōu)先級實時進程的中斷發(fā)生系統(tǒng)也無法響應Linux操作系統(tǒng)的內核是禁止搶占的。一個進程一旦進入內核,它將運行直到系統(tǒng)調用結束或進程被阻塞。這時候一個高優(yōu)先級的實時進程只能等待。Linux使用的是基于優(yōu)先級的任務調度策略。這種調度策略不能保證實時任務按時完成。Linux雖然給實時進程提供了較高的優(yōu)先級,但是,并沒有加入時間限制。其他方面:Linux利用交換空間然進程運行在一個比實際內存大的虛擬內存空間中。當進程訪問的虛擬內存的內容在交換空間里時,Linux就要把在交換空間里的頁面交換到實際的內存中,而這段時間是不可預測的,造成了實時響應時間的不確定性。3、 tast_struct類型結構(進程描述符就是這種結構).其中,thread_info:描述進程的基本信息;mm_struct:指向內存區(qū)描述符的指針;tty_struct:描述與進程相關的tty;fs_struct:當前目錄;files_struct:指向文件描述符的指針;signal_struct:所接收的信號4、異常、中斷中斷通常分為同步(synchronous)中斷和異步(asynchronous)中斷。同步中斷:是指當程序執(zhí)行時由CPU控制單元產生的,之所以成為同步,是因為只有在一條指令終止執(zhí)行后CPU才會發(fā)出中斷。?異步中斷:是由其他硬件設備按照CPU時鐘信號隨機產生的。附:同步中斷也稱為異常(exception)、異步中斷也稱為中斷(interrupt)中斷和異常的分類:中斷分為:可屏蔽中斷、非屏蔽中斷。異常分為:處理器探測到的異常、故障(錯誤、缺頁)、陷阱(主要用途是調試程序)、異常中止(通常是出現(xiàn)硬件或系統(tǒng)表的嚴重錯誤X編程異常(通常是編程者發(fā)出請求時發(fā)生,一般是由int或int3指令或into、bound指令觸發(fā))中斷上半部和中斷下半部中斷處理一般分為兩個部分,中斷處理程序是上半部:接收到一個中斷就立即執(zhí)行,但只做有嚴格時限的工作,這些工作都是在所有中斷被禁止的情況下完成的。能夠被允許稍后完成的工作被推遲到下半部去。通常情況下,下半部會在中斷處理程序返回時立即執(zhí)行。下半部具體放到以后的什么時候去做呢?下半部并不需要指明一個確切時間,只要把這些任務推遲一點,讓他們在系統(tǒng)不太繁忙并且中斷恢復后執(zhí)行就可以了。通常下半部在中斷處理程序一返回就會馬上執(zhí)行。下半部執(zhí)行的關鍵在于當它們運行的時候,允許響應所有中斷。5、同步訪問內核數(shù)據(jù)結構(保護內核控制路徑訪問的數(shù)據(jù)結構)訪問數(shù)據(jù)結構的內核控制路徑單處理器保護多處理器進一步保護異常信號量無中斷本地中斷禁止自旋鎖可延遲函數(shù)無無或自旋鎖異常與中斷本地中斷禁止自旋鎖異常與可延遲函數(shù)本地軟中斷禁止自旋鎖中斷與可延遲函數(shù)本地中斷禁止自旋鎖異常、中斷與可延遲函數(shù)本地中斷禁止自旋鎖6、進程切換>通過一個進程切換保留對進程C的引用(示例圖)對進程切換圖的理解以及解釋我們假定prev指向被替換進程的描述符;而next指向被激活進程的描述符;last是輸出參數(shù)表示宏把進程C的描述符地址寫在內存的什么位置。在進程切換之前,宏把第一個輸入?yún)?shù)prev表示的變量的內容存入存入CPU的eax寄存器。在完成進程切換,A已經(jīng)恢復執(zhí)行時,宏把CPU的eax寄存器的內容寫入由第三個輸出函數(shù)-last所指示的A在內存中的位置。在schedule()執(zhí)行過程中,參數(shù)last指向A的局部變量prev,所以prev被C的地址覆蓋。進程切換步驟或由兩部分組成?切換頁全局目錄以安裝一個新的地址空間切換內核態(tài)堆棧和硬件上下文,因為硬件上下文提供了內核執(zhí)行新進程所需要的所有信息,包含CPU寄存器。7、mm_struct(內存描述符所使用的數(shù)據(jù)結構類型)其中,mm_cout:表示主使用計數(shù)器;map_count:表示線性區(qū)個數(shù);mmap_sem:表示線性區(qū)的讀/寫信號量;pgd:指向頁全局目錄Linux通過類型為vm_area_struct的對象實現(xiàn)線性區(qū),其中vm_start表示線性區(qū)內的第一個線性地址;vm_end表示線性區(qū)之后的第一個線性地址;vm_ops表示指向線性區(qū)的方法;vm_next表示進程鏈表中的下一個線性區(qū)。其中vm_ops字段指向vm_operations_struct數(shù)據(jù)結構,該結構存放的是線性區(qū)的方法。分別是:open(當把線性區(qū)增加到進程所擁有的線性區(qū)的集合時調用、close(當把進程所擁有的線性區(qū)集合刪除線性區(qū)時調用)、nopage(當程序視圖訪問RAM中不存在的一個頁,但該頁的線性地址屬于線性區(qū)時,由缺頁異常處理程序調用)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ū)分以下兩種情況:由變成錯誤引起的異常;由引用屬于進程地址空間但還尚未分配物理頁框的頁所引起的異常。線性區(qū)描述符可以讓缺頁異常處理程度非常有效地完成它的工作。do_page_fault()函數(shù)是缺頁中斷服務程序,它把缺頁的線性地址和當前進程的線性區(qū)相比較,然后根據(jù)上圖所
示的方案處理這個異常do_page_fault()函數(shù)的第一步是讀取引起缺頁的線性地址。當異常發(fā)生時,CPU控制單元把這個值存放在cr2控制寄存器中。接下來缺頁處理程序檢查異常發(fā)生時是否內核正在執(zhí)行一些關鍵例程或正在運行內核程序。假定沒有發(fā)生以上情況,則函數(shù)檢查進程所擁有的線性區(qū)以決定引起缺頁的線性地址是否包含在進程的地址空間中,為此必須獲得進程的mmap_sem讀寫信號量,讀取后do_page_fault()函數(shù)開始搜索錯誤線性地址所在的線性區(qū)。如果address不屬于進程的地址空間,那么do_page_fault()函數(shù)繼續(xù)執(zhí)行bad_area標記處的語句;如果address地址屬于進程的地址空間,則do_page_fault()函數(shù)轉到good_area標記處的語句執(zhí)行。8、內核同步技術flCPU本J&TPU木:地CPU所?仃CPULinux內適用范圍描述宅了操作對一個計數(shù)搖原了地"讀一修改一寫X的指所有CFU卬iTjCPU禁止木地低中flCPU本J&TPU木:地CPU所?仃CPULinux內適用范圍描述宅了操作對一個計數(shù)搖原了地"讀一修改一寫X的指所有CFU卬iTjCPU禁止木地低中斷禁止本CPUI:的數(shù)中新處理保此指令順序不被改變自旋鉞加鎖時忙留禁止本CPU1-.白中斷處廿禁止所有CPU上的中斷和救中斷處迎內存屏障加鎖時阻寒等待(睡眠)禁止本地中斷令局禁止中斷struciT0CHf日」rry[hd|9、虛擬文件系統(tǒng)(fs_structstruciT0CHf日」rry[hd|9、虛擬文件系統(tǒng)(fs_struct結構)Ucniry XpuodcoperaciS&ftETlt的imdctieintry進程間廣曲日*的inodeLfcntrylklej>_0peniTicnisFilesAssociatedwithaProcessFs__struc結構目的:每個進程都有它自己當前的工作目錄和它自己的根目錄。這是內核用來表示進程與文件系
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 云南省楚雄彝族自治州武定縣2025年三下數(shù)學期末教學質量檢測模擬試題含解析
- 德陽農業(yè)科技職業(yè)學院《土木與交通工程防災減災新進展》2023-2024學年第一學期期末試卷
- 公園里的花朵和昆蟲小班戶外觀察記錄
- 工業(yè)用地利用現(xiàn)狀分析
- 室內墻面防水施工方案
- 2024年三季度報湖南地區(qū)A股長期負債比率排名前十大上市公司
- 2024年三季度報湖南地區(qū)A股利息支付倍數(shù)排名前十大上市公司
- 堆土施工方案
- 鋼橋梁施工方案
- 2025年餐廳經(jīng)理考試試題及答案
- GB/T 4154-1993氧化鑭
- 水泥混凝土路面試驗檢測的要點
- 運輸供應商年度評價表
- 室內消防及給排水管道安裝施工方案方案
- 無創(chuàng)呼吸機參數(shù)調節(jié)課件
- 《過零丁洋》公開課件
- 文件傳閱單范本
- 電工培養(yǎng)計劃表
- 部編版五年級道德與法治下冊課程綱要
- Q∕SY 02006-2016 PVT取樣技術規(guī)程
- 初中物理公式MicrosoftWord文檔
評論
0/150
提交評論