freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

中國科學院大學操作系統(tǒng)考試思考題答案-在線瀏覽

2024-08-08 03:55本頁面
  

【正文】 。而在計算機剛剛加電時,內(nèi)存中沒有操作系統(tǒng)程序,只有BIOS 程序在運行,需要借助BIOS分別加載bootsect、setup及system模塊,然后利用這3個程序來完成內(nèi)存規(guī)劃、建立IDT和GDT、設置分頁機制等等,并實現(xiàn)從開機時的16位實模式到 main 函數(shù)執(zhí)行需要的32位保護模式之間的轉(zhuǎn)換。9. 為什么不用call,而是用ret“調(diào)用”main函數(shù)?畫出調(diào)用路線圖,給出代碼證據(jù)。在由head程序向main函數(shù)跳轉(zhuǎn)時,是不需要main函數(shù)返回的;同時由于main函數(shù)已經(jīng)是最底層的函數(shù)了,沒有更底層的支撐函數(shù)支持其返回。調(diào)用線路圖見P42 圖146。從 GDT 可以看出,保護模式除了段基址外,還有段限長,這樣相當于增加了一個段位寄存器。同時,保護模式中特權(quán)級的引入對于操作系統(tǒng)內(nèi)核提供了強有力的保護。有了這些基礎,操作系統(tǒng)可以把內(nèi)核設計成最高特權(quán)級,把用戶進程設計成最低特權(quán)級。物理地址是由內(nèi)核將線性地址轉(zhuǎn)換而成的,所以操作系統(tǒng)可以訪問任何物理地址,而用戶進程只能使用邏輯地址。保護模式中特權(quán)級的引入對于操作系統(tǒng)內(nèi)核提供了強有力的保護。有了這些基礎,操作系統(tǒng)可以把內(nèi)核設計成最高特權(quán)級,把用戶進程設計成最低特權(quán)級。物理地址是由內(nèi)核將線性地址轉(zhuǎn)換而成的,所以操作系統(tǒng)可以訪問任何物理地址,而用戶進程只能使用邏輯地址。特權(quán)級基于段,這樣當段選擇子具有不匹配的特權(quán)級時,按照特權(quán)級規(guī)則判斷是否可以訪問。12. 在setup程序里曾經(jīng)設置過一次gdt,為什么在head程序中將其廢棄,又重新設置了一個?為什么折騰兩次,而不是一次搞好?答:見P33 點評。剩余的原因:after_page_tables 中壓入了一些參數(shù),為內(nèi)核進入 main 函數(shù)的跳轉(zhuǎn)做準備。ignore_int 為中斷處理函數(shù),使用 ignore_int 將 idt 全部初始化,因此如果中斷開啟后,可能使用了未設置的中斷向量,那么將默認跳轉(zhuǎn)到 ignore_int 處執(zhí)行。setup_paging 用于分頁,在該函數(shù)中對 0x0000 和 0x5000 的進行了初始化操作。14. 進程0的task_struct在哪?具體內(nèi)容是什么?給出代碼證據(jù)。(因為在進程0未激活之前,使用的是boot階段的user_stack。具體內(nèi)容如下:包含了進程 0 的進程狀態(tài)、進程 0 的 LDT、進程 0 的 TSS 等等。代碼如下:INIT_TASK的定義見P68。請問,這個了頁究竟占用的是誰的線性地址空間,內(nèi)核、進程0、進程還是沒有占用任何線性地址空間(直接從物理地址分配)?說明理由并給出代碼證據(jù)。(先理解清楚,稍后補充)16. 假設:經(jīng)過一段時間的運行,操作系統(tǒng)中已經(jīng)有5個進程在運行,且內(nèi)核分別為進程進程5分別創(chuàng)建了第一個頁表,這兩個頁表在誰的線性地址空間?用圖表示這兩個頁表在線性地址空間和物理地址空間的映射關(guān)系。(圖片自己畫,參考如下圖)17. 進程0開始創(chuàng)建進程1,調(diào)用了fork(),跟蹤代碼時我們發(fā)現(xiàn),fork代碼執(zhí)行了兩次,第一次,跳過init()直接執(zhí)行了for(。奇怪的是,我們在代碼中并沒有看見向后的goto語句,也沒有看到循環(huán)語句,是什么原因?qū)е路磸蛨?zhí)行?請說明理由,并給出代碼證據(jù)。在執(zhí)行fork時,通過0x80號系統(tǒng)調(diào)用,內(nèi)核執(zhí)行copy_process函數(shù),為進程1準備其管理結(jié)構(gòu)(task_struct),設置進程1的線性地址空間及物理頁面,其中設置了進程1的 TSS 中 eax 的值為 0,狀態(tài)為TASK_RUNNING,以及利用中斷壓棧的寄存器值設置進程 1 的 ss,esp,eflags,cs,eip?!璸 = eip。p = 0。…p = cs amp。p = ss amp?!璸state = TASK_RUNNING。函數(shù)copy_process的返回值是last_pid,即進程1的pid(pid不為0)。) pause()。由于只有進程1處于就緒態(tài),因此調(diào)度執(zhí)行進程1的指令。導致反復執(zhí)行,主要是利用了兩個系統(tǒng)調(diào)用 sys_fork 和 sys_pause 對進程狀態(tài)的設置,以及利用了進程調(diào)度機制。查看棧結(jié)構(gòu)確實有這五個參數(shù),奇怪的是其他參數(shù)的壓棧代碼都能找得到,確找不到這五個參數(shù)的壓棧代碼,反匯編代碼中也查不到,請解釋原因。利用硬件進行壓棧,可以確保 eip 的值指向正確的指令,以使在中斷返回后,程序能夠繼續(xù)執(zhí)行。20. 根據(jù)代碼詳細說明copy_process函數(shù)的所有參數(shù)是如何形成的?答:一般在應用程序中,一個函數(shù)的參數(shù)是由函數(shù)定義的,而在操作系統(tǒng)底層中,函數(shù)參數(shù)可以由函數(shù)定義以外的程序通過壓棧的方式“做”出來。代碼見P83頁、P85頁、P86頁。答:通過fork(),進程0創(chuàng)建進程1,并將其狀態(tài)設為TASK_RUNNING,fork()函數(shù)執(zhí)行完畢后返回,進入for(。在sys_pause()中,將當前進程(進程0)的狀態(tài)設置為TASK_INTERRUPTBLE,然后執(zhí)行schedule(),遍歷task[]數(shù)組,找到唯一的一個處于TASK_RUNNING的進程(進程1),然后切換到進程1執(zhí)行,即switch_to(1)。答:先把頁目錄表和4個頁表放在物理內(nèi)存的起始地址,從內(nèi)存起始位置開始的5頁空間內(nèi)容全部清零(每頁4KB)。圖見P39(注意要畫出7個頁,參考如下)代碼見P39 最下面23. 用文字和圖說明中斷描述符表是如何初始化的,可以舉例說明(比如:set_trap_gate(0,amp。答:以set_trap_gate(0,amp。idt[0],也就是id
點擊復制文檔內(nèi)容
教學教案相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1