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

正文內(nèi)容

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

2025-06-27 06:16本頁面
  

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