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

正文內(nèi)容

geekos操作系統(tǒng)的研究與實(shí)現(xiàn)操作系統(tǒng)課程設(shè)計(jì)-免費(fèi)閱讀

  

【正文】 后來(lái)上機(jī)實(shí)驗(yàn)時(shí),有研究生學(xué)長(zhǎng)帶我們,通過(guò)他的操作和解釋?zhuān)斫饬诉@個(gè)課設(shè)如何去做,也了解了一些具體步驟如何進(jìn)行。3. PC機(jī)與虛擬機(jī)數(shù)據(jù)交換的問(wèn)題。 Spawn(/c/,/c/,amp。 Enable_Interrupts()。 } Disable_Interrupts()。program)) != 0) {//從用戶(hù)空間復(fù)制進(jìn)程名稱(chēng) goto fail。}static int Sys_PutCursor(struct Interrupt_State* state){ //TODO(PutCursor system call)。 int row, col。 }done: if (buf != 0) Free(buf)。 Exit(stateebx)。 } //從用戶(hù)空間中復(fù)制數(shù)據(jù) if (!Copy_From_User(str, uaddr, len)){ rc = EINVALID。 Make_Runnable_Atomic(kthread)。 /* edi */ Push(kthread, 0)。 //程序計(jì)數(shù)器 Push(kthread, 0)。 unsigned csSelector=userContextcsSelector。 //: check if memory if validated if (!Validate_User_Memory(UserContext, destInUser, bufSize)) return false。 //將初始化完畢的User_Context賦給*pUserContext *pUserContext = userContext。 i exeFormatnumSegments。numArgs, amp。//參數(shù)塊地址 struct User_Context *userContext = 0。 //釋放userContext本身占用的內(nèi)存 Free(userContext)。s memory */// Disable_Interrupts()。fail: if (UserContext != 0){ if (UserContextmemory != 0){ Free(UserContextmemory)。 //新建一個(gè)文本段描述符 Init_Code_Segment_Descriptor( amp。 memset(UserContextmemory, 39。/* 新進(jìn)程的核心棧. */ Set_Kernel_Stack_Pointer(esp0)。 struct User_Context* userContext = kthreaduserContext。//記錄當(dāng)前進(jìn)程的ID } else//超出內(nèi)存 project2\include\geekos rc = ENOMEM。userContext)) != 0) {//調(diào)用Load_User_Program將可執(zhí)行程序的程序段和數(shù)據(jù)段裝入內(nèi)存 Print(Failed to Load User Program!\n)。exeFileData, amp。(8):Spawn_Init_Process(void) ================== ===============//產(chǎn)生一個(gè)進(jìn)程(用戶(hù)態(tài))int Spawn(const char *program, const char *mand, struct Kernel_Thread **pThread){ //TODO(Spawn a process by reading an executable from a filesystem)。 Load_User_Program()函數(shù)的功能通過(guò)加載可執(zhí)行文件鏡像創(chuàng)建新進(jìn)程的User_Context結(jié)構(gòu)。 exeFormatentryAddr = hdrentry。 i hdrphnum。thread = Start_Kernel_Thread(amp。 Init_Scheduler()。\n39。amp。 Keycode keycode。Read_Key(Keycode* keycode)函數(shù)可以處理隊(duì)列鍵盤(pán)按鍵,可以保存到隊(duì)列中并輸出2. Project1在函數(shù)Parse_ELF_Executable( )中添加代碼,分析ELF格式的可執(zhí)行文件(包括分析得出ELF文件頭、程序頭,獲取可執(zhí)行文件長(zhǎng)度,代碼段、數(shù)據(jù)段等信息),并填充Exe_Format數(shù)據(jù)結(jié)構(gòu)中的域值。 make能夠按照規(guī)則自動(dòng)完成編譯工作,并且可以只對(duì)程序員在上次編譯后修改過(guò)的文件進(jìn)行編譯,減少重復(fù)編譯的工作量。而且每個(gè)操作系統(tǒng)你都可以進(jìn)行虛擬的分區(qū)、配置而不影響真實(shí)硬盤(pán)的數(shù)據(jù),你甚至可以通過(guò)網(wǎng)卡將幾臺(tái)虛擬機(jī)用網(wǎng)卡連接為一個(gè)局域網(wǎng),極其方便。 開(kāi)發(fā)環(huán)境的建立1. 開(kāi)發(fā)環(huán)境的介紹(1) 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ā)工作中。該函數(shù)的實(shí)現(xiàn)要求和項(xiàng)目1相同。 項(xiàng)目設(shè)計(jì)要求1. Project0(1) 搭建GeekOS的編譯和調(diào)試平臺(tái),掌握GeekOS的內(nèi)核進(jìn)程工作原理。(2) 熟悉鍵盤(pán)操作函數(shù),編程實(shí)現(xiàn)一個(gè)內(nèi)核進(jìn)程。(4) “src/GeekOS/”文件中主要是實(shí)現(xiàn)一些為實(shí)現(xiàn)對(duì)“src/GeekOS/”中高層操作支持的函數(shù)。學(xué)生可以在Linux或Unix環(huán)境下對(duì)其進(jìn)行功能擴(kuò)充,也可以在windows下使用Cygwin工具進(jìn)行開(kāi)發(fā),其主要特點(diǎn)是:簡(jiǎn)單、實(shí)用、易懂,便于學(xué)生們理解操作系統(tǒng)的設(shè)計(jì)思想和實(shí)現(xiàn)過(guò)程。安裝在VMware操作系統(tǒng)性能上比直接安裝在硬盤(pán)上的系統(tǒng)低不少,因此,比較適合學(xué)習(xí)和測(cè)試。 它就是字符操作方式下的項(xiàng)目管理工具。可執(zhí)行文件是通過(guò)源程序被編譯成目標(biāo)文件,多給目標(biāo)文件連接生成的,然后被加載到內(nèi)存運(yùn)行。 while(1) { if( Read_Key(amp。 asciiCode==39。 : asciiCode)。 Init_Traps()。project0,0,PRIORITY_NORMAL,false)。 i++) { segmentoffsetInFile = phdroffset。 return 0。 Copy_From_User()和Copy_To_User()函數(shù)的功能是在用戶(hù)地址空間和內(nèi)核地址空間之間復(fù)制數(shù)據(jù),在分段存儲(chǔ)器管理模式下,只要段有效,調(diào)用memcpy函數(shù)就可以實(shí)現(xiàn)這兩個(gè)函數(shù)的功能。 int rc。exeFileLength)) != 0 ) {//調(diào)用Read_Fully函數(shù)將名為program的可執(zhí)行文件全部讀入內(nèi)存緩沖區(qū) Print(Failed to Read File %s!\n, program)。 goto fail。 return rc。//指向User_Conetxt的指針,并初始化為準(zhǔn)備切換的進(jìn)程 KASSERT(!Interrupts_Enabled())。//設(shè)置內(nèi)核堆棧指針/* New user context is active */ s_currentUserContext = userContext。\039。UserContextldt[0], (ulong_t) UserContextmemory, size / PAGE_SIZE, USER_PRIVILEGE )。 } Free(UserContext)。// Free(userContextmemory)。 userContext=0。 //計(jì)算用戶(hù)態(tài)進(jìn)程所需的最大內(nèi)存空間 for (i = 0。argBlockSize)。 ++i) { struct Exe_Segment *segment = amp。 return 0。 //:kerneluser memcpy(UserContextmemory + destInUser, srcInKernel, bufSize)。//CS選擇子 unsigned dsSelector=userContextdsSelector。 //錯(cuò)誤代碼(0) Push(kthread, 0)。 /* ebp */ //初始化數(shù)據(jù)段寄存單元 Push(kthread, dsSelector)。 } return kthread。 Free(str)。}static int Sys_PrintString(struct Interrupt_State* state){ //TODO(PrintString system call)。 return rc。 Get_Cursor(amp。 return Put_Cursor(stateebx, stateecx) ? 0 : 1。 } if(rc = Copy_User_String(stateedx, stateesi, 1023, amp。//關(guān)中斷fail://返回小于0的錯(cuò)誤代碼 if (program != 0) Free(program)。 exitCode = Join(kthread)。pThread)。由于所安裝的linux系統(tǒng)是虛擬設(shè)備,就必須解決物理機(jī)與虛擬機(jī)的數(shù)據(jù)交換問(wèn)題。不過(guò)后來(lái)步驟雖然懂得了,但是原理性的還是得自己慢慢去理解課設(shè)書(shū)本上面的知識(shí)。只能先請(qǐng)教做的比較好的同學(xué),跟他們一起討論這些步驟該如何進(jìn)行。 Error 1,解決方案:現(xiàn)輸入命令$ su,提示輸入用戶(hù)密碼,輸入密碼后,在輸入命令:$ make file ,進(jìn)程正常運(yùn)行了。 struct Kernel_Thread *pThread。 if (kthread == 0) return 12。 rc = processpid。/* Copy program name and mand from user space. */ if ((rc = Copy_User_String(stateebx, stateecx, VFS_MAX_PATH_LEN, amp。 return 0。}static int Sys_GetCursor(struct Interrupt_State* state){ //TODO(GetCursor system call)
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1