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

正文內(nèi)容

geekos操作系統(tǒng)的研究與實現(xiàn)操作系統(tǒng)課程設(shè)計-展示頁

2025-07-03 06:16本頁面
  

【正文】 操作系統(tǒng)的設(shè)計思想和實現(xiàn)過程。(7) :Spawn_Init_Process(void) 。(6) “src/GeekOS/”文件中主要是實現(xiàn)用戶程序要求內(nèi)核進(jìn)行服務(wù)的一些系統(tǒng)調(diào)用函數(shù)定義。Setup_User_Thread()函數(shù)的功能是為進(jìn)程初始化內(nèi)核堆棧,堆棧中是為進(jìn)程首次進(jìn)入用戶態(tài)運(yùn)行時設(shè)置處理器狀態(tài)要使用的數(shù)據(jù)。(4) “src/GeekOS/”文件中主要是實現(xiàn)一些為實現(xiàn)對“src/GeekOS/”中高層操作支持的函數(shù)。3. Project2:要求用戶對以下幾個文件進(jìn)行修改:(1) “src/GeekOS/”文件中的函數(shù)Spawn(),其功能是生成一個新的用戶級進(jìn)程;(2) “src/GeekOS/”文件中的函數(shù)Switch_To_User_Context(),調(diào)度程序在執(zhí)行一個新的進(jìn)程前調(diào)用該函數(shù)以切換用戶地址空間;(3) “src/GeekOS/”文件中的函數(shù)Parse_ELF_Executable()。(3) 編寫一個相應(yīng)的bochs配置文件。2. Project1(1) 修改/geekos/:在函數(shù)Parse_ELF_Executable( )中添加代碼,分析ELF格式的可執(zhí)行文件(包括分析得出ELF文件頭、程序頭,獲取可執(zhí)行文件長度,代碼段、數(shù)據(jù)段等信息),并填充Exe_Format數(shù)據(jù)結(jié)構(gòu)中的域值。(2) 熟悉鍵盤操作函數(shù),編程實現(xiàn)一個內(nèi)核進(jìn)程。3. Project2:擴(kuò)充GeekOS操作系統(tǒng)內(nèi)核,使得系統(tǒng)能夠支持用戶級進(jìn)程的動態(tài)創(chuàng)建和執(zhí)行。操作系統(tǒng)課程設(shè)計報告題 目:Geekos操作系統(tǒng)的研究與實現(xiàn) 專 業(yè): 學(xué) 號: 學(xué)生姓名: 指導(dǎo)教師: 2012年3月16日 目錄一、 實驗?zāi)康?2二、 項目設(shè)計要求 3三、 開發(fā)環(huán)境的建立 41. 開發(fā)環(huán)境的介紹 42. 開發(fā)環(huán)境的構(gòu)建 4四、 項目設(shè)計原理 5五、 項目設(shè)計的實現(xiàn) 61. Project0項目的具體實現(xiàn) 62. Project1項目的具體實現(xiàn) 83. Project2項目的具體實現(xiàn) 9六、 系統(tǒng)編譯運(yùn)行的結(jié)果 20七、 遇到的問題和解決方法 23八、 課程設(shè)計總結(jié) 24 實驗?zāi)康?. Project0:熟悉GeekOS的項目編譯、調(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)行的實現(xiàn)技術(shù)。 項目設(shè)計要求1. Project0(1) 搭建GeekOS的編譯和調(diào)試平臺,掌握GeekOS的內(nèi)核進(jìn)程工作原理。該進(jìn)程的功能是:接收鍵盤輸入的字符并顯示到屏幕上,當(dāng)輸入ctrl+d時,結(jié)束進(jìn)程的運(yùn)行。(2) 在Linux環(huán)境下編譯系統(tǒng)得到GeekOS鏡像文件。(4) 在bochs中運(yùn)行GeekOS系統(tǒng)顯示結(jié)果。該函數(shù)的實現(xiàn)要求和項目1相同。(5) “src/GeekOS/”文件中的Start_User_Thread函數(shù)和Setup_User_Thread函數(shù)。Start_User_Thread()是一個高層操作,該函數(shù)使用User_Context對象開始一個新進(jìn)程。要求用戶實現(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ù)。 開發(fā)環(huán)境的建立1. 開發(fā)環(huán)境的介紹(1) Geekos是一個基于X86架構(gòu)的PC機(jī)上運(yùn)行的微操作系統(tǒng)內(nèi)核,由美國馬理蘭大學(xué)的教師開發(fā),是一個用C語言開發(fā)的操作系統(tǒng),GeekOS主要用于操作系統(tǒng)課程設(shè)計,目的是使學(xué)生能夠?qū)嶋H動手參與到一個操作系統(tǒng)的開發(fā)工作中。出于教學(xué)目的,這個系統(tǒng)內(nèi)核設(shè)計簡單,卻又兼?zhèn)鋵嵱眯裕梢赃\(yùn)行在真正的X86 PC硬件平臺。它可以使你在一臺機(jī)器上同時運(yùn)行二個或更多Windows、DOS、LINUX系統(tǒng)。多啟動系統(tǒng)在一個時刻只能運(yùn)行一個系統(tǒng),在系統(tǒng)切換時需要重新啟動機(jī)器。而且每個操作系統(tǒng)你都可以進(jìn)行虛擬的分區(qū)、配置而不影響真實硬盤的數(shù)據(jù),你甚至可以通過網(wǎng)卡將幾臺虛擬機(jī)用網(wǎng)卡連接為一個局域網(wǎng),極其方便。(3)Bochs PC 模擬器 GeekOS運(yùn)行于Windows(或Linux)下的Bochs PC模擬器,Bochs 是用 C++ 開發(fā)的可移植的 IA32 (x86) PC 模擬器,Bochs仿真器其實質(zhì)就是一臺虛擬PC機(jī),它包括對 Intel x86 CPU 、通用 I/O 設(shè)備和可定制的 BIOS 的模擬,幾乎可以運(yùn)行在所有流行的平臺上。Bochs 的模擬環(huán)境中也可以運(yùn)行大部分的操作系統(tǒng),包括 Linux, Windows 95, DOS, Windows NT 4, FreeBSD, MINIX 等。(3)在VMware虛擬機(jī)上的linux環(huán)境下對GeekOS源文件進(jìn)行編譯和鏈接,;(4)下載并安裝系統(tǒng)仿真工具Bochs;(5)$ ./configure 配置bochs的文件(6)make 工具無論是在Linux還是在UNIX環(huán)境中,make都是一個非常重要的系統(tǒng)開發(fā)工具。 make能夠按照規(guī)則自動完成編譯工作,并且可以只對程序員在上次編譯后修改過的文件進(jìn)行編譯,減少重復(fù)編譯的工作量。$ 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)啟動Boch環(huán)境,在提示的出現(xiàn)GeekOS的歡迎界面。 項目設(shè)計原理1. Project0利用bochs模擬計算機(jī)執(zhí)行一個操作系統(tǒng)軟件。VGABIOSlgpllastest文件模擬bochs顯示系統(tǒng)的BIOS。Read_Key(Keycode* keycode)函數(shù)可以處理隊列鍵盤按鍵,可以保存到隊列中并輸出2. Project1在函數(shù)Parse_ELF_Executable( )中添加代碼,分析ELF格式的可執(zhí)行文件(包括分析得出ELF文件頭、程序頭,獲取可執(zhí)行文件長度,代碼段、數(shù)據(jù)段等信息),并填充Exe_Format數(shù)據(jù)結(jié)構(gòu)中的域值??蓤?zhí)行文件包含一些基本的要素——代碼、數(shù)據(jù)、重定位信息和符合信息。因此,通過分析可執(zhí)行文件的信息,然后為其分配內(nèi)存并載入建立內(nèi)核線程,供系統(tǒng)調(diào)度運(yùn)行。再根據(jù)傳遞的中斷向量查找并調(diào)用相關(guān)的中斷處理程序,并實現(xiàn)調(diào)度進(jìn)程的選擇。 Keycode keycode。keycode) ) //讀取鍵盤按鍵狀態(tài) { if(!( (keycode amp。 KEY_RELEASE_FLAG)) ) //只處理非特殊按鍵的按下事件 { int asciiCode = keycode amp。 //低8位為Ascii碼 if( (keycode amp。amp。d39。 Exit(1)。\r39。\n39。 } } } }}void Main(struct Boot_Info* bootInfo){ Init_BSS()。 Init_Mem(bootInfo)。 Init_TSS()。 Init_Scheduler()。 Init_Timer()。 Set_Current_Attr(ATTRIB(BLACK, GREEN|BRIGHT))。 Set_Current_Attr(ATTRIB(BLACK, GRAY))。thread = Start_Kernel_Thread(amp。 Exit(0)。 elfHeader *hdr =(elfHeader*) exeFileData。 struct Exe_Segment * segment= exeFormatsegmentList。 i hdrphnum。 segmentlengthInFile = phdrfileSize。 segmentsizeInMemory = phdrmemSize。 segment++。 exeFormatentryAddr = hdrentry。}(2)編譯文件終端打開目錄: $ cd project1/build 在其目錄下:$ make $ make depend 編譯,生成文件 (3)建立配置文件bochsrc終端打開目錄: $ cd project1/build建立配置文件: $ gedit .bochs修改其內(nèi)容如下:config_interface: textconfigromimage: file=$BXSHARE/BIOSbochslatestmegs: 8vgaromimage: file=$BXSHARE/VGABIOSlgpllatest floppya: 1_44=./, status=insertedata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14ata1: enabled=0, ioaddr1=0x170, ioaddr2=0x370, irq=15ata2: enabled=0, ioaddr1=0x1e8, ioaddr2=0x3e0, irq=11ata3: enabled=0, ioaddr1=0x168, ioaddr2=0x360, irq=9ata0master: type=disk, path=, mode=flat, cylinders=40, heads=8, spt=64ata0slave: type=cdrom, path=/dev/cdrom, status=insertedboot: aips: 1000000log:./vga_update_interval: 300000keyboard_serial_delay: 250keyboard_paste_d
點擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1