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

正文內(nèi)容

操作系統(tǒng)課程設(shè)計(jì)---geekos操作系統(tǒng)的研究與實(shí)現(xiàn)(已修改)

2025-06-22 00:34 本頁(yè)面
 

【正文】 操作系統(tǒng)課程設(shè)計(jì)說(shuō)明書(shū) 題 目: GeekOS 操作系統(tǒng)的研究與實(shí)現(xiàn) 系 別: 計(jì)算機(jī)科學(xué)與工程學(xué)院 目錄 1 GeekOS概述 3 1. 1GeekOS系統(tǒng)源代碼結(jié)構(gòu) 3 2 實(shí)驗(yàn)環(huán)境 4 3 項(xiàng)目實(shí)現(xiàn) 5 3. 1 project0 5 5 5 5 5 7 3. 2 project1 8 8 8 8 10 11 3. 3 project2 12 12 12 13 15 25 4 遇到問(wèn)題及解決方法 26 5 學(xué)習(xí)總結(jié) 26 參考文獻(xiàn) 27 1 GeekOS 概述 GeekOS是一個(gè)基于 X86架構(gòu)的 PC上運(yùn)行的微操作系統(tǒng)內(nèi)核。由美國(guó)馬理蘭大學(xué)的教師開(kāi)發(fā),是一個(gè)用 C語(yǔ)言開(kāi)發(fā)的操作系統(tǒng)。主要用于操作系統(tǒng)課程設(shè)計(jì),目的是使學(xué)生能夠?qū)嶋H動(dòng)手參與到一個(gè)操作系統(tǒng)的開(kāi)發(fā)工作中。出于教學(xué)目的,這個(gè)系統(tǒng)內(nèi)核設(shè)計(jì)簡(jiǎn)單,卻又兼?zhèn)鋵?shí)用性,它可以運(yùn)行在真正的 X86 PC硬件平臺(tái)。作為一個(gè)課程設(shè)計(jì)平臺(tái), GeekOS由一個(gè)基本的操作系統(tǒng)內(nèi)核作為基礎(chǔ),提供了操作系統(tǒng)與硬件之間的所有必備接口,實(shí)現(xiàn)了系統(tǒng)引導(dǎo)、實(shí)模式到保護(hù)模式的轉(zhuǎn)換、中斷調(diào)用及異常 處理、基于段式的內(nèi)存管理, FIFO 進(jìn)程調(diào)度算法以及內(nèi)核進(jìn)程、基本的輸入輸出(鍵盤(pán)作為輸入設(shè)備、顯示器作為輸出設(shè)備),以及一個(gè)用于存放用戶程序的只讀文件系統(tǒng) PFAT。學(xué)生可以在 Linux或 Unix環(huán)境下對(duì)其進(jìn)行功能擴(kuò)充,且其針對(duì)進(jìn)程、文件系統(tǒng)、存儲(chǔ)管理等操作系統(tǒng)核心內(nèi)容分別設(shè)計(jì)了 7個(gè)難度逐漸增加的項(xiàng)目供學(xué)生選擇 1. 1GeekOS 系統(tǒng)源代碼結(jié)構(gòu) GeekOS操作系統(tǒng)源文件 載。解壓后的 GeekOS目錄結(jié)構(gòu)如圖 13所示 : 在 doc目錄下文件 和 是 GeekOS 系統(tǒng)的參考文檔。 Scripts 目錄下有 startProject和 removeEmptyConflicts兩個(gè)腳本文件。 GeekOS系統(tǒng)的源文件在 src目錄下,分為 7個(gè)項(xiàng)目: Project0, Project1, Project2, Project3, Project4, Project5, Project6。每個(gè)項(xiàng)目的文件結(jié)構(gòu)都類(lèi)似,以 Project0為例,結(jié)構(gòu)如圖 14所示: 在 build 文件夾中,包含系統(tǒng)編譯后的可執(zhí)行文件的文件、軟盤(pán)鏡像或是硬盤(pán)鏡像、makefile項(xiàng)目管理文件。在 inculde文件夾中有 geekOS和 libc兩個(gè)子目錄,在 geekOS子目錄中有 ,,在 libc中包含有 geekOS支持的 C語(yǔ)言標(biāo)準(zhǔn)函數(shù) 頭文件。在 scripts文件夾是項(xiàng)目編譯時(shí)要用到的一些腳本文件。 Src 文件夾中 存放系統(tǒng)內(nèi)核源代碼,用戶修改 geekOS系統(tǒng)時(shí)要修改的源代碼如 中。在 User子目錄中一般是用來(lái)存放用戶的測(cè)試文件,在 tools 子目錄中的代碼是用來(lái)建立 PFAT測(cè)試文件系統(tǒng)的。 2 實(shí)驗(yàn)環(huán)境 ( 1)硬件環(huán)境:本次課設(shè)是在虛擬機(jī)上安裝 Linux進(jìn)行開(kāi)發(fā)調(diào)試,具體安裝使用方法如下: 安裝 linux 虛擬機(jī) 本次課設(shè)的虛擬機(jī)是運(yùn)行在 oracle VM Virtualbox 上的,下載 Linux鏡像文件后,即可按提示即可安裝。 GeekOS:是一個(gè)基于 X86 架構(gòu)的 PC機(jī)上運(yùn) 行的微操作系統(tǒng)內(nèi)核,由美國(guó) 馬理蘭大學(xué)的教師開(kāi)發(fā),是一個(gè)用 C語(yǔ)言開(kāi)發(fā)的操作系統(tǒng), GeekOS主要 用于操作系統(tǒng)課程設(shè)計(jì),目的是使學(xué)生能夠?qū)嶋H動(dòng)手參與到一個(gè)操作系統(tǒng)的 開(kāi)發(fā)工作中。 GeekOS的使用:打開(kāi) linux虛擬機(jī),直接解壓 GeekOS壓縮包就可使用, 無(wú)需安裝。 Bochs 安裝和使用:在 Linux 系統(tǒng)中需先解壓軟件包,然后再配置編譯生成系統(tǒng)文件。 ( 2)軟件環(huán)境:標(biāo)準(zhǔn) C語(yǔ)言 3 項(xiàng)目實(shí)現(xiàn) 3. 1 project0 熟悉 GeekOS的項(xiàng)目編譯、調(diào)試和運(yùn)行環(huán)境,掌 握 GeekOS運(yùn)行工作過(guò)程。 ( 1)搭建 GeekOS的編譯和調(diào)試平臺(tái),掌握 GeekOS的內(nèi)核進(jìn)程工作原理。 ( 2)熟悉鍵盤(pán)操作函數(shù),編程實(shí)現(xiàn)一個(gè)內(nèi)核進(jìn)程。該進(jìn)程的功能是:接受鍵盤(pán)輸入的字符并顯示到屏幕上,當(dāng)輸入 Ctrl+D時(shí),結(jié)束進(jìn)程的運(yùn)行。 項(xiàng)目要求從鍵盤(pán)輸入,因此要用到鍵盤(pán)處理函數(shù) 。 GeekOS 的鍵盤(pán)處理函數(shù)定義在 文件中。鍵盤(pán)的初始化是在 Main 函數(shù)中調(diào)用 Init_Keyboard 進(jìn)行的, Init_Keyboard主要功能是設(shè)置初始狀態(tài)下存放鍵盤(pán)掃描碼的緩沖區(qū),并為鍵盤(pán)中斷設(shè)置處理函數(shù)。而鍵盤(pán)中斷處理過(guò)程是:首先從相應(yīng)的 I/O端口讀取鍵盤(pán)掃描碼,根據(jù)是否按下 Shift鍵,分別在鍵值表中尋找掃描碼對(duì)應(yīng)的按鍵值,經(jīng)過(guò)處理后將鍵值放入鍵盤(pán)緩沖區(qū),最后通知系統(tǒng)重新調(diào)度進(jìn)程。 若用戶進(jìn)程需要從鍵盤(pán)輸入信息,可調(diào)用 Wait_For_Key()函數(shù) ,進(jìn)程調(diào)用該函數(shù)后,會(huì)阻塞進(jìn)入按鍵操作的等待隊(duì)列,直到按鍵操作結(jié)束,進(jìn)程才會(huì)被喚醒。 Start_Kernel_Thread函數(shù)主要功能就是建 立 一個(gè)內(nèi)核線程 。 本項(xiàng)目主要要求設(shè)計(jì)一個(gè)函數(shù)對(duì)鍵 盤(pán)的中斷進(jìn)行響應(yīng)。這主要通過(guò)使用 Geekos 提供的鍵盤(pán)響應(yīng)函數(shù) Wait_For_Key()進(jìn)行鍵盤(pán)中斷的響應(yīng)及返回鍵值。該函數(shù)首先檢查鍵盤(pán)緩沖區(qū)是否有按鍵,如果有,就讀取一個(gè)鍵碼,如果此時(shí)鍵盤(pán)緩沖區(qū)中沒(méi)有按鍵,就將線程放入鍵盤(pán)事件等待隊(duì)列。于是可分兩步完成 : 1 編寫(xiě)函數(shù),函數(shù)功能是:接受鍵盤(pán)輸入的按鍵,并將鍵值顯示到顯示器,當(dāng)輸入 Ctrl+D退出。 2 在 Main 函數(shù)體內(nèi)調(diào)用 Start_User_Thread 函數(shù),將編寫(xiě)的函數(shù)地址傳遞給startFunc,建立一個(gè)內(nèi)核進(jìn)程。 編寫(xiě)的函 數(shù) static void keyin(void) { Keycode keycode。 Print(\nWait for your input,Ctrl+d to exit\n)。 while(1) { keycode=Wait_For_Key()。 //讀取鍵盤(pán)按鍵狀態(tài) if(!( (keycode amp。 0x0100) || (keycode amp。 0x8000)) ) //處理非特殊按鍵的按下事件 { int asciiCode = keycode amp。 0x03ff。 //低 8 位為 Ascii碼 if( (keycode amp。 0x4000)==0x4000 amp。amp。 asciiCode==39。d39。) //按下 Ctrl鍵 { Print(\nBye\n)。 Exit(1)。 } else { Print(%c,(asciiCode==39。\r39。) ? 39。\n39。 : asciiCode)。 } } } } (2) 首先注釋 Main()函數(shù)中 TODO宏,并 調(diào)用 Start_Kernel_Thread函數(shù), 將步驟 1編寫(xiě)的函數(shù)地址傳遞給參數(shù),建立一個(gè)內(nèi)核級(jí)進(jìn)程 struct Kernel_Thread *thread。 thread = Start_Kernel_Thread(amp。project0,0,PRIORITY_NORMAL,false)。 (3) 執(zhí)行 make depend 及 make 命令,此時(shí)會(huì)在 build 目錄下生成 (4) 編寫(xiě) brochs 配置文件 vgaromimage: file=/usr/share/bochs/VGABIOSlgpllatest romimage: file=/usr/share/bochs/BIOSbochslatest, address=0xf0000 megs: 8 boot: a floppya: 1_44=, status=inserted floppya: 1_44=, status=inserted log: ./ keyboard_serial_delay: 200 floppy_mand_delay: 500 vga_update_interval: 300000 ips: 1000000 mouse: enabled=0 private_colormap: enabled=0 i440fxsupport: enabled=0 進(jìn)入 /os/ project0/build 目錄 執(zhí)行 make depend 執(zhí)行 make 成功之后在 build 目錄下生成 文件。 啟動(dòng) bochs 在 build 目錄中執(zhí)行 bochs –f bochsrc 成功后,運(yùn)行結(jié)果: 3. 2 project1 熟悉 ELF 文件格式,了解 GeekOS 系統(tǒng)如何將 ELF 格式的用戶可執(zhí)行程序裝入內(nèi)存,建立內(nèi)核進(jìn)程并運(yùn)行的實(shí)現(xiàn)技術(shù)。 (1)修改 /geekos/ 文件:在函數(shù) Parse_ELF_Executable()中添加代碼,分析 ELF格式的可執(zhí)行文件 (包括分析得出 ELF文件頭、程序頭,獲取可執(zhí)行文件長(zhǎng)度,代碼段、數(shù)據(jù)段等信息 ),并填充 Exe_Format數(shù)據(jù)結(jié)構(gòu)的域值。 (2)掌握 GeekOS在核心態(tài)運(yùn)行用戶程序的原理,為項(xiàng)目 2的實(shí)現(xiàn)做準(zhǔn)備。 ELF是 UNIX系統(tǒng)實(shí)驗(yàn)室作為應(yīng)用程序二進(jìn)制接口而開(kāi)發(fā)和發(fā)布的。有兩個(gè)平行視圖。 連接程序視圖 執(zhí)行程序視圖 ELF 頭部 ELF 頭部 程序頭部表(可選) 程序頭部表 節(jié)區(qū) 1 段 1 ... 節(jié)區(qū) n 段 2 ... ... ... 節(jié)區(qū)頭部表 節(jié)區(qū)頭部表(可選) GeekOS 中的用戶程序全部在系統(tǒng)的編譯階段完成編譯和連接,形成可執(zhí)行文件,用戶可執(zhí)行文件保存在 PFAT文件系統(tǒng)中。本項(xiàng)目要完成的就是在系統(tǒng)啟動(dòng)后,從 PFAT文件系統(tǒng)將可執(zhí)行文件裝入內(nèi)存,建立進(jìn)程并運(yùn)行得到相應(yīng)的輸出。 在磁盤(pán)中的 ELF文件的映像和在內(nèi)存中執(zhí)行程序鏡像間的對(duì)應(yīng)關(guān)系如下圖所示 而 此過(guò)程主要由 Spawner函數(shù)實(shí)現(xiàn),其主要經(jīng)過(guò)簡(jiǎn)要概述為:先調(diào)用 Read_Fully函數(shù)將文 件讀入內(nèi)存,后調(diào)用 Parse_ELF_Executable 函數(shù)分析 ELF 文件,最后調(diào)用Spawn_Pr
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1