下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
習題1.給出以下概念的解釋說明。CPU的控制流正??刂屏鳟惓?刂屏鬟M程邏輯控制流物理控制流并發(fā)(concurrency)并行(parallelism)多任務時間片進程的上下文系統(tǒng)級上下文用戶級上下文寄存器上下文進程控制信息上下文切換內核空間用戶空間內核控制路徑異常處理程序中斷服務程序故障(fault)陷阱(trap)陷阱指令終止(abort)中斷請求信號中斷響應周期中斷類型號開中斷/關中斷可屏蔽中斷不可屏蔽中斷斷點程序狀態(tài)字寄存器程序狀態(tài)字向量中斷方式中斷向量中斷向量表異常/中斷查詢程序中斷描述符表I/O中斷時鐘中斷處理器中斷現場信息I/O中斷服務程序中斷服務例程系統(tǒng)調用系統(tǒng)調用號系統(tǒng)調用處理程序系統(tǒng)調用服務例程2.簡單回答下列問題。(1)引起異??刂屏鞯氖录饕心膸最??(2)進程和程序之間最大的區(qū)別在哪里?(3)進程的引入為應用程序提供了哪兩個方面的假象?這種假象帶來了哪些好處?(4)“一個進程的邏輯控制流總是確定的,不管中間是否被其他進程打斷,也不管被打斷幾次或在哪里被打斷,這樣,就可以保證一個進程的執(zhí)行不管怎么被打斷其行為總是一致的?!庇嬎銠C系統(tǒng)主要靠什么機制實現這個能力?(5)在進行進程上下文切換時,操作系統(tǒng)主要完成哪幾項工作?(6)在IA-32/Linux系統(tǒng)平臺中,一個進程的虛擬地址空間布局是怎樣的?(7)簡述異常和中斷事件形成異??刂屏鞯倪^程。(8)調試程序時的單步跟蹤是通過什么機制實現的?(9)在異常和中斷的響應過程中,CPU(硬件)要保存一些信息,這些信息包含哪些內容?(10)在執(zhí)行異常處理程序和中斷服務程序過程中,(軟件)要保存一些信息,這些信息包含哪些內容?(11)普通的過程(函數)調用和操作系統(tǒng)提供的系統(tǒng)調用之間有哪些相同之處?有哪些不同之處?(12)在IA-32中,中斷向量表和中斷描述符表各自記錄了什么樣的信息?3.根據下表給出的4個進程運行的起、止時刻,指出每個進程對P1—P2、P1-P3、P1-P4、P2—P3、P3-P4中的兩個進程是否并發(fā)運行?進程開始時刻結束時刻PI]7P246P338P425參考答案:P1和P2并發(fā);P1和P3并發(fā);P1和P4并發(fā);P2和P3并發(fā);P3和P4并發(fā)。4.假設在IA-32/linux系統(tǒng)中一個main函數的C語言源程序P如下:unsignedshortb[2500J;unsignedshortk;main()(b[1000]=1023;6 b[2500]=2049%k;
7b[l0000]=20000;8 )經編譯、鏈接后,第5、6和7行源代碼對應的指令序列如下:1movw$0x3ff,0x80497d0//b[1000]=10232movw0x804a324,%cx//R[cx]=^3movw$0x801,%ax//Rlax]=20494xorw%dx,%dx//R[dx]=O5div%cx//R[dx]=2049%k6movw%dx,0x804a324//b[2500]=2049%%7movw$0x4e20,0x804de20//b[10000]=20000假設系統(tǒng)采用分頁虛擬存儲管理方式,頁大小為4KB,第1行指令對應的虛擬地址為0x80482c0,在運行P對應的進程時,系統(tǒng)中沒有其他進程在運行,回答下列問題。(1)對于上述7條指令的執(zhí)行,是否可能在取指令時發(fā)生缺頁異常?(2)執(zhí)行第1、2、6和7行指令時,在訪問存儲器操作數的過程中是否會發(fā)生頁故障或其他什么問題?哪些指令中的問題是可恢復的?哪些指令中的問題是不可恢復的?分別畫出第1行和第7行指令所發(fā)生故障的處理過程示意圖。(3)執(zhí)行第5條指令時會發(fā)生什么故障?該故障能否恢復?參考答案:因為Linux在初始化時,通常將所有段的段基址都設為0,所以,虛擬(邏輯)地址就是線性地址。(1)第1行指令的虛擬地址為0x80482c0,其線性地址為0x80482co,而頁大小為4KB,因此,第1行指令不是一個頁面的起始地址,所以,在執(zhí)行第1行指令前面的指令時,上述7條指令被同時裝入主存,因而,上述7條指令的執(zhí)行過程中都不會在取指令時發(fā)生缺頁。(2)執(zhí)行第1行指令過程中,數據訪問時會發(fā)生缺頁,但是是可恢復的故障。因為,對于地址為0x80497d0的b[1000]的訪問,是對所在頁面(起始地址為0x8049000,是一個4KB頁面的起始位置)的第一次訪問,因而對應頁面不在主存。當CPU執(zhí)行到該指令時,檢測到缺頁異常,即發(fā)生了頁故障,此時,CPU暫停P對應的用戶進程的執(zhí)行,將控制轉移到操作系統(tǒng)內核,調出內核中的“頁故障處理程序”執(zhí)行。在由故障處理程序中,檢杳是否地址越界或訪問越權,顯然這里沒有發(fā)生越界和越權情況,故將地址0x80497d0所在頁面從磁盤調入內存,處理結束后,再回到這條movl指令重新執(zhí)行,此時,再訪問數據就沒有問題了。處理過程如下圖所示。用戶講程時于第2行指令的執(zhí)行,數據訪問時會發(fā)生缺頁,因為在地址0x804a324位于起始地址為0x804a000的頁面中,對地址0x804a324的訪問是該頁的第一次訪問。與第1行指令的數據訪問一樣,是可恢復的故障。對于第6行指令的執(zhí)行,數據訪問時不會發(fā)生缺頁,因為地址0x804a324所在的頁面(其起始地址為0x804a000的頁面)己經在主存中。但是,該指令的執(zhí)行會破壞原來存放在地址0x804a324中的變量k的值。對于第7行指令的執(zhí)行,數據訪問時很可能會發(fā)生頁故障,而且是不可恢復的故障。顯然,a[10000]并不存在,不過,C編譯器牛.成了對應的指令“movl$0x4e20,0x804de20”,其中的地址0x804de20偏離數組苜地址0x8049000(2達2x10000+2=20002個單元,即偏離了4、5個頁面,很可能超出了可讀寫數據區(qū)范圍,因而當CPU執(zhí)行該指令時,很可能發(fā)生地址越界或訪問越權。若是這樣的話,CPU就通過異常響應機制轉到操作系統(tǒng)內核,即調出內核中的頁故障異常處理程序執(zhí)行。在頁故障處理程序中,檢測到發(fā)生了地址越
界或訪問越權,因而頁故障處理程序發(fā)送一個“段錯誤”信號(SIGSEGV)給用戶進程,用戶進程接受到該信號后就調出一個信號處理程序執(zhí)行,該信號處理程序根據信號類型,在扉幕上顯示“段故障(segmentationfault)”信息,并終止用戶進程。處理過程如下圖所示。用戶講程movl$0x4e20,0x804de20用戶講程movl$0x4e20,0x804de20 頁故障OS的頁故障處理程序"檢測到地址越界或訪問越權,發(fā)送"SIGSEGV”信號給用戶進程(3)因為這里忘記給k賦值,且上是未初始化的變量,所以k/E.bss節(jié)中。通常.bss節(jié)中的變量初值都自動設為0,因而,執(zhí)行第5條指令時,會發(fā)生“整除0”故障,該故障是不能恢復的。5.若用戶程序希望將字符串“hello,world!\n”中的14個字符顯示在標準輸出設備文件stdout匕則可以使用系統(tǒng)調用write對應的封裝函數write。,“hello,world!\n”,14),在IA-32/Linux系統(tǒng)中,可以用以下機器級代碼(用匯編指令表示)實現。1movl$4,%eax〃調用號為4,送EAX2movl$1,%ebx〃標準輸出設備stdout的文件描述符為1,送EBX3movlSstring,%ecx〃字符串“hello,world!\n”的首地址等于string的值,送ECX4movl$14,%edx〃字符串的長度為14,送EDX5int$0x80〃系統(tǒng)調用針對上述機器級代碼,回答下列問題或完成下列任務。(1)執(zhí)行該段代碼時,系統(tǒng)處于用戶態(tài)還是內核態(tài)?為什么?執(zhí)行完第5行指令后的下一個時鐘周期,系統(tǒng)處于用戶態(tài)還是內核態(tài)?(2)第5行指令是否屬于陷阱指令?執(zhí)行該指令時,通過5種類型(中斷門、系統(tǒng)門、系統(tǒng)中斷門、陷阱門和任務門)門描述符中的哪種類型門描述符來激活異常處理程序?對應的中斷類型號是多少?對應門描述符中的字段P、DPL、TYPE的內容分別是什么?根據對應門描述符中的段選擇符取出的GDT中的段描述符中的基地址、限界、字段G、S、TYPE(包含A)、DPL、D和P分別是什么?(3)參考第727節(jié)的內容,詳細描述第5行指令的執(zhí)行過程。參考答案:(I)因為該段代碼執(zhí)行的是用戶程序的功能,因此,在執(zhí)行第5行軟中斷指令(int$0x80)進行系統(tǒng)調用之前,系統(tǒng)處于用戶態(tài),執(zhí)行完第5行指令后的下一個時鐘周期,系統(tǒng)從用戶態(tài)陷入到內核態(tài)執(zhí)行。(2)第5行指令屬于陷阱指令。執(zhí)行該指令時,通過系統(tǒng)門(systemgate)描述符來激活異常處理程序,對應的中斷類型號是128。對應門描述符中的P=1(Linux總是把P設成1),DPL=3,TYPE=111IBO根據對應門描述符中的段選擇符取出的GDT中的段描述符應該是內核代碼段對應的段描述符(Linux下設定為表6.2中所示的內核代碼段,因為執(zhí)行系統(tǒng)調用后應調出內核代碼執(zhí)行),所以,其基地址為0,限界為FFFFFH,G=l,S=l,TYPE=1010,DPL=0,D=l,P=l.(參看6.1.1節(jié)和7.2.8節(jié))有關TYPE的含義參見下圖。
type<8fl寸TYPE/說明?type>=8B寸十進制值?<3數據段?TYPE/說明+,2只讀」十迸制值。?3R。A-代碼段,I*3只讀、已訪問?'8*13(Pa漱行/2〉2a皿讀寫?22OP2只執(zhí)行、已訪問一3^Op2a讀寫、已訪問「|1(P32wa執(zhí)行、可讀。42wa*只讀、向下擴展」3i*3執(zhí)行、可讀、已訪問,32w3只讀、向下擴展、已訪問“12/22a3只執(zhí)行、一致」6^awip讀寫、向下擴展*13,I*533只執(zhí)行、一致、已訪問,7。aI*3w讀寫、向下擴展、已訪問「1“w3執(zhí)行、可讀、一致*15^aI*51“執(zhí)行、可讀、一致、已訪問"(3)第5行指令的執(zhí)行過程如下:①確定中斷類型號為128(0x80),從IDTR指向的IDT中取出第128個表項,這個表項實際上就是Linux初始化時在IDT的第128項中設定的系統(tǒng)門描述符,其中P=l,DPL=3,TYPE=1111B,段選擇符為0x60,指向GDT中的內核代碼段描述符(kernel_code)oLinux全局描述符表(GDT)如下。Unux全局描述符表null段選擇野10x0Linux全局描述符豪 TSSLDTreserved0x800x38reservedPNPBIOS32-bhcode0x90reservedPNPBIOS16bitcode0x96notusedPNPBIOS16-bitdataOxaOnotusedPNPBIOS16-brtdau0xa8TLS#10x33PNPBIOS16bndataOxbOTLS120x3bAPMBIOS32-bitcode0xb8TLS#30x43APMBIOS16*bitcodeOxcOreservedAPMBIOSdata0xc8reservednotusedreservednotusedkernelcode0x60(_KfRNEL_CS)notusedkerneldata0x68(_KERNEL^DS)notusedusercode0x73(_USER_CS)notuseduserdataOx7b(_USER_DS)doublefuiltTSS0xf8匕②根據IDT中的段選擇符,從GDTR指向的GDT中取出相應的段描述符,得到對應異常處理程序或中斷服務程序所在段的DPL、基地址等信息。Linux下即為內核代碼段,所以DPL為0,基地址為0。③將當前特權級CPL(CS寄存器最低兩位,00為內核特權級,11為用戶特權級)與段描述符中的DPL比較。若CPL小于DPL,則產生13號異常(#GP)。因為,Linux內核代碼段的DPL總是0,因此不管怎樣都不會發(fā)生CPL小于DPL的情況。④檢查是否發(fā)生了特權級變化,即判斷CPL是否與相應段描述符中的DPL不同。因為執(zhí)行第5行指令時處于用戶態(tài),因此CPL=3,而DPL=0,故需要從用戶態(tài)切換至內核態(tài),以使用內核對應的棧。通過以下步驟完成棧的切換:a)讀TR寄存器,以訪問正在運行進程的TSS段;b)將TSS段中保存的內核棧的段選擇符和棧指針分別裝入寄存器SS和ESP,然后在內核棧中保存原來的用戶棧的SS和ESPo⑤將第5行后面一條指令的邏輯地址寫入CS和EIP,以保證內核程序處理后回到卜一條指令執(zhí)行。⑥在當前棧中保
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二四年度園林綠化工程樹木養(yǎng)護合同3篇
- 2025年度智能儲藏室與車位投資合作合同樣本4篇
- 二零二四年度暫定總價合同范本:新能源汽車動力電池回收利用合作協議3篇
- 二零二五年度電商行業(yè)品牌授權合作合同4篇
- 二零二五年度航空航天零部件采購合同范本及技術指標3篇
- 2025年度教育信息化項目承包合同范本8篇
- 二零二四年牛奶制品包裝回收及環(huán)保處理合同3篇
- 2025年度專業(yè)打印機采購及環(huán)保認證服務合同4篇
- 二零二五年度車輛抵押貸款合同樣本(一站式服務)3篇
- 二零二五年度促銷員權益保障勞動合同3篇
- 道路瀝青工程施工方案
- 2025年度正規(guī)離婚協議書電子版下載服務
- 《田口方法的導入》課件
- 內陸?zhàn)B殖與水產品市場營銷策略考核試卷
- 電力電纜工程施工組織設計
- 醫(yī)生給病人免責協議書(2篇)
- 票據業(yè)務居間合同模板
- 高中物理選擇性必修2教材習題答案
- 應急預案評分標準表
- “網絡安全課件:高校教師網絡安全與信息化素養(yǎng)培訓”
- 鋰離子電池健康評估及剩余使用壽命預測方法研究
評論
0/150
提交評論