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

正文內(nèi)容

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

2025-07-06 06:16 本頁面
 

【正文】 操作系統(tǒng)課程設(shè)計(jì)報(bào)告題 目:Geekos操作系統(tǒng)的研究與實(shí)現(xiàn) 專 業(yè): 學(xué) 號(hào): 學(xué)生姓名: 指導(dǎo)教師: 2012年3月16日 目錄一、 實(shí)驗(yàn)?zāi)康?2二、 項(xiàng)目設(shè)計(jì)要求 3三、 開發(fā)環(huán)境的建立 41. 開發(fā)環(huán)境的介紹 42. 開發(fā)環(huán)境的構(gòu)建 4四、 項(xiàng)目設(shè)計(jì)原理 5五、 項(xiàng)目設(shè)計(jì)的實(shí)現(xiàn) 61. Project0項(xiàng)目的具體實(shí)現(xiàn) 62. Project1項(xiàng)目的具體實(shí)現(xiàn) 83. Project2項(xiàng)目的具體實(shí)現(xiàn) 9六、 系統(tǒng)編譯運(yùn)行的結(jié)果 20七、 遇到的問題和解決方法 23八、 課程設(shè)計(jì)總結(jié) 24 實(shí)驗(yàn)?zāi)康?. Project0:熟悉GeekOS的項(xiàng)目編譯、調(diào)試和運(yùn)行環(huán)境,掌握GeekOS運(yùn)行工作過程。2. Project1:熟悉ELF文件格式,了解GeekOS系統(tǒng)如何將ELF格式的可執(zhí)行程序裝入到內(nèi)存,建立內(nèi)核進(jìn)程并運(yùn)行的實(shí)現(xiàn)技術(shù)。3. Project2:擴(kuò)充GeekOS操作系統(tǒng)內(nèi)核,使得系統(tǒng)能夠支持用戶級(jí)進(jìn)程的動(dòng)態(tài)創(chuàng)建和執(zhí)行。 項(xiàng)目設(shè)計(jì)要求1. Project0(1) 搭建GeekOS的編譯和調(diào)試平臺(tái),掌握GeekOS的內(nèi)核進(jìn)程工作原理。(2) 熟悉鍵盤操作函數(shù),編程實(shí)現(xiàn)一個(gè)內(nèi)核進(jìn)程。該進(jìn)程的功能是:接收鍵盤輸入的字符并顯示到屏幕上,當(dāng)輸入ctrl+d時(shí),結(jié)束進(jìn)程的運(yùn)行。2. Project1(1) 修改/geekos/:在函數(shù)Parse_ELF_Executable( )中添加代碼,分析ELF格式的可執(zhí)行文件(包括分析得出ELF文件頭、程序頭,獲取可執(zhí)行文件長度,代碼段、數(shù)據(jù)段等信息),并填充Exe_Format數(shù)據(jù)結(jié)構(gòu)中的域值。(2) 在Linux環(huán)境下編譯系統(tǒng)得到GeekOS鏡像文件。(3) 編寫一個(gè)相應(yīng)的bochs配置文件。(4) 在bochs中運(yùn)行GeekOS系統(tǒng)顯示結(jié)果。3. Project2:要求用戶對(duì)以下幾個(gè)文件進(jìn)行修改:(1) “src/GeekOS/”文件中的函數(shù)Spawn(),其功能是生成一個(gè)新的用戶級(jí)進(jìn)程;(2) “src/GeekOS/”文件中的函數(shù)Switch_To_User_Context(),調(diào)度程序在執(zhí)行一個(gè)新的進(jìn)程前調(diào)用該函數(shù)以切換用戶地址空間;(3) “src/GeekOS/”文件中的函數(shù)Parse_ELF_Executable()。該函數(shù)的實(shí)現(xiàn)要求和項(xiàng)目1相同。(4) “src/GeekOS/”文件中主要是實(shí)現(xiàn)一些為實(shí)現(xiàn)對(duì)“src/GeekOS/”中高層操作支持的函數(shù)。(5) “src/GeekOS/”文件中的Start_User_Thread函數(shù)和Setup_User_Thread函數(shù)。Setup_User_Thread()函數(shù)的功能是為進(jìn)程初始化內(nèi)核堆棧,堆棧中是為進(jìn)程首次進(jìn)入用戶態(tài)運(yùn)行時(shí)設(shè)置處理器狀態(tài)要使用的數(shù)據(jù)。Start_User_Thread()是一個(gè)高層操作,該函數(shù)使用User_Context對(duì)象開始一個(gè)新進(jìn)程。(6) “src/GeekOS/”文件中主要是實(shí)現(xiàn)用戶程序要求內(nèi)核進(jìn)行服務(wù)的一些系統(tǒng)調(diào)用函數(shù)定義。要求用戶實(shí)現(xiàn)的有Sys_Exit()函數(shù)、Sys_PrintString()函數(shù)、Sys_GetKey()、Sys_SetAttr()、Sys_GetCursor()、Sys_PutCursor()、Sys_Spawn()函數(shù)、Sys_Wait()函數(shù)和Sys_GetPID( )函數(shù)。(7) :Spawn_Init_Process(void) 。 開發(fā)環(huán)境的建立1. 開發(fā)環(huán)境的介紹(1) Geekos是一個(gè)基于X86架構(gòu)的PC機(jī)上運(yùn)行的微操作系統(tǒng)內(nèi)核,由美國馬理蘭大學(xué)的教師開發(fā),是一個(gè)用C語言開發(fā)的操作系統(tǒng),GeekOS主要用于操作系統(tǒng)課程設(shè)計(jì),目的是使學(xué)生能夠?qū)嶋H動(dòng)手參與到一個(gè)操作系統(tǒng)的開發(fā)工作中。學(xué)生可以在Linux或Unix環(huán)境下對(duì)其進(jìn)行功能擴(kuò)充,也可以在windows下使用Cygwin工具進(jìn)行開發(fā),其主要特點(diǎn)是:簡(jiǎn)單、實(shí)用、易懂,便于學(xué)生們理解操作系統(tǒng)的設(shè)計(jì)思想和實(shí)現(xiàn)過程。出于教學(xué)目的,這個(gè)系統(tǒng)內(nèi)核設(shè)計(jì)簡(jiǎn)單,卻又兼?zhèn)鋵?shí)用性,它可以運(yùn)行在真正的X86 PC硬件平臺(tái)。(2)VMware WorkstationVMware Workstation 是一款功能強(qiáng)大的桌面虛擬計(jì)算機(jī)軟件,提供用戶可在單一的桌面上同時(shí)運(yùn)行不同的操作系統(tǒng),和進(jìn)行開發(fā)、測(cè)試 、部署新的應(yīng)用程序的最佳解決方案。它可以使你在一臺(tái)機(jī)器上同時(shí)運(yùn)行二個(gè)或更多Windows、DOS、LINUX系統(tǒng)。與“多啟動(dòng)”系統(tǒng)相比,VMWare采用了完全不同的概念。多啟動(dòng)系統(tǒng)在一個(gè)時(shí)刻只能運(yùn)行一個(gè)系統(tǒng),在系統(tǒng)切換時(shí)需要重新啟動(dòng)機(jī)器。VMWare是真正“同時(shí)”運(yùn)行,多個(gè)操作系統(tǒng)在主系統(tǒng)的平臺(tái)上,就象標(biāo)準(zhǔn)Windows應(yīng)用程序那樣切換。而且每個(gè)操作系統(tǒng)你都可以進(jìn)行虛擬的分區(qū)、配置而不影響真實(shí)硬盤的數(shù)據(jù),你甚至可以通過網(wǎng)卡將幾臺(tái)虛擬機(jī)用網(wǎng)卡連接為一個(gè)局域網(wǎng),極其方便。安裝在VMware操作系統(tǒng)性能上比直接安裝在硬盤上的系統(tǒng)低不少,因此,比較適合學(xué)習(xí)和測(cè)試。(3)Bochs PC 模擬器 GeekOS運(yùn)行于Windows(或Linux)下的Bochs PC模擬器,Bochs 是用 C++ 開發(fā)的可移植的 IA32 (x86) PC 模擬器,Bochs仿真器其實(shí)質(zhì)就是一臺(tái)虛擬PC機(jī),它包括對(duì) Intel x86 CPU 、通用 I/O 設(shè)備和可定制的 BIOS 的模擬,幾乎可以運(yùn)行在所有流行的平臺(tái)上。目前, Bochs 可以模擬 386, 486, Pentium Pro 或者 AMD64 CPU 。Bochs 的模擬環(huán)境中也可以運(yùn)行大部分的操作系統(tǒng),包括 Linux, Windows 95, DOS, Windows NT 4, FreeBSD, MINIX 等。2. 開發(fā)環(huán)境的構(gòu)建(1)下載并安裝VMware虛擬機(jī);(2)在VMware虛擬機(jī)上安裝CentOS版本的linux操作系統(tǒng)。(3)在VMware虛擬機(jī)上的linux環(huán)境下對(duì)GeekOS源文件進(jìn)行編譯和鏈接,;(4)下載并安裝系統(tǒng)仿真工具Bochs;(5)$ ./configure 配置bochs的文件(6)make 工具無論是在Linux還是在UNIX環(huán)境中,make都是一個(gè)非常重要的系統(tǒng)開發(fā)工具。利用make工具,可以將大型的開發(fā)項(xiàng)目分解成為多個(gè)更易于管理的模塊,對(duì)于一個(gè)包括幾百個(gè)源文件的應(yīng)用程序,使用make和makefile工具就可以簡(jiǎn)潔明快地理順各個(gè)源文件之間紛繁復(fù)雜的相互關(guān)系。 make能夠按照規(guī)則自動(dòng)完成編譯工作,并且可以只對(duì)程序員在上次編譯后修改過的文件進(jìn)行編譯,減少重復(fù)編譯的工作量。 它就是字符操作方式下的項(xiàng)目管理工具。$ make$ make install(7):vgaromimage: file=$BXSHARE/VGABIOSlgpllatestromimage: file=$BXSHARE/BIOSbochslatest, address=0xf0000megs: aboot: cfloppya: 1_44=, status=insertedfloppya: 1_44=, status=insertedlog: ./keyboard_serial_delay: 200floppy_mand_delay: 500vga_update_interval: 300000ips: 1000000mouse: enabled=0private_colormap: enabled=0i440fxsupport: enabled=0(8)啟動(dòng)Boch環(huán)境,在提示的出現(xiàn)GeekOS的歡迎界面。(9)GeekOS系統(tǒng)編譯和仿真成功。 項(xiàng)目設(shè)計(jì)原理1. Project0利用bochs模擬計(jì)算機(jī)執(zhí)行一個(gè)操作系統(tǒng)軟件。其中BIOSbochslastest文件模擬bochs硬件的BIOS。VGABIOSlgpllastest文件模擬bochs顯示系統(tǒng)的BIOS。其中, Wait_For_Key(void),循環(huán)等待一個(gè)鍵盤事件,然后返回一個(gè)16位的數(shù)據(jù) Keycode型的, 。Read_Key(Keycode* keycode)函數(shù)可以處理隊(duì)列鍵盤按鍵,可以保存到隊(duì)列中并輸出2. Project1在函數(shù)Parse_ELF_Executable( )中添加代碼,分析ELF格式的可執(zhí)行文件(包括分析得出ELF文件頭、程序頭,獲取可執(zhí)行文件長度,代碼段、數(shù)據(jù)段等信息),并填充Exe_Format數(shù)據(jù)結(jié)構(gòu)中的域值??蓤?zhí)行文件是通過源程序被編譯成目標(biāo)文件,多給目標(biāo)文件連接生成的,然后被加載到內(nèi)存運(yùn)行??蓤?zhí)行文件包含一些基本的要素——代碼、數(shù)據(jù)、重定位信息和符合信息。以及一些可選輔助信息,如調(diào)試信息、硬件信息等。因此,通過分析可執(zhí)行文件的信息,然后為其分配內(nèi)存并載入建立內(nèi)核線程,供系統(tǒng)調(diào)度運(yùn)行。3. Project2與priject1一樣,并與用戶程序一起編譯。再根據(jù)傳遞的中斷向量查找并調(diào)用相關(guān)的中斷處理程序,并實(shí)現(xiàn)調(diào)度進(jìn)程的選擇。 項(xiàng)目設(shè)計(jì)的實(shí)現(xiàn)1. Project0項(xiàng)目的具體實(shí)現(xiàn)(1)include geekos/include geekos/include geekos/include geekos/include geekos/include geekos/include geekos/include geekos/include geekos/include geekos/include geekos/void project0(){ Print(To Exit hit Ctrl + d.\n)。 Keycode keycode。 while(1) { if( Read_Key(amp。keycode) ) //讀取鍵盤按鍵狀態(tài) { if(!( (keycode amp。 KEY_SPECIAL_FLAG) || (keycode amp。 KEY_RELEASE_FLAG)) ) //只處理非特殊按鍵的按下事件 { int asciiCode = keycode amp。 0xff。 //低8位為Ascii碼 if( (keycode amp。 KEY_CTRL_FLAG)==KEY_CTRL_FLAG amp。amp。 asciiCode==39。d39。) //按下Ctrl鍵 { Print(\nBYE!\n)。 Exit(1)。 }else { Print(%c,(asciiCode==39。\r39。) ? 39。\n39。 : asciiCode)。
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1