




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、重慶科技學(xué)院操作系統(tǒng)原理課程設(shè)計報告 學(xué) 院:電氣與信息工程學(xué)院 專業(yè)班級: 計科應(yīng)08 學(xué)生姓名: 學(xué) 號: 設(shè)計地點(單位)_ _ _ _ _ _ _ 設(shè)計題目:_ _ 微型操作系統(tǒng)的設(shè)計_ 完成日期: 2011 年 6 月 17 日 指導(dǎo)教師評語: _ _ 成績(五級記分制):_ _ 指導(dǎo)教師(簽字):_ _ 重慶科技學(xué)院課程設(shè)計任務(wù)書設(shè)計題目:微型操作系統(tǒng)的設(shè)計 學(xué)生姓名課程名稱操作系統(tǒng)原理課程設(shè)計專業(yè)班級計科應(yīng)08地 點i524起止時間2011年6月12日-2011年6月16日設(shè)計內(nèi)容及要求(1) 配置操作系統(tǒng)編寫的所需的環(huán)境(虛擬機的建立和相應(yīng)環(huán)境建立),以準(zhǔn)備相關(guān)的必須工具的準(zhǔn)備
2、,并學(xué)會相關(guān)工具的使用,為以后編寫一個微操作系統(tǒng)奠定基礎(chǔ)和準(zhǔn)備平臺。(2) 學(xué)習(xí)nasm匯編器在本次設(shè)計中的使用。(3) 學(xué)習(xí)裸機啟動的過程,消化操作系統(tǒng)引導(dǎo)程序的結(jié)構(gòu),在此基礎(chǔ)上,完成在實模式下從軟盤引導(dǎo)計算機的程序編寫。(4) 學(xué)習(xí)本次設(shè)計需要的實模式到保護模式切換的相關(guān)知識。理解gdt在保護模式的工作機理(5) 編寫在保護模式下的引導(dǎo)程序,并用c語言模擬寫一個“內(nèi)核”,并實現(xiàn)在保護模下通過引導(dǎo)程序啟動計算機并將該“內(nèi)核”加載到內(nèi)存中。最后切換到內(nèi)核。設(shè)計參數(shù)(1) 寫出編寫一個操作系統(tǒng)所需的環(huán)境和操作說明書。(2) 總結(jié)計算機啟動順序和具體過程。(3) 實現(xiàn)在實模式下系統(tǒng)引導(dǎo)程序的編寫。
3、(4) 理解消化實模式到保護模式切換原理以及相關(guān)的數(shù)據(jù)結(jié)構(gòu)和工作過程,并實現(xiàn)之。(5) 完成保護模式下的引導(dǎo)程序,并完成“內(nèi)核”的加載,并使“內(nèi)核”運行起來。附加要求:請在設(shè)計的課后完成具有進程調(diào)度和管理的內(nèi)核的編寫。進度要求6月12日布置任務(wù),對各個任務(wù)的基礎(chǔ)知識進行講解6月12日 安裝環(huán)境,并熟悉相關(guān)工具的使用。6月13日完成實模式下引導(dǎo)程序的編寫。6月14日完成實模式與保護模式的切換代碼的設(shè)計。6月15日完成實模式引導(dǎo)程序和內(nèi)核加載程序編寫。6月16日完成答辯和報告撰寫。參考資料隨任務(wù)布置的相關(guān)電子文檔。其它說明.本表應(yīng)在每次實施前一周由負(fù)責(zé)教師填寫二份,院系審批后交院系辦備案,一份由負(fù)
4、責(zé)教師留用。.若填寫內(nèi)容較多可另紙附后。3.一題多名學(xué)生共用的,在設(shè)計內(nèi)容、參數(shù)、要求等方面應(yīng)有所區(qū)別。教研室主任: 指導(dǎo)教師: 年 月 日摘要操作系統(tǒng)是用于控制和管理計算機系統(tǒng)內(nèi)各種軟硬件資源、合理有效地組織協(xié)調(diào)計算機系統(tǒng)的工作流程提供友好的用戶接口以方便用戶使用計算機的程序集合。本次設(shè)計主要基于在實模式下系統(tǒng)引導(dǎo)程序的編寫,理解消化實模式到保護模式切換原理以及相關(guān)的數(shù)據(jù)結(jié)構(gòu)和工作過程,并實現(xiàn)之,完成保護模式下的引導(dǎo)程序,并完成“內(nèi)核”的加載,并使“內(nèi)核”運行起來。所用到的設(shè)備有windows xp系統(tǒng)pc機一臺、裝有l(wèi)inux系統(tǒng)的pc機一臺、vmware虛擬機一臺、winhex以及nas
5、m編譯軟件。 結(jié)合本身的實際情況,寫出設(shè)計要求的操作系統(tǒng)。關(guān)鍵詞:操作系統(tǒng) 引導(dǎo) 模式 內(nèi)核 nasm目錄摘要i1 需求分析11.1功能需求分析11.2 性能需求分析11.3 運行環(huán)境需求21.3.1 設(shè)備21.3.2 運行環(huán)境22系統(tǒng)設(shè)計42.1 引導(dǎo)程序和模式切換功能設(shè)計42.1.1 引導(dǎo)程序設(shè)計42.1.2 模式切換功能設(shè)計52.2 內(nèi)核設(shè)計82.3 映像文件的設(shè)計113系統(tǒng)測試12總結(jié)14致謝15參考文獻161 需求分析無論什么項目或者是軟件,我們首先必需弄清它的需求分析,才能達到我們開發(fā)的目的,而不是在那盲目的開發(fā),最后卻不知道產(chǎn)品所需求的功能。1.1功能需求分析pc機開機后,cpu
6、被設(shè)定為執(zhí)行ffff:0單元處的指令,此處有一條跳轉(zhuǎn)指令。cpu執(zhí)行該指令后,轉(zhuǎn)去執(zhí)行bios中的硬件系統(tǒng)測試和初始化程序。初始化程序?qū)⒔ios所支持的中斷向量,即將bios提供的中斷例程的入口地址登記在中斷向量表中。硬件系統(tǒng)檢測和初始化完成后,調(diào)用int 19h進行操作系統(tǒng)的引導(dǎo)。如果設(shè)為從軟盤啟動操作系統(tǒng),則int 19h將主要完成以下工作:(1) 控制0號軟驅(qū),讀取軟盤0道0面1扇區(qū)的內(nèi)容到 0:7c00(2) 將cs:ip指向0:7c00軟盤的0道0面1扇區(qū)中裝有操作系統(tǒng)引導(dǎo)程序。int 19h將其裝入到內(nèi)存0:7c00處后,設(shè)置cpu從0:7c00開始執(zhí)行此處的引導(dǎo)程序,操作系統(tǒng)
7、被激活,控制計算機。如果在0號軟驅(qū)中沒有軟盤,或發(fā)生軟盤i/o錯誤,則int 19h將主要完成以下工作:(1) 讀取硬盤c的0道0面1扇區(qū)的內(nèi)容到0:7c00 (2) 將cs:ip指向0:7c00由以上描述可知,若我們想要控制引導(dǎo)過程,只需: (1) 編寫程序 (2) 將該程序代碼寫入軟盤或硬盤c的0道0面1扇區(qū)。 因為以上工作會破壞軟盤或硬盤原有數(shù)據(jù),因此本次實驗,我們選擇軟盤存放我們自己的啟動程序。1.2 性能需求分析該操作系統(tǒng)在性能上應(yīng)達到如下要求:1)操作簡單,界面友好:本系統(tǒng)是采用的虛擬機軟盤映像文件驅(qū)動引導(dǎo)程序設(shè)計的啟動模式,操作起來簡單方便快捷;界面可以根據(jù)自己的喜好設(shè)成不同的格
8、式和布局。2)環(huán)境穩(wěn)定:該操作系統(tǒng)的設(shè)計主要是引導(dǎo)程序的引入、實模式下的運行、實模式到保護模式的轉(zhuǎn)換以及保護模式下內(nèi)核的加載運行,所以運行環(huán)境必須穩(wěn)定可靠。3)可擴展性:系統(tǒng)在結(jié)構(gòu)上應(yīng)該具有很好的擴展性,便于以后系統(tǒng)功能的擴展與開發(fā)。1.3 運行環(huán)境需求1.3.1 設(shè)備基于windows環(huán)境平臺下匯編編輯工具(editplus)或者基于linux環(huán)境下的文本編輯器;nasm編譯器;winhex16進制編輯器;裝有虛擬機的windows xp系統(tǒng)pc機一臺;linux系統(tǒng)pc機一臺。1.3.2 運行環(huán)境本次課程設(shè)計由于是通過虛擬機演示,主要用到虛擬機的軟盤通過鏡像文件引導(dǎo)加載程序,下面簡單介紹一
9、下運行平臺上的工具以及文件。1)虛擬機vmware1)關(guān)于vmware幾個重要概念1. vm(virtual machine)虛擬機,指由vmware模擬出來的一臺虛擬的計算機,也即邏輯上的一臺計算機; 2.host指物理存在的計算機,hosts os指host上運行的操作系統(tǒng); 3. guest os指運行在vm上的操作系統(tǒng)。例如在一臺安裝了windows nt的計算機上安裝了vmware,那么,host指的是安裝windows nt的這臺計算機,其hosts os為windows nt。vm上運行的是linux,那么linux即為guest os。2)軟盤映像文件映像文件是將資料和程序結(jié)合
10、而成的文件,它將來源資料經(jīng)過格式轉(zhuǎn)換后在硬盤上存成 與目的光盤內(nèi)容完全一樣的文件,然后我們可以將這個文件以一比一對應(yīng)的方式刻入光盤中。 在制作映像文件之前建議先做硬盤的資料重整與磁盤掃描,除此之外,由于一個映像文件的大小相當(dāng)于刻入光盤的全部內(nèi)容,所以一定要預(yù)留超過這個容量的硬盤空間來存儲這個映像文件。3)映像文件合成工具winhexwinhex 是一款以通用的 16 進制編輯器為核心,專門用來對付計算機取證、數(shù)據(jù)恢復(fù)、低級數(shù)據(jù)處理、以及 it 安全性、各種日常緊急情況的高級工具: 用來檢查和修復(fù)各種文件、恢復(fù)刪除文件、硬盤損壞、數(shù)碼相機卡損壞造成的數(shù)據(jù)丟失等。4)linux下的gcc編譯器li
11、nux系統(tǒng)下的gcc是gnu推出的功能強大、性能優(yōu)越的多平臺編譯器,是gnu的代表作之一。gcc是可以在多種硬件平臺上編譯出可執(zhí)行的超級編譯器,其執(zhí)行效率與一般的編譯器相比平均效率要高20%30%。gcc編譯器能將c、c+語言源程序、匯程式化序和目標(biāo)程序編譯、連接成可執(zhí)行文件,如果沒有給出可執(zhí)行文件的名字,gcc將生成一個名為a.out的文件。在linux系統(tǒng)中,可執(zhí)行文件沒有統(tǒng)一的后綴,系統(tǒng)從文件的屬性來區(qū)分可執(zhí)行文件和不可執(zhí)行文件。5)nasm編譯軟件要將源文件demo.asm匯編為exe文件,可以在command窗口輸入如下命令:nasm demo.asm -o demo1.exe要匯編
12、為32位windows程序,可以在command窗口輸入如下命令:nasm -f win32 demo.asm -o demo2.exe要匯編為64位windows程序,可以在command窗口輸入如下命令:nasm -f win64 demo.asm -o demo3.exenasm命令的-o參數(shù)用于指定輸出文件的文件名,-f用于指明文件格式,如果沒有指明文件格式,則默認(rèn)編譯為bin格式,即純二進制代碼。所以,上面的demo1.exe實際上是個.com文件。2系統(tǒng)設(shè)計2.1 引導(dǎo)程序和模式切換功能設(shè)計2.1.1 引導(dǎo)程序設(shè)計首先通過一個小程序作為引導(dǎo)程序,引導(dǎo)程序的主要作用是起到引導(dǎo)的作用,
13、它將一個字符串輸出顯示到屏幕上,其源代碼如下。org07c00h ; 告訴編譯器程序加載到7c00處movax, csmovds, axmoves, axcalldispstr; 調(diào)用顯示字符串例程jmp$ ; 無限循環(huán)dispstr:movax, bootmessagemovbp, ax ; es:bp = 串地址movcx, 16 ; cx = 串長度movax, 01301h ; ah = 13, al = 01hmovbx, 000ch ; 頁號為0(bh = 0) 黑底紅字(bl = 0ch,高亮)movdl, 0int10h; 10h 號中斷retbootmessage:dbyan
14、gjing2008540330!times 510-($-$)db0 ; 填充剩下的空間,使生成的二進制代碼恰好為512字節(jié)dw 0xaa55 ; 結(jié)束標(biāo)志2.1.2 模式切換功能設(shè)計在引導(dǎo)程序的基礎(chǔ)上實現(xiàn)模式切換功能,實現(xiàn)實模式到保護模式的切換,具體實現(xiàn)的方式和方案如下:bits 16org 0x7c00 jmp main; -; 數(shù)據(jù)定義bootdrive db 0; -; gdt 定義,此處定義段及段描述符gdt: gdt_null: ; 這是cpu要求保留的,cpu要求第一個段必須是空段,不知它 ; 想用來干啥 dd 0 dd 0 ; 每個段的描述符是64位(8字節(jié)),空描述符的這64
15、位全是0 gdt_code_addr equ $ - gdt ; 求得代碼段在gdt表中的位置 gdt_code: dw 0xffff ; 段大小為4gb dw 0 ; 基地址(24位) db 0 db 10011010b ;屬性描述位,指明此是代碼段,可讀可執(zhí)行 db 11001111b ;具體的每一位是代表什么可查intel cpu編程手冊 db 0 ;沒有的可以去網(wǎng)上下,也可以找我要 gdt_data_addr equ $ - gdt ;求得數(shù)據(jù)段在gdt表中的位置 gdt_data: dw 0xffff dw 0 db 0 db 10010010b ; 指明此是數(shù)據(jù)段,可讀可寫 db
16、11001111b db 0 gdt_end: gdt_addr: dw gdt_end - gdt - 1 ;gdt 表的大小 dd gdt ; gdt 表的位置; -main: ; 引導(dǎo)程序從此處開始執(zhí)行 mov bootdrive , dl ; 得到啟動的驅(qū)動器號 xor ax , ax ; 設(shè)置 ds mov ds , ax ; 清屏 ;mov ax , 3 ;設(shè)置清屏功能號 ;int 0x10 ; 調(diào)用 bios 10 號中斷清屏 .resetfloppy ;重置磁盤,不是必須的,主要是為了安全起見 mov ax , 0 ; 設(shè)置重置磁盤的功能號 mov dl , bootdrive
17、 ; 選擇啟動磁盤 int 0x13 ;調(diào)用 bios 13號中斷重置磁盤 jc .resetfloppy ; 如果出錯則重試 .readfloppy ; 讀內(nèi)核到內(nèi)存中 0000:9000 (es:bx)處,;為什么要讀到9000處,這不是一定的,;你可以讀到另外一個合適的地址;什么地址合適?怎樣知道一個地址合不合適?待會再說 xor ax , ax ;設(shè)置 es 寄存器 mov es , ax mov bx , 0x9000 mov ah , 2 ; 設(shè)置讀磁盤功能號 mov dl , bootdrive ; 設(shè)置欲讀驅(qū)動器號 mov ch , 0 ; 磁頭號 mov cl , 2 ; 起
18、始扇區(qū)號,從第二個扇區(qū)開始讀, ;第一個扇區(qū)是引導(dǎo)扇區(qū),第二個才是內(nèi)核所在 mov al , 17 ;需讀入扇區(qū)的數(shù)量,此處讀了17個扇區(qū) ; 是怕內(nèi)核較大,讀少了讀不完 int 13h ;調(diào)用 bios 13 號中斷開始讀扇區(qū), ; 此中斷會將數(shù)據(jù)讀到 es:bx 處 jc .readfloppy ; 如果出錯則重試(ah中是錯誤號,為0則沒錯) mov dl , bootdrive ; 停止驅(qū)動器 mov edx , 0x3f2 mov al , 0x0c out dx , al cli ; 關(guān)中斷 lgdt gdt_addr ; 載入 gdt 的描述符 mov eax , cr0 ; 下
19、面三句設(shè)置 cr0 的第 0 位(pe位)為1, ; 表示進入保護模式 or eax , 1 mov cr0 , eax jmp gdt_code_addr:code_32 ; 跳入32位的代碼段中bits 32code_32: mov ax , gdt_data_addr ; 以下三句設(shè)置 ds,es,ss,fs,gs ; 為數(shù)據(jù)段描述表的位置 mov ds , ax mov es , ax mov ss , ax mov fs , ax mov gs , ax mov esp , 0xffff ; 設(shè)置堆棧的頭指針 jmp gdt_code_addr:0x9000 ; 跳入內(nèi)核,; gdt
20、_code_addr是定義的代碼段的描述符所在的索引; 由于我們先前是把內(nèi)核讀到了 0x9000的位置,; 因此我們現(xiàn)在就轉(zhuǎn)到內(nèi)核所在去執(zhí)行,; 引導(dǎo)程序勝利完成歷史使命!;- times 510-($-$) db 0db 0x55db 0xaa將此段代碼存儲為boot.asm文件,運用nasm編譯器編譯為boot.img文件。2.2 內(nèi)核設(shè)計內(nèi)核設(shè)計是本次課程設(shè)計最重要也是最關(guān)鍵的一個步驟,下面給出內(nèi)核設(shè)計的源程序。#includechar* msg = hello diqiu! ; void one();void two();void sleep(int x);void main() in
21、t i; unsigned char* videomem = ( unsigned char* )0xb8000 ; /* 獲得顯存地址 */while( *msg != 0 ) *videomem+ = *msg+ ; /* 設(shè)置顯示字符的ascii碼 */ *videomem+ = 0xfa ; /* 設(shè)置文字屬性(背景色,前景色,是否閃爍等)*/ sleep(5000);i+; one(); two(); for(;); void one() char* msg = 2008540330yangjing! ; unsigned char* videomem = ( unsigned ch
22、ar* )0xb80a0 ; /* 獲得顯存地址 */ while( *msg != 0 ) *videomem+ = *msg+ ; /* 設(shè)置顯示字符的ascii碼 */ *videomem+ = 0xfb ; /*設(shè)置文字屬性(背景色,前景色,是否閃爍等)*/ sleep(5000); void two() char* msg = thank you! ; unsigned char* videomem = ( unsigned char* )0xb8140 ; /* 獲得顯存地址 */ while( *msg != 0 ) *videomem+ = *msg+ ; /*設(shè)置顯示字符的ascii碼 */ *videomem+ = 0xfc ; /*設(shè)置文字屬性(背景色,前景色,是否閃爍等)*/ sleep(5000); /*void sleep() int i; int n=10; for(i=1;i=n;i+) printf(%d,i); sleep(5*1000*60); /這里修改延時時間*/void sleep(int x) int i,j; for(i=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幕墻施工安裝合同
- 三農(nóng)村社區(qū)公共基礎(chǔ)設(shè)施建設(shè)規(guī)劃方案
- 企業(yè)法律咨詢服務(wù)合同
- 員工年終工作總結(jié)報告
- 高中語文必修(下)第二單元《竇娥冤》教學(xué)設(shè)計
- Unit 6 Review Lesson 1(教學(xué)設(shè)計)-2024-2025學(xué)年北師大版(三起)(2024)英語三年級上冊
- 第8課 歐洲思想解放運動 教學(xué)設(shè)計-2023-2024學(xué)年高一統(tǒng)編版2019必修中外歷史綱要下冊
- 10 塑料 教學(xué)設(shè)計-2024-2025學(xué)年科學(xué)一年級上冊湘科版
- 高中信息技術(shù)選修3教學(xué)設(shè)計-3.1 網(wǎng)絡(luò)的功能與構(gòu)造1-教科版
- 崇州北歐風(fēng)格墻布施工方案
- 春節(jié)習(xí)俗中的傳統(tǒng)茶文化與茶藝
- 醫(yī)療文書病歷書寫規(guī)范培訓(xùn)教學(xué)課件
- 土壤侵蝕分類分級標(biāo)準(zhǔn)SL190一2007
- 【《幼兒園安全教育研究文獻綜述》3300字】
- 網(wǎng)店運營管理(第二版)課件 1-網(wǎng)店運營基本原理
- 網(wǎng)絡(luò)安全架構(gòu)設(shè)計和網(wǎng)絡(luò)安全設(shè)備部署
- 小學(xué)體育-快速跑-途中跑教學(xué)課件設(shè)計
- 動力管道設(shè)計手冊-第2版
- 危險作業(yè)申請表
- 有限空間作業(yè)安全管理監(jiān)理實施細(xì)則
- 成人術(shù)后口渴癥狀評估與管理的專家共識課件
評論
0/150
提交評論