操作系統(tǒng)實(shí)驗(yàn)報(bào)告(共20頁).docx
《操作系統(tǒng)實(shí)驗(yàn)報(bào)告(共20頁).docx》由會(huì)員分享,可在線閱讀,更多相關(guān)《操作系統(tǒng)實(shí)驗(yàn)報(bào)告(共20頁).docx(20頁珍藏版)》請(qǐng)?jiān)趨R文網(wǎng)上搜索。
1、精選優(yōu)質(zhì)文檔-傾情為你奉上操作系統(tǒng)實(shí)驗(yàn)報(bào)告班號(hào):學(xué)號(hào):姓名:蔡鵬1. 請(qǐng)簡述head.s 的工作原理。head.s實(shí)在32位保護(hù)模式下運(yùn)行的。我認(rèn)為這段程序主要包括兩個(gè)部分:1.初始化設(shè)置。2.任務(wù)執(zhí)行與切換。初始設(shè)置主要包括了:1.設(shè)置GDT表2.設(shè)置系統(tǒng)定時(shí)芯片3.設(shè)置IDT表(0x08時(shí)鐘中斷和0x80系統(tǒng)調(diào)用中斷)4.切換到任務(wù)0執(zhí)行任務(wù)切換和執(zhí)行包括了:1.任務(wù)0和任務(wù)1 , 2. 時(shí)鐘中斷, 3. 系統(tǒng)中斷 兩個(gè)任務(wù)的在LDT中代碼段和數(shù)據(jù)段描述符的內(nèi)容都設(shè)置為:基地址0x0000;段限長值為0x03ff,實(shí)際段長度為4MB。因此在線性地址空間中這個(gè)“內(nèi)核”的代碼和數(shù)據(jù)段與任務(wù)的代
2、碼和數(shù)據(jù)段都從線性地址0開始并且由于沒有采用分頁機(jī)制,所以他們都直接對(duì)應(yīng)物理地址0開始處。 為了每隔10毫秒切換運(yùn)行的任務(wù),head.s程序中把定時(shí)器芯片8253的通道0設(shè)置成每隔10毫秒就向中斷控制芯片8259A發(fā)送一個(gè)時(shí)鐘中斷請(qǐng)求信號(hào)。PC機(jī)的ROM BIOS開機(jī)時(shí)已經(jīng)在8259A中把時(shí)鐘中斷請(qǐng)求信號(hào)設(shè)置成中斷向量8,因此我們需要在中斷8的處理過程中執(zhí)行任務(wù)切換操作。任務(wù)切換的實(shí)現(xiàn)是查看current變量中的當(dāng)前運(yùn)行的任務(wù)號(hào),如果為0,就利用任務(wù)1的TSS選擇符作為操作數(shù)執(zhí)行遠(yuǎn)跳轉(zhuǎn)指令,從而切換到任務(wù)1中,否則反之。 每個(gè)任務(wù)在執(zhí)行時(shí),會(huì)首先把一個(gè)字符的ASCII碼放入寄存器AL中,然后調(diào)
3、用系統(tǒng)中斷調(diào)用int 0x80,而該系統(tǒng)調(diào)用處理過程則會(huì)調(diào)用一個(gè)簡單的字符寫屏子程序,把寄存器AL中的字符顯示在屏幕上,同時(shí)把字符顯示的屏幕的下一個(gè)位置記錄下來,作為下一次顯示字符用。在顯示過一個(gè)字符后,任務(wù)代碼會(huì)使用循環(huán)語句延遲一段時(shí)間,然后又跳轉(zhuǎn)到任務(wù)代碼開始處繼續(xù)循環(huán)執(zhí)行,直到運(yùn)行了10毫秒而發(fā)生了定時(shí)中斷,從而代碼會(huì)切換到另一個(gè)任務(wù)執(zhí)行。對(duì)于任務(wù)A,寄存器AL中始終存放字符A,而任務(wù)B運(yùn)行時(shí)AL中始終存放字符B。因此程序運(yùn)行時(shí)我們將看到一連串的A和一連串的B間隔的連續(xù)不斷的顯示在屏幕上。若出現(xiàn)了一個(gè)C,是由于PC機(jī)偶然產(chǎn)生了一個(gè)不是時(shí)鐘中斷和系統(tǒng)調(diào)用中斷的其他中斷。因?yàn)槲覀円呀?jīng)在程序中
4、給所有其他中斷安裝了一個(gè)默認(rèn)中斷處理程序。當(dāng)出現(xiàn)一個(gè)其他中斷時(shí),系統(tǒng)就會(huì)運(yùn)行這個(gè)中斷處理程序,于是就會(huì)在屏幕上顯示一個(gè)C,然后退出中斷。4. 請(qǐng)記錄head.s 的內(nèi)存分布狀況,寫明每個(gè)數(shù)據(jù)段,代碼段,棧段的起始與終止的內(nèi)存地址。代碼段編號(hào)名稱起始地址終止地址1startup_320x000xac2setup_idt0xb50xe43setup_gdt0xad0xb44write_char0xe50x1135ignore_int0x1140x1296timer_interrupt0x12b0x1657system_interrupt0x1660x17c8task00x10e00x10f39ta
5、sk10x10f40x1107數(shù)據(jù)段編號(hào)名稱起始地址終止地址1current0x17d0x1802scr_loc0x1810x1843lidt_opcode0x1860x18b4lgdt_opcode0x18c0x1915idt0x1980x9976gtd0x9980x9d77ldt00xbe00xbf78tss00xbf80xc5f9ldt10xc600xe7710tss10xe780xedf堆棧段編號(hào)名稱起始地址終止地址1Init_stack0x9d80xbd82Krn_stk00xc600xe603Krn_stk10xe000x10e04User_stk10x11080x13085. 簡
6、述Head.s 5762行在做什么?簡述iret執(zhí)行后,pc如何找到下一條指令?并記錄iret執(zhí)行前后,棧是如何變化的。代碼作用:是在初始堆棧中人工設(shè)置返回環(huán)境。57:把任務(wù)0當(dāng)前局部空間數(shù)據(jù)段(堆棧段)選擇符入棧58:把堆棧指針入棧(也可以把ESP入棧)59:把標(biāo)志寄存器入棧60:把當(dāng)前局部空間代碼段選擇符入棧61:把代碼指針入棧62:執(zhí)行中斷返回指令,從而切換到特權(quán)級(jí)3的任務(wù)0中執(zhí)行如何找到下一條指令:執(zhí)行iret之后,將推入堆棧的段地址和偏移地址彈出,使程序返回到原來發(fā)生中斷的地方。其作用是從中斷中恢復(fù)中斷前的狀態(tài),具體作用有如下三點(diǎn):1.恢復(fù):(IP)(SP)+1:(SP),(SP)(
- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
20 積分
下載 | 加入VIP,下載共享資源 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 操作系統(tǒng) 實(shí)驗(yàn) 報(bào)告 20