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

正文內(nèi)容

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

 

【正文】 s_SetAttr()、Sys_GetCursor()、Sys_PutCursor()、Sys_Spawn()函數(shù)、Sys_Wait()函數(shù)和Sys_GetPID( )函數(shù)。//保存在內(nèi)存緩沖中的用戶程序可執(zhí)行文件 ulong_t exeFileLength。//調(diào)用Parse_ELF_Executable函數(shù)得到的可執(zhí)行文件信息 if ((rc = Read_Fully(program, (void**) amp。 } if((rc = Parse_ELF_Executable(exeFileData, exeFileLength, amp。exeFormat, mand, amp。 exeFileData = 0。 rc = processpid。//釋放內(nèi)存 if (userContext != 0) Destroy_User_Context(userContext)。 /* last user context used */ //extern int userDebug。 } if (userContext != s_currentUserContext) { ulong_t esp0。 //if (userDebug) // Print(S[%lx]\n, esp0)。 size = Round_Up_To_Page(size)。 //內(nèi)存為空 if (0 == UserContextmemory) goto fail。 UserContextsize = size。 //新建一個(gè)LDT選擇子 UserContextldtSelector = Selector(KERNEL_PRIVILEGE, true, Get_Descriptor_Index(UserContextldtDescriptor))。UserContextldt[1], (ulong_t) UserContextmemory, size / PAGE_SIZE, USER_PRIVILEGE )。 return UserContext。}//摧毀用戶上下文void Destroy_User_Context(struct User_Context* userContext){ //TODO(Destroy a User_Context)。/* Free the context39。// Enable_Interrupts()。 userContextmemory=0。 int i。//參數(shù)塊的大小 ulong_t size, argBlockAddr。 ++i) { // struct Exe_Segment *segment = amp。 } Get_Argument_Block_Size(mand, amp。//用戶進(jìn)程大小=參數(shù)塊總大小 + 進(jìn)程堆棧大小(8192) argBlockAddr = size。 for (i = 0。 //根據(jù)段信息將用戶程序中的各段內(nèi)容復(fù)制到分配的用戶內(nèi)存空間 memcpy(userContextmemory + segmentstartAddress, exeFileData + segmentoffsetInFile,segmentlengthInFile)。 userContextstackPointerAddr = argBlockAddr。 struct User_Context * UserContext = g_currentThreaduserContext。}//將內(nèi)核態(tài)的進(jìn)程復(fù)制到用戶態(tài)bool Copy_To_User(ulong_t destInUser, void* srcInKernel, ulong_t bufSize){ //TODO(Copy memory from kernel buffer to user buffer) struct User_Context * UserContext = g_currentThreaduserContext。}//切換到用戶地址空間void Switch_To_Address_Space(struct User_Context *userContext){ //TODO(Switch to user address space using segmentation/LDT)。 ulong_t eflags = EFLAGS_IF。 //初始化用戶態(tài)進(jìn)程堆棧,使之看上去像剛被中斷運(yùn)行一樣 //分別調(diào)用Push函數(shù)將以下數(shù)據(jù)壓入堆棧 Push(kthread, dsSelector)。 //文本選擇子 Push(kthread, userContextentryAddr)。 /* eax */ Push(kthread, 0)。 /* esi */ Push(kthread, 0)。 /* es */ Push(kthread, dsSelector)。 //為用戶態(tài)進(jìn)程 if (kthread != 0){ Setup_User_Thread(kthread, userContext)。 char *str。 goto fail。 } str[len] = 39。}static int Sys_Exit(struct Interrupt_State* state){ //TODO(Exit system call)。//返回值 uint_t length = stateecx。/* Write to console. 將字符串打印到屏幕 */ Put_Buf(buf, length)。 return Wait_For_Key()。}static int Sys_GetCursor(struct Interrupt_State* state){ //TODO(GetCursor system call)。col)。 return 0。 int rc。/* Copy program name and mand from user space. */ if ((rc = Copy_User_String(stateebx, stateecx, VFS_MAX_PATH_LEN, amp。 } Enable_Interrupts()。 rc = processpid。 return rc。 if (kthread == 0) return 12。 return exitCode。 struct Kernel_Thread *pThread。3..配置啟動(dòng)Bochs1. 創(chuàng)建bochs配置文件:輸入 gedit bochsrcbuild] gedit bochsrc注意:。 Error 1,解決方案:現(xiàn)輸入命令$ su,提示輸入用戶密碼,輸入密碼后,在輸入命令:$ make file ,進(jìn)程正常運(yùn)行了。后來查資料,發(fā)現(xiàn)可以安裝Vmware Tools來解決這個(gè)問題。只能先請(qǐng)教做的比較好的同學(xué),跟他們一起討論這些步驟該如何進(jìn)行。不過感覺還是不能把上學(xué)期在課堂上的知識(shí)用上,如果我們?cè)谙惹暗恼n堂學(xué)習(xí)時(shí)能夠提前了解課設(shè)要求的話,就可以針對(duì)課設(shè)進(jìn)行知識(shí)儲(chǔ)備,相信我們對(duì)于課設(shè)不會(huì)是現(xiàn)在這么個(gè)無從下手的感覺。不過后來步驟雖然懂得了,但是原理性的還是得自己慢慢去理解課設(shè)書本上面的知識(shí)。 課程設(shè)計(jì)總結(jié)操作系統(tǒng)課程設(shè)計(jì)安排在開學(xué)第三周做,第一次上課聽老師將課設(shè)的步驟和要求后,感覺很迷茫,很多都不懂,一頭霧水,不知道從哪里入手。由于所安裝的linux系統(tǒng)是虛擬設(shè)備,就必須解決物理機(jī)與虛擬機(jī)的數(shù)據(jù)交換問題。2. 在CentOS 。pThread)。 return g_currentThreadpid。 exitCode = Join(kthread)。 int exitCode。//關(guān)中斷fail://返回小于0的錯(cuò)誤代碼 if (program != 0) Free(program)。process)。 } if(rc = Copy_User_String(stateedx, stateesi, 1023, amp。 //進(jìn)程名稱 char *mand = 0。 return Put_Cursor(stateebx, stateecx) ? 0 : 1。row, sizeof(int)) ||!Copy_To_User(stateecx, amp。 Get_Cursor(amp。 Set_Current_Attr((uchar_t) stateebx)。 return rc。 if (length 0) {/* Copy string into kernel. 將字符串復(fù)制到內(nèi)核*/ if ((rc = Copy_User_String(stateebx, length, 1023, (char**) amp。}static int Sys_PrintString(struct Interrupt_State* state){ //TODO(PrintString system call)。 //成功 *pStr = str。 Free(str)。 } //為字符串分配空間 str = (char*) Malloc(len+1)。 } return kthread。 /* gs */} //開始用戶進(jìn)程struct Kernel_Thread* Start_User_Thread(struct User_Context* userContext, bool detached){ //TODO(Start user thread)。 /* ebp */ //初始化數(shù)據(jù)段寄存單元 Push(kthread, dsSelector)。 /* edx */ Push(kthread, 0)。 //錯(cuò)誤代碼(0) Push(kthread, 0)。 //堆棧指針 Push(kthread, eflags)。//CS選擇子 unsigned dsSelector=userContextdsS
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1