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

正文內(nèi)容

山東大學(xué)計(jì)算機(jī)學(xué)院操作系統(tǒng)實(shí)驗(yàn)報(bào)告-資料下載頁

2025-08-03 11:55本頁面
  

【正文】 fset + byteNum, bytesToRead)。 byteNum += bytesToRead。 }while(byteNum length)。 return byteNum。 }public int writeVirtualMemory(int vaddr, byte[] data, int offset, int length) { (offset = 0 amp。amp。 length = 0amp。amp。 offset + length = )。 byte[] memory = ().getMemory()。 int byteNum = 0。 do{ int pageIndex = (vaddr + byteNum)。 if (pageIndex 0 || pageIndex = || pageTable[pageIndex].readOnly) return 0。 int pageOffset = (vaddr+ byteNum)。 int bytesLeftInPage = pageSize pageOffset。 int bytesToWrite = (bytesLeftInPage, length byteNum)。 byteNum += bytesToWrite。 }while(byteNum length)。 byteNum = 0。 do{ int pageIndex = (vaddr + byteNum)。 int pageOffset = (vaddr+ byteNum)。 int bytesLeftInPage = pageSize pageOffset。 int bytesToWrite = (bytesLeftInPage, length byteNum)。 int physicalAddr=(pageTable[pageIndex].ppn, pageOffset)。 (data, offset + byteNum, memory, physicalAddr, bytesToWrite)。 byteNum += bytesToWrite。 }while(byteNum length)。return byteNum。}1. 要求實(shí)現(xiàn)系統(tǒng)調(diào)用exec, join, exit2. 分析這三個(gè)系統(tǒng)調(diào)用與進(jìn)程調(diào)度有關(guān)。其中:exec啟動(dòng)一個(gè)新的進(jìn)程; join與線程中的join操作類似,等待某進(jìn)程結(jié)束后當(dāng)前線程繼續(xù);exit退出當(dāng)前進(jìn)程。需要注意的是:1) 父進(jìn)程和子進(jìn)程不共享任何的內(nèi)存,文件或其它狀態(tài)。2) 只有父進(jìn)程能對(duì)子進(jìn)程進(jìn)行join操作。例如A執(zhí)行B,B執(zhí)行C,則A不允許join C,而B允許join C。3) 需要為每個(gè)進(jìn)程分配一個(gè)唯一的進(jìn)程編號(hào)。4) exit操作將使當(dāng)前進(jìn)程立即結(jié)束,如果父進(jìn)程對(duì)其進(jìn)行join操作,返回代碼應(yīng)返回。(5) 最后一個(gè)調(diào)用 exit 的進(jìn)程將使系統(tǒng)停機(jī)。3. 方案1) exec系統(tǒng)調(diào)用在該系統(tǒng)調(diào)用中, 第一個(gè)參數(shù)為文件名地址, 第二個(gè)參數(shù)為參數(shù)個(gè)數(shù), 第三個(gè)參數(shù)為參數(shù)表指針. 需要做的工作是:a) 讀虛擬內(nèi)存獲得文件名b) 處理參數(shù). 首先用第三個(gè)參數(shù)作為虛擬內(nèi)存地址得到參數(shù)表數(shù)組的首址, 然后用readVirtualMemoryString依次讀出每個(gè)參數(shù)c) , 將子進(jìn)程加入到父進(jìn)程私有的一個(gè)HashSet中d) 用saveState保存當(dāng)前進(jìn)程狀態(tài)e) f) 返回子進(jìn)程編號(hào) 2) join系統(tǒng)調(diào)用該系統(tǒng)調(diào)用中, 第一個(gè)參數(shù)為子進(jìn)程編號(hào), 第二個(gè)參數(shù)一個(gè)地址, 用于保存子進(jìn)程的返回值. 需要做的工作是:a) 檢查childProcesses, 如果子進(jìn)程編號(hào)不在其中則出錯(cuò)返回b) 如果子進(jìn)程編號(hào)在childProcesses中卻不在globalProcesses中, 說明子進(jìn)程已經(jīng)運(yùn)行結(jié)束, 則也返回并從childProcesses中移出該子進(jìn)程c) 在子進(jìn)程的joinSignal上執(zhí)行P操作掛起當(dāng)前進(jìn)程 (需要在exit系統(tǒng)調(diào)用中增加對(duì)當(dāng)前線程的joinSignal進(jìn)行V操作)d) 等子進(jìn)程返回時(shí), 得到返回代碼將其寫入第二個(gè)參數(shù)表示的地址中3) exit系統(tǒng)調(diào)用該系統(tǒng)調(diào)用的唯一參數(shù)為返回值. 需要做的工作為:a) 關(guān)閉所有打開的文件b) 調(diào)用unloadsections釋放內(nèi)存c) 從globalProcesses中移出當(dāng)前進(jìn)程編號(hào)d) 如果是最后一個(gè)進(jìn)程(globalProcesses為空) () 停機(jī)e) (在Nachos中每個(gè)用戶進(jìn)程只有一個(gè)線程) 4. 實(shí)現(xiàn)代碼private int handleExec(String file, String[] argv) { UserProcess process = ()。 int PID = ()。 (PID)。 (PID, process)。 if (!(file, argv)) return 1。 ProcessAlive++。 return PID。}private int handleJoin(int PID, int addr) { if (!(PID)) return 1。 (PID).()。 if ((PID) == null) return 0。 byte[] data = { (byte) (PID).intValue() }。 writeVirtualMemory(addr, data)。 return 1。}private void handleExit(int status) { (thread == ())。 if (ParentProcess != null) (GetProcessID())。 IteratorUserProcess ChildRemover = ().iterator()。 while (()) { ().ParentProcess = null。 } IteratorOpenFile FDRemover = ().iterator()。 while (()) { ().close()。 } unloadSections()。 if (ParentProcess != null) (GetProcessID(), status)。 ProcessAlive。 if (ProcessAlive == 0) ()。 ()。 (Can not schedule the user process + () + to exit)。}1. 要求實(shí)現(xiàn)彩票調(diào)度2. 分析彩票調(diào)度 (Lottery Schedule) 和Task ,只是下面兩點(diǎn)作了改變: 1) “優(yōu)先級(jí)” 的概念變成了 “彩票”,即表示該線程下次被運(yùn)行的幾率 2) 在調(diào)度過程中,并不是選擇彩票數(shù)最多的線程運(yùn)行,而是隨機(jī)抽取一張彩票,讓彩票的主人運(yùn)行。這樣,彩票越多,下次得到的運(yùn)行機(jī)會(huì)就越大。3. 方案。首先在getEffectivePriorityNachos中將選取最大優(yōu)先級(jí)的過程改成將所有等待線程的優(yōu)先級(jí) (彩票數(shù)) 加到lockHolder上 (即等待者把自己擁有的彩票給獲得鎖的線程),其次將nextThread修改如下:首先遍歷一遍隊(duì)列,計(jì)算出當(dāng)前隊(duì)列中的所有隊(duì)列的彩票總數(shù) (考慮過donation后的) numEffective,其次生成一個(gè) 0到numEffective 1之間的隨機(jī)數(shù)randomLottery表示抽取的彩票,最后再次遍歷一遍隊(duì)列,用累加器t計(jì)算彩票總數(shù),當(dāng)t的當(dāng)前值大于randomLottery時(shí)說明當(dāng)前循環(huán)到的線程正好落在目標(biāo)區(qū)間內(nèi),即選出該線程。4. 實(shí)現(xiàn)代碼public int getEffectivePriority() { if (effectivePriority != expiredEffectivePriority) return effectivePriority。 effectivePriority = priority。 if (waitors == null) return effectivePriority。 for (Iterator i = ()。 ()。 ) { ThreadState ts = (ThreadState)getThreadState((KThread)())。 effectivePriority += 。 } return effectivePriority。}protected ThreadState pickNextThread() { int numEffective = 0。 if (()) return null。 for (Iterator i = ()。 ()。 ) { ThreadState ts = (ThreadState) getThreadState((KThread)())。 numEffective+= ()。 } Random random = new Random()。 int randomLottery = (numEffective)。 int t = 0。 ThreadState toPick = null。 for (Iterator i = ()。 ()。 ) {ThreadState n = (ThreadState) getThreadState((KThread)())。 t+= ()。 if(trandomLottery){ toPick = n。 }} return toPick。}寧可累死在路上,也不能閑死在家里!寧可去碰壁,也不能面壁。是狼就要練好牙,是羊就要練好腿。什么是奮斗?奮斗就是每天很難,可一年一年卻越來越容易。不奮斗就是每天都很容易,可一年一年越來越難。能干的人,不在情緒上計(jì)較,只在做事上認(rèn)真;無能的人!不在做事上認(rèn)真,只在情緒上計(jì)較。拼一個(gè)春夏秋冬!贏一個(gè)無悔人生!早安!—————獻(xiàn)給所有努力的人.學(xué)習(xí)參考
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1