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

正文內(nèi)容

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

2025-06-06 00:34本頁面
  

【正文】 //超過最大長度 return EINVALID。 } str = (char*) Malloc(len+1)。 //為字符串分配空間 if (0 == str){ rc = ENOMEM。 goto fail。 } if (!Copy_From_User(str, uaddr, len)){ //從用戶空間中復(fù)制數(shù)據(jù) rc = EINVALID。 Free(str)。 goto fail。 } str[len] = 39。\039。 //成功 *pStr = str。 fail: return rc。 } static int Sys_Exit(struct Interrupt_State* state) { //TODO(Exit system call)。 Exit(stateebx)。 } static int Sys_PrintString(struct Interrupt_State* state) { //TODO(PrintString system call)。 int rc = 0。//返回值 uint_t length = stateecx。//字符串長度 uchar_t* buf = 0。 if (length 0) { /* Copy string into kernel. 將字符串復(fù)制到內(nèi)核 */ if ((rc = Copy_User_String(stateebx, length, 1023, (char**) amp。buf)) != 0) goto done。 /* Write to console. 將字符串打印到屏幕 */ Put_Buf(buf, length)。 } done: if (buf != 0) Free(buf)。 return rc。 } static int Sys_GetKey(struct Interrupt_State* state) { //TODO(GetKey system call)。 return Wait_For_Key()。 //返回按鍵碼 () } static int Sys_SetAttr(struct Interrupt_State* state) { //TODO(SetAttr system call)。 Set_Current_Attr((uchar_t) stateebx)。 return 0。 } static int Sys_GetCursor(struct Interrupt_State* state) { //TODO(GetCursor system call)。 int row, col。 Get_Cursor(amp。row, amp。col)。 if (!Copy_To_User(stateebx, amp。row, sizeof(int)) ||!Copy_To_User(stateecx, amp。col, sizeof(int))) return 1。 return 0。 } static int Sys_PutCursor(struct Interrupt_State* state) { //TODO(PutCursor system call)。 return Put_Cursor(stateebx, stateecx) ? 0 : 1。 } static int Sys_Spawn(struct Interrupt_State* state) { //TODO(Spawn system call)。 int rc。 //函數(shù)返回值 char *program = 0。 //進(jìn)程名稱 char *mand = 0。 //用戶命令 struct Kernel_Thread *process。 /* Copy program name and mand from user space. */ if ((rc = Copy_User_String(stateebx, stateecx, VFS_MAX_PATH_LEN, amp。program)) != 0) {//從用戶空間復(fù)制進(jìn)程名稱 goto fail。 } if(rc = Copy_User_String(stateedx, stateesi, 1023, amp。mand)) != 0) {//從用戶空間復(fù)制用戶命 令 goto fail。 } Enable_Interrupts()。 //開中斷 rc = Spawn(program, mand, amp。process)。//得到進(jìn)程名稱和用戶命令后便可生成一個新進(jìn)程 if (rc == 0) {//若成功則返回新進(jìn)程 ID 號 KASSERT(process != 0)。 rc = processpid。 } Disable_Interrupts()。//關(guān)中斷 0 的錯誤代碼 if (program != 0) Free(program)。 if (mand != 0) Free(mand)。 return rc。 } static int Sys_Wait(struct Interrupt_State* state) { //TODO(Wait system call)。 int exitCode。 struct Kernel_Thread *kthread = Lookup_Thread(stateebx)。 if (kthread == 0) return 12。 Enable_Interrupts()。 exitCode = Join(kthread)。 Disable_Interrupts()。 return exitCode。 } static int Sys_GetPID(struct Interrupt_State* state) { //TODO(GetPID system call)。 return g_currentThreadpid。 } ================= ================== static void Spawn_Init_Process(void) { //TODO(Spawn the init process)。 struct Kernel_Thread *pThread。 Spawn(/c/,/c/,amp。pThread)。 } 編譯,成功之后 生成 文件。 . 編寫相應(yīng)的 bochs 配置文件,配置文件需加上以下內(nèi)容 vgaromimage: file=$BXSHARE/VGABIOSlgpllatest romimage: file=$BXSHARE/BIOSbochslatest, address=0xf0000 megs: 8 boot: a 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 ata0:enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 ata0master:type=disk,mode=flat,path=,cylinders=40,heads=8,spt=64 進(jìn)入 /os/ pp/project1/build 目錄 執(zhí)行 make depend 執(zhí)行 make 成功之后在 build 目錄下生成 、 文件。 啟動 bochs 在 build 目錄中執(zhí)行 4 遇到問題及 解決方法 在安裝實驗環(huán)境時,由于以前未安裝過,所以還是花費了比較多的時間。在編譯好項目后要在 bochs下運行,由于對 bochs的應(yīng)用方法并不清楚,所以出現(xiàn)了不能正常啟動的情況,經(jīng)過后來查找資料,發(fā)現(xiàn)這個問題主要和 bochs 的配置文件有關(guān),還與安裝不同的 LINUX系統(tǒng)有關(guān)。于是按照課本提示和在網(wǎng)上查找的資料把配置文件搞定后,項目能正常運行了。 項目 0相對比較簡單,并且已經(jīng)有人已經(jīng)做過了,做起來相對容易。通過這個項目,對內(nèi)核進(jìn)程的創(chuàng)建有了初步認(rèn)識。 項目 1雖然只要實現(xiàn)一個函數(shù),但主要理解 ELF文件的裝入與執(zhí)行。 參考了相關(guān)的文件,通過修改相關(guān)的代碼,成功的運行出了結(jié)果。 項目 2要做的工作就很多了,也花費了比較多的時間。建立用戶級進(jìn)程一定是要了解內(nèi)核進(jìn)程的創(chuàng)建全部過程,因為內(nèi)核進(jìn)程的創(chuàng)建代碼是已經(jīng)實現(xiàn)的。項目 2和項目 1都是要運行用戶程序,基本原理一樣的。有很多的問題一開始沒有明白,后來在同學(xué)的指點下,漸漸明白了,并和同學(xué)一起修改了相關(guān)的代碼,一起完成了項目 2的設(shè)計。 5 學(xué)習(xí)總結(jié) 經(jīng)過兩個星期的學(xué)習(xí)和實踐,我也算是順利的完成了操作系統(tǒng)課程設(shè)計,同時對計算機(jī)網(wǎng)絡(luò)有一個大致的了解,在實踐過程中遇到了很多的困難,感覺自 己很難將理論與實踐相結(jié)合,覺得我們學(xué)習(xí)的那些知識也派不上用場,通過這次課設(shè),我深刻的認(rèn)識到實踐與理論必須 要想結(jié)合才能使所學(xué)的知識變成可用的,通過自己的努力和老師同學(xué)們的幫助, 多了一種看待問題的角度;我也發(fā)現(xiàn)了我所學(xué)知識 不扎實 , 只是走馬觀花的應(yīng)付考試,在以后的學(xué)習(xí)中需要時刻的告誡自己,踏踏實實做好每一步。 本次課程設(shè)計是在虛擬機(jī)上操作的,但是經(jīng)過這兩周的學(xué)習(xí),我受益匪淺。首先,我進(jìn)一步弄懂了 C語言的編程方法和原則。其次,對 LINUX系統(tǒng)也有了一定的了解。本次課程設(shè)計使我明白了知識的重要性,同時也更加懂得 實踐更不可少。我們要經(jīng)常把所學(xué)的知識運用到實踐,這樣,才能充分的融會貫通。同時,也使我認(rèn)識到自己動手能力太差,為我以后的學(xué)習(xí)和發(fā)展提供了一個警鐘!本次課程設(shè)計的過程中,雖然遇到了不少問題,但最后還是成功的完成了。 這次課設(shè)對于我而言是有很大的收獲,懂得獨立尋找資料學(xué)習(xí),這是最大的收獲,在以后的工作中肯定會面臨不懂得問題,有了這次課設(shè)的經(jīng)驗,就能夠去獨立學(xué)習(xí)并解決困難。 參考文獻(xiàn) [1] 黃廷輝 ,王宇英 .計算機(jī)操作系統(tǒng)實踐教程 .北京:清華大學(xué)出版社, 2021. [2] 孫鐘秀,費翔林,駱斌 .操作系統(tǒng)教程 .北 京:高等教育出版社, 2021.
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1