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

正文內(nèi)容

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

2025-08-30 11:55 本頁面
 

【文章內(nèi)容簡介】 b。 lock1 = new Lock()。 childrenWaitOnOahu = new Condition(lock1)。 lock2 = new Lock()。 adultWaitOnOahu = new Condition(lock2)。 lock3 = new Lock()。 childrenReadyOnMolokai = new Condition(lock3)。 for(int i=0。iadults。i++){ new KThread(newAdult(childrenWaitOnOahu,adultWaitOnOahu,childrenReadyOnMolokai)).setName(adult).fork()。 } for(int i=0。ichildren1。i++){ new KThread(new Child(childrenWaitOnOahu,adultWaitOnOahu,childrenReadyOnMolokai)).setName(child).fork()。 } KThread t = new KThread(new Child(childrenWaitOnOahu,adultWaitOnOahu,childrenReadyOnMolokai))。 (child)。 ()。 ().yield()。 ()。 ()。 ()。 ()。 } static void AdultItinerary() { ()。 adultOnOahu++。 ()。 ()。 ()。 adultOnOahu。 adultOnMolokai++。 ()。 ()。 ()。 ()。 } static void ChildItinerary() { ()。 childrenOnOahu++。 ()。 ()。 ()。 while(true){ if(pilot!=1){ if(childrenOnOahu1){ ()。 ()。 pilot=1。 ()。 childrenOnOahu。 childrenOnMolokai++。 ()。 ()。 ()。 ()。 }else{ ()。 ()。 ()。 ()。 ()。 ()。 ()。 continue。 } }else{ if(adultOnOahu!=0){ ()。 childrenOnOahu。 childrenOnMolokai++。 ()。 ()。 ()。 ()。 ()。 ()。 }else{ ()。 over=true。 ()。 childrenOnOahu。 childrenOnMolokai++。 ()。 ()。 } } if(over==true){break。} else{ pilot=3。 ()。 childrenOnOahu++。 childrenOnMolokai。 continue。 }}} static void SampleItinerary() { (\n ***Everyone piles on the boat and goes to Molokai***)。 ()。 ()。 ()。 ()。}}private static class Child implements Runnable { Child(Condition childrenWaitOnOahu,Condition adultWaitOnOahu,Condition childrenReadyOnMolokai) { = location_now。 =childrenWaitOnOahu。 =adultWaitOnOahu。 =childrenReadyOnMolokai。 } public void run() { ChildItinerary()。 }private int Status。 private int location_now。//1:Oahu,2:Molokai private Condition childrenWaitOnOahu。 private Condition adultWaitOnOahu。private Condition childrenReadyOnMolokai。}private static class Adult implements Runnable { Adult(Condition childrenWaitOnOahu,Condition adultWaitOnOahu,Condition childrenReadyOnMolokai) { =childrenWaitOnOahu。 =adultWaitOnOahu。 =childrenReadyOnMolokai。 } public void run() { AdultItinerary()。 } private Condition childrenWaitOnOahu。 private Condition adultWaitOnOahu。 private Condition childrenReadyOnMolokai。}}三 Project2多道程序設(shè)計(jì)1. 要求實(shí)現(xiàn)六個(gè)系統(tǒng)調(diào)用creat, open, read, write, close, unlink2. 分析系統(tǒng)共提供了七個(gè)系統(tǒng)調(diào)用:halt (停機(jī), 已經(jīng)提供),creat (創(chuàng)建并打開磁盤文件),open (打開磁盤文件),read (讀IO, 可以是磁盤或屏幕),write (寫IO),close (關(guān)閉IO),unlink (刪除磁盤文件)。要確保如下幾點(diǎn):1) 穩(wěn)定性, 不能因?yàn)橐粋€(gè)進(jìn)程的非法系統(tǒng)調(diào)用就使操作系統(tǒng)崩潰, 而應(yīng)該返回錯(cuò)誤代碼。 2) halt 調(diào)用只能由第一個(gè)進(jìn)程 (root process) 執(zhí)行。 3) 系統(tǒng)調(diào)用需要讀寫內(nèi)存時(shí), 通過readVirtualMemory和writeVirtualMemory進(jìn)行。4) 文件名以null結(jié)尾, 不超過256字符。5) 如果系統(tǒng)調(diào)用出錯(cuò), 應(yīng)返回 1。 6) 為每個(gè)打開的IO文件分配一個(gè) “文件描述符”, 用整數(shù)表示. 每個(gè)進(jìn)程最多可以擁有16個(gè)。 其中0和1應(yīng)分配給標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出 (即屏幕), 這由SynchConsole類管理。不同進(jìn)程可以用相同的文件描述符處理不同的文件。7) Nachos已經(jīng)提供了一個(gè)簡單的文件系統(tǒng)FileSystem(Machine包中),。8) 系統(tǒng)不需要考慮文件訪問的互斥等問題。3. 方案1) create系統(tǒng)調(diào)用為了實(shí)現(xiàn) “文件描述符”, 為每個(gè)進(jìn)程開一張大小為16的數(shù)組 (本地描述符表), 下標(biāo)為描述符編號, 內(nèi)容為文件對象 (OpenFile類型, 描述符未使用為null). 此外, 需要一個(gè)全局的Hashtable (全局文件表), key為文件名, value為該文件名被多少個(gè)進(jìn)程打開。在Creat系統(tǒng)調(diào)用中,一般進(jìn)行如下操作:a) 用readVirtualMemoyString讀取文件名b) (第二個(gè)參數(shù)為true 表示創(chuàng)建新文件)c) 維護(hù)本地描述符表 (返回一個(gè)內(nèi)容為null的項(xiàng)目的下標(biāo)作為描述符, 將文件對象填入)d) 維護(hù)全局文件表 (如果全局表中沒有此文件名, 將 (文件名, 1) 放入, 否則將原來的元組的value加1)e) 返回文件描述符2) open系統(tǒng)調(diào)用在Open系統(tǒng)調(diào)用中進(jìn)行如下操作:a) 從內(nèi)存讀取文件名b) (第二個(gè)參數(shù)為false) c) 維護(hù)本地描述符表d) 維護(hù)全局文件表e) 返回文件描述符3) read系統(tǒng)調(diào)用Read系統(tǒng)調(diào)用的三個(gè)參數(shù)依次為: 文件描述符, 寫入的內(nèi)存地址, 讀取的字節(jié)數(shù)。在Read系統(tǒng)調(diào)用中進(jìn)行如下操作:a) 從本地描述符表中得到文件對象b) c) 將文件內(nèi)容寫入內(nèi)存d) 返回寫入內(nèi)存的字節(jié)數(shù)4) write系統(tǒng)調(diào)用Write系統(tǒng)調(diào)用的三個(gè)參數(shù)依次為: 文件描述符, 讀內(nèi)存的地址, 寫入文件的字節(jié)數(shù). 在Write系統(tǒng)調(diào)用中進(jìn)行如下操作:a) 從本地描述符表中得到文件對象b) 訪問內(nèi)存, 得到要寫入文件的內(nèi)容c) d) 返回寫入文件的字節(jié)數(shù)5) close系統(tǒng)調(diào)用Close系統(tǒng)調(diào)用的唯一一個(gè)參數(shù)為文件描述符. 在Close系統(tǒng)調(diào)用中進(jìn)行如下操作:a) 從本地描述符中得到文件對象b) c) 從本地描述符表中移出文件對象d) 從全局文件表中移出文件名的引用 (若value為1, 將其中的元組刪除, 否則將value減1)e) 返回06) unlink系統(tǒng)調(diào)用一般地。但是,一個(gè)文件可能被多個(gè)進(jìn)程打開而不能立即刪除,必須等所有打開這個(gè)文件的進(jìn)程都關(guān)閉該文件后才能刪除。因此,在Unlink調(diào)用中還要檢查文件名在全局文件表中的情況:若在全局文件表中不存在,則立即刪除。否則,將文件名添加到刪除隊(duì)列中。這樣,在Close系統(tǒng)調(diào)用中還要增加如下內(nèi)容:若文件關(guān)閉后它在全局文件表中已經(jīng)不存在且文件名在刪除隊(duì)列中,則此時(shí)執(zhí)行刪除文件操作,并將文件從刪除文件中移出。7) halt系統(tǒng)調(diào)用,若沒有則停機(jī)。8) 健壯性以上系統(tǒng)調(diào)用只是在一般情況下函數(shù)的執(zhí)行流程。為了提高系統(tǒng)的健壯性, 在系統(tǒng)調(diào)用中還要進(jìn)行下列錯(cuò)誤檢查(1表示出錯(cuò)): a) 文件名長度不得超過256字符
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1