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

正文內(nèi)容

山東大學(xué)計(jì)算機(jī)學(xué)院操作系統(tǒng)實(shí)驗(yàn)報(bào)告(參考版)

2025-08-06 11:55本頁(yè)面
  

【正文】 拼一個(gè)春夏秋冬!贏一個(gè)無(wú)悔人生!早安!—————獻(xiàn)給所有努力的人.學(xué)習(xí)參考。不奮斗就是每天都很容易,可一年一年越來(lái)越難。是狼就要練好牙,是羊就要練好腿。 }} return toPick。 t+= ()。 ()。 ThreadState toPick = null。 int randomLottery = (numEffective)。 numEffective+= ()。 ()。 if (()) return null。 } return effectivePriority。 ) { ThreadState ts = (ThreadState)getThreadState((KThread)())。 for (Iterator i = ()。 effectivePriority = priority。首先在getEffectivePriorityNachos中將選取最大優(yōu)先級(jí)的過(guò)程改成將所有等待線程的優(yōu)先級(jí) (彩票數(shù)) 加到lockHolder上 (即等待者把自己擁有的彩票給獲得鎖的線程),其次將nextThread修改如下:首先遍歷一遍隊(duì)列,計(jì)算出當(dāng)前隊(duì)列中的所有隊(duì)列的彩票總數(shù) (考慮過(guò)donation后的) numEffective,其次生成一個(gè) 0到numEffective 1之間的隨機(jī)數(shù)randomLottery表示抽取的彩票,最后再次遍歷一遍隊(duì)列,用累加器t計(jì)算彩票總數(shù),當(dāng)t的當(dāng)前值大于randomLottery時(shí)說(shuō)明當(dāng)前循環(huán)到的線程正好落在目標(biāo)區(qū)間內(nèi),即選出該線程。這樣,彩票越多,下次得到的運(yùn)行機(jī)會(huì)就越大。 (Can not schedule the user process + () + to exit)。 if (ProcessAlive == 0) ()。 if (ParentProcess != null) (GetProcessID(), status)。 while (()) { ().close()。 while (()) { ().ParentProcess = null。 if (ParentProcess != null) (GetProcessID())。 return 1。 byte[] data = { (byte) (PID).intValue() }。 (PID).()。 return PID。 if (!(file, argv)) return 1。 (PID)。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中, 說(shuō)明子進(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í), 得到返回代碼將其寫(xiě)入第二個(gè)參數(shù)表示的地址中3) exit系統(tǒng)調(diào)用該系統(tǒng)調(diào)用的唯一參數(shù)為返回值. 需要做的工作為:a) 關(guān)閉所有打開(kāi)的文件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 = ()。4) exit操作將使當(dāng)前進(jìn)程立即結(jié)束,如果父進(jìn)程對(duì)其進(jìn)行join操作,返回代碼應(yīng)返回。例如A執(zhí)行B,B執(zhí)行C,則A不允許join C,而B(niǎo)允許join C。需要注意的是:1) 父進(jìn)程和子進(jìn)程不共享任何的內(nèi)存,文件或其它狀態(tài)。}1. 要求實(shí)現(xiàn)系統(tǒng)調(diào)用exec, join, exit2. 分析這三個(gè)系統(tǒng)調(diào)用與進(jìn)程調(diào)度有關(guān)。 }while(byteNum length)。 (data, offset + byteNum, memory, physicalAddr, bytesToWrite)。 int bytesToWrite = (bytesLeftInPage, length byteNum)。 int pageOffset = (vaddr+ byteNum)。 byteNum = 0。 byteNum += bytesToWrite。 int bytesLeftInPage = pageSize pageOffset。 if (pageIndex 0 || pageIndex = || pageTable[pageIndex].readOnly) return 0。 int byteNum = 0。 offset + length = )。 length = 0amp。 }public int writeVirtualMemory(int vaddr, byte[] data, int offset, int length) { (offset = 0 amp。 }while(byteNum length)。 (memory, physicalAddr, data, offset + byteNum, bytesToRead)。 int bytesToRead = (bytesLeftInPage, length byteNum)。 int pageOffset = (vaddr+ byteNum)。 do{ int pageIndex = (vaddr + byteNum)。 byte[] memory = ().getMemory()。amp。amp。 } } return true。 pageTable[vpn] = new TranslationEntry(vpn,ppn,true,(),false,false)。 i++) { int vpn = ()+i。 for (int i=0。 s++) {CoffSection section = (s)。 for (int s=0。 return false。 if (ppns == null) { ()。 return false。 protected boolean loadSections() { if (numPages ().getNumPhysPages()) { ()。}private static Lock pageLock。 } ()。 return null。 i) { (new Integer(ppns[i]))。 if (intO == null) {//空閑頁(yè)已取完 for (i。 ilen。 int[] ppns = new int[len]。 ()。4. 實(shí)現(xiàn)代碼public static void releasePage(int ppn) { ()。然后,獲得物理地址,最后寫(xiě)入指定數(shù)組。它可以讀取任何虛擬地址開(kāi)始的任意數(shù)目的字節(jié) (在進(jìn)程可訪問(wèn)的內(nèi)存范圍內(nèi))。對(duì)于頁(yè)表中所有的頁(yè)面,只要將其虛擬頁(yè)號(hào)放入freePages隊(duì)列即可()。即為段中每個(gè)虛擬頁(yè)在pageTable中創(chuàng)建一個(gè)新的TranslationEntry對(duì)象并為其賦上相應(yīng)的虛擬頁(yè)號(hào)和物理頁(yè)號(hào)等信息。 Nachos中的虛擬地址是如下安排的:一個(gè)32位的地址,低10位是頁(yè)偏移量,高22位是頁(yè)號(hào),頁(yè)號(hào)的安排如下:第1個(gè)段的第1個(gè)頁(yè)面的虛擬頁(yè)面號(hào)為0, 第2個(gè)頁(yè)面的虛擬頁(yè)面號(hào)為1...第1個(gè)段完后,第2個(gè)段繼續(xù)按此方法編號(hào)。2) ,,它包括若干個(gè)段。該過(guò)程完成如下操作:1) 該進(jìn)程需要的頁(yè)面數(shù)已知,保存在numPage變量中。 開(kāi)始時(shí),freePages包括所有的物理頁(yè)面。3. 方案系統(tǒng)提供了頁(yè)表pageTable,它以虛擬頁(yè)號(hào)為下標(biāo),它存放了一個(gè)頁(yè)的下列信息:物理頁(yè)號(hào),虛擬頁(yè)號(hào),是否有效,是否只讀, 是否被用過(guò),是否臟。這個(gè)方案的簡(jiǎn)單之處在于, 虛擬空間的總?cè)萘亢臀锢砜臻g的總?cè)萘肯嗟? 映射機(jī)制只是從虛擬內(nèi)存到物理內(nèi)存的一一映射。故在裝入程序時(shí)就為每個(gè)進(jìn)程一次性分配固定的物理內(nèi)存, 在進(jìn)程結(jié)束時(shí)收回它們。}1. 要求實(shí)現(xiàn)多進(jìn)程內(nèi)存分配和訪問(wèn)2. 分析由于Nachos支持多道程序設(shè)計(jì), 所以理所當(dāng)然地不同進(jìn)程應(yīng)分配完全不同的物理內(nèi)存。 } else{ if (!(name)) return 1。}private int handleUnlink(String name) { if ((name)) { (name).close()。 ()。amp。 (name).unlink()。 String name = (FDnumber).getName()。 }private int handleClose(int FDnumber) { OpenFile file = (FDnumber)。 if (readVirtualMemory(buffer, buf) != count) return 1。 if (file == null) return 1。 return count。 int stat = (buf, 0, count)。 if (file == null)
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1