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

正文內(nèi)容

操作系統(tǒng)課程設(shè)計(jì)報(bào)告_nachos_experiments_report(參考版)

2025-06-05 23:06本頁(yè)面
  

【正文】 在 TranslateEntry 中增加了一個(gè)新的屬性 recUsed 來(lái)記錄當(dāng)前頁(yè)的使用狀態(tài),當(dāng)發(fā)生缺頁(yè)中斷的時(shí)候進(jìn)行頁(yè)的換入換出。要實(shí)現(xiàn)缺頁(yè)中斷,則必須有一定的原則來(lái)進(jìn)行頁(yè)的換入換出操作。將線程也表的維護(hù)轉(zhuǎn)移到 load 函數(shù)中去,而內(nèi)存的清零操作在~AddrSpace 中執(zhí)行。 這樣的話,Nachos 系統(tǒng)便無(wú)法同時(shí)運(yùn)行多個(gè)互用程序。系統(tǒng)在創(chuàng)建 AddrSpace 的每個(gè)地址空間對(duì)象的時(shí)候后,都維護(hù)了一個(gè)頁(yè)表。2. 實(shí)驗(yàn)要求??創(chuàng)建虛存頁(yè)表,用于記錄所有使用的虛存??地址空間AddrSpace構(gòu)造函數(shù)中創(chuàng)建頁(yè)表操作應(yīng)該移到Load中.??在Load函數(shù)中根據(jù)裝載文件需要內(nèi)存的尺寸,創(chuàng)建該進(jìn)程的頁(yè)表,并在虛存頁(yè)表中添加相應(yīng)項(xiàng),將他們對(duì)應(yīng)起來(lái).??裝載程序時(shí),每一個(gè)頁(yè)面根據(jù)虛存頁(yè)表中的信息,存放入虛存文件或者實(shí)際內(nèi)存中.【實(shí)驗(yàn)過(guò)程】1. 問(wèn)題分析Nachos 系統(tǒng)在 中定義了 pageSize = 128,NumPhysPage = 128, 而 MemorySize = (NumPhysPages*PageSize)=16384 存的分頁(yè),并且限制了物理內(nèi)存的大小。并且,在加載用戶程序的時(shí)候,在 Load 函數(shù)載入一個(gè)用戶程序的時(shí)候,限制了程序大小。因此,Nachos 系統(tǒng)一次只能運(yùn)行一個(gè)線程。}實(shí)驗(yàn)結(jié)果和結(jié)論:完成了以下功能:,完成刪除、拷貝和重命名 編譯已經(jīng)通過(guò),測(cè)試基本成功。delete dir。 dirFetchFrom(directoryFile)。 OpenFile *openFile = NULL。}③ RenameFile 重命名文件函數(shù)描述:在directory目錄模塊中找到文件,修改成員變量name。}② Delete 刪除文件 函數(shù)文件:在directory目錄模塊中找到文件,并刪除。 strncpy(directoryname,des,10)。if (s = 0)openFile = new OpenFile(s)。directoryFetchFrom(directoryFile)。 函數(shù)原型:bool CopyFile(char *src , char *des){ OpenFile *openFile = NULL。//查找當(dāng)前文件夾及子文件夾下的文件}。//查找當(dāng)前文件夾下的文件 Directory* FindFolder(char *name)。//該鏈表存放文件夾 char name[FileNameMaxLen + 1]。//刪除文件夾... private:List Directory * *table。 // 增加文件夾 bool Remove(char *name)。 //構(gòu)造函數(shù)的傳入?yún)?shù)為文件夾的名字bool Add(char *name, int newSector)。}經(jīng)過(guò)小組討論,以及結(jié)合老師PPT上的內(nèi)容,我們決定將Nachos文件的順 序結(jié)構(gòu)轉(zhuǎn)化為樹狀結(jié)構(gòu),:Directory代表文件夾, DirectoryEntry代表文件, 每個(gè)文件夾下兩個(gè)鏈表,分別保存文件和子文件夾。semDataV()。}void SynchDisk::WriteSector(int sectorNumber, char* data){semDataP()。 semCountV()。count。 semCountV()。 count++。Step3:修改ReadSector和WriteSector兩個(gè)成員函數(shù)??刂脐?duì)文件系統(tǒng)的 訪問(wèn)),semCount(Semaphore。Step2:修改SynchDisk類,增加成員變量count(short。 Step1:在Disk類的ReadRequest函數(shù)中注釋掉Assert(!active)。Disk 模塊出現(xiàn)的問(wèn)題:限制了多線程對(duì)文件系統(tǒng)進(jìn)行訪問(wèn). Synchdisk 的解決方法:A.信號(hào)量,信號(hào)量在 P 操作上等待 ,信號(hào)量執(zhí)行 V 操作 限制:同一時(shí)間只能進(jìn)行一次讀/寫操作 改進(jìn)思路:根據(jù)經(jīng)典的讀者\(yùn)寫著問(wèn)題對(duì)該模塊進(jìn)行改進(jìn),采用信號(hào)量的方式,控制線程的讀寫訪問(wèn)。⑤ 同步磁盤( )和其它設(shè)備一樣,Nachos 模擬的磁盤是異步設(shè)備。通過(guò)文件頭可以獲取文件的所有信息。④ 文件頭模塊( )文件頭實(shí)際上就是UNIX 文件系統(tǒng)中所說(shuō)的inode結(jié)構(gòu),它給出一個(gè)文件除了 文件名之外的所有屬性,包括文件長(zhǎng)度、地址索引表等等(文件名屬性在目錄中給出)。當(dāng)用戶打開(kāi)了一個(gè)文件時(shí),系統(tǒng)即為其產(chǎn)生一個(gè)打開(kāi)文件控制結(jié)構(gòu),以后用戶對(duì)該文件的訪問(wèn)都可以通過(guò)該結(jié)構(gòu)。這樣不僅可以很容易的遍歷文件,也可以使得文件索引沒(méi)有大小的 限制。但是Nachos的實(shí)際文件目錄的存儲(chǔ)形式是順序存儲(chǔ)的,這樣的存儲(chǔ)方 式非常不人性化,查找效率也很不高。而要解決這個(gè)問(wèn)題,需要將數(shù)組存儲(chǔ)方式改為鏈表的存 儲(chǔ)方式,使文件索引可以無(wú)限制的增加,這樣的話,也可以不限制文件的大小。始終規(guī)定存放 DirectoryFile 的 FileHeader,此文件用于記 錄文件系統(tǒng)中各個(gè)文件的目錄結(jié)構(gòu)。始終規(guī)定存放 FreeMapFile 的 FileHeader,F(xiàn)reeMapFile 一 個(gè)位表(bitmap),用于標(biāo)識(shí)磁盤中有哪些扇區(qū)已被使用。并且 Nachos 采用的是順序結(jié)構(gòu),一次限 制了最多只能有 10 個(gè) DirectoryEntry 。Nachos 的物理磁盤是以扇區(qū)為訪問(wèn)單位的,將扇區(qū)從 0 開(kāi)始編號(hào)。 當(dāng)整個(gè)系統(tǒng)完成之后,只能使用第二套文件系統(tǒng)的實(shí)現(xiàn)。一套是 FILESYS_STUB文件系統(tǒng),它是建立在UNIX 文件系統(tǒng)之上的,而不使用Nachos 的 模擬磁盤?!締?wèn)題分析】Nachos 的文件系統(tǒng)是建立在 Nachos 的物理磁盤上的,文件系統(tǒng)的實(shí)現(xiàn)結(jié)構(gòu)File SystemOpenFDirectoFile HeaderSynchDiskDisk如圖 所示。目前 Nachos 系統(tǒng)采取的是直接索引的方法,導(dǎo) 致文件的尺寸受到限制,甚至還大小還不能大大 4K。目前 Nachos 文件系統(tǒng)的功能十分不完善,因 此,本實(shí)驗(yàn)系統(tǒng)通過(guò)編寫幾個(gè)完整的系統(tǒng)調(diào)用來(lái)實(shí)現(xiàn)文件的更名、拷貝和刪 除等操作。因此,本實(shí)驗(yàn)希望通過(guò)增加 樹狀結(jié)構(gòu),來(lái)實(shí)現(xiàn)目錄的多級(jí)管理制度。2. 實(shí)現(xiàn)多目錄機(jī)制。目前 Nachos 系統(tǒng)無(wú)法實(shí)現(xiàn)多線程同時(shí)對(duì)一 個(gè)文件進(jìn)行寫操作,但是可以同時(shí)進(jìn)行讀操作。?4.(可選),更改Nachos中文件空間分配機(jī)制,使其能夠支持最大2MB的文件,目前Nachos只能支持最大不超過(guò)4KB的文件。每個(gè)目錄下的文件個(gè)數(shù)沒(méi)有限制。參考文獻(xiàn):1.《 操作系統(tǒng)原理課程設(shè)計(jì)實(shí)驗(yàn)手冊(cè)》 2.《A Road Map Through Nachos》 3.《操作系統(tǒng)設(shè)計(jì)()》 、Google 實(shí)驗(yàn)項(xiàng)目三實(shí)驗(yàn)名稱:文件系統(tǒng)升級(jí)實(shí)驗(yàn)?zāi)康模?,目前的Nachos系統(tǒng)同時(shí)只允許一個(gè)線程訪問(wèn)文件系統(tǒng),請(qǐng)實(shí)現(xiàn)多個(gè)線程可同時(shí)訪問(wèn)文件系統(tǒng)的機(jī)制。當(dāng)系統(tǒng)中的當(dāng)前線程數(shù)達(dá)到128個(gè)時(shí),系統(tǒng)停止生成新線程,進(jìn)入執(zhí)行階段。 threads/ (), UpdatePriority(int arg), HandleMail(int receiverID,int boxID) (int arg) (),ReadytoRun(Thread *thread),F(xiàn)indNextToRun() Machine/ 時(shí)間中斷的發(fā)生間隔實(shí)驗(yàn)結(jié)果:1) 運(yùn)行命令./nachos tt。 HandleMail(int receiverID,int boxID)。 int currentreceiver。 Threads/ Kernel(int argc, char **argv),添加了參數(shù)ti ~Kernel() () () (int which) (int which) (int dummy) threads/ include threadCount即為threadID MailboxState { EMPTYED, FULLED,RECYCLED }。 12. 添加外部變量 extern char *pubmailbox。公共信箱大小 define MailBufferSize 4096 每封信的大小 define MailMaxSize 128 信數(shù)量上限 define MailMaxCount (MailBufferSize/MailMaxSize) 代碼修改清單Threads/ 參數(shù),對(duì)應(yīng)進(jìn)行線程的功能測(cè)試. else if (strcmp(argv[i], tt) == 0) { kernelThreadSelfTest()。具體操作為: 對(duì)當(dāng)前的線程ID與接受者ID進(jìn)行比較,若符合則將當(dāng)前線程的消息隊(duì)列中添加該郵箱號(hào)碼,并且將currentboxstate設(shè)置為FULLED。 入口參數(shù):int ――其實(shí)是Thread類。 之后利用List類的成員函數(shù)Mapcar,對(duì)就緒隊(duì)列中的每個(gè)線程調(diào)用ReportToThread,結(jié)束之后,currentboxstatus還為RECYCLED,即沒(méi)有找到接受者,則當(dāng)作垃圾消息進(jìn)行刪除處理(ExportMail)。 9) Scheduler::HandleMail 功能描述: 處理信箱。 size=0。 返回值:無(wú) 函數(shù)流程: sender_id=1。信箱中的消息被傳送了,記錄記錄信箱狀態(tài)。 state=FULLED。 receiver_id=receiver。 int ――消息大小。 入口參數(shù):int ――發(fā)送者線程號(hào)。 state=EMPTYED。 receiver_id=1。 box_id=boxid。 入口參數(shù):int ――信箱號(hào)。 函數(shù)流程: 順序查找信箱數(shù)組,判斷是否有信箱為空。2,計(jì)算首地址 3,讀出消息內(nèi)容 4,留下接收記錄 5) FindBlankBox ——Thread的外部函數(shù)功能描述:查找可用信箱。 char* ――消息內(nèi)容。 4) AcceptMail ————Thread的外部函數(shù)功能描述:收信的過(guò)程。 返回值:無(wú) 函數(shù)流程: 1,找出空箱號(hào)碼 2,計(jì)算該信箱的首地址 3,寫信息 4,更新信箱里的數(shù)據(jù)。 int ――收信者的線程號(hào)。 3) TransportMail——Thread的外部函數(shù) 功能描述:送信的過(guò)程。 3,收信。 入口參數(shù):char * ――消息 返回值:無(wú) 函數(shù)流程: 1,如果信箱為空,則出錯(cuò)退出。 4,給消息發(fā)送信號(hào)量加V操作。 2,給信息發(fā)送信號(hào)量加P操作。(三) 要求三相關(guān)函數(shù)1) Thread::SendMail 功能描述:發(fā)信。 6) 函數(shù)TimerInterruptHandler ——功能描述:處理時(shí)鐘中斷。 5) Scheduler::FindNextToRun 功能描述:返回下一個(gè)要運(yùn)行的線程給CPU 入口參數(shù): 無(wú) 返回值:無(wú) 函數(shù)流程: 根據(jù)當(dāng)前線程的狀態(tài)來(lái)判斷調(diào)用該函數(shù)的原因,分兩種情況: 1,當(dāng)“睡眠”時(shí):簡(jiǎn)單的將就緒隊(duì)列中的第一個(gè)元素(其優(yōu)先級(jí)最高)取出來(lái)返回。 入口參數(shù): Thread* 返回值:無(wú) 函數(shù)流程: 1,將線程狀態(tài)改為就緒態(tài)。 3) Scheduler::FlushPriority 功能描述:重新計(jì)算所有就緒隊(duì)列中線程的優(yōu)先級(jí),當(dāng)時(shí)鐘中斷發(fā)生時(shí)調(diào)用 入口參數(shù): 無(wú) 返回值:無(wú) 函數(shù)流程: 只有一句代碼:readyListApply((VoidFunctionPtr)UpdatePriority),其中函數(shù)指針UpdatePriority是用來(lái)重新計(jì)算線程的優(yōu)先級(jí)的。 入口參數(shù): 無(wú) 返回值:無(wú) 函數(shù)流程: 主流程與原nachos一樣。 入口參數(shù): 無(wú) 返回值:無(wú) 函數(shù)流程: 一句printf調(diào)用。 threadnumEmptyV()。 threadnumFullV()。 threadID = threadCount。 threadCount++。 mailList = new List。ifdef USER_PROGRAM space = NULL。 stack = NULL。 name = threadName。 添加了初始化變量threadnumMutex, threadnumEmpty, threadnumFull, threadCount的步驟。 當(dāng)線程調(diào)用來(lái)接受消息時(shí),將取出自己消息隊(duì)列中的第一個(gè)郵箱號(hào)碼,然后用AcceptMail函數(shù)讀入消息,再進(jìn)行對(duì)應(yīng)郵箱數(shù)據(jù)的修改。 當(dāng)線程調(diào)用SendMail來(lái)進(jìn)行送消息時(shí),先判斷有沒(méi)有空箱,以及有沒(méi)有先到地寫者,之后再利用Transport來(lái)進(jìn)行具體操作。 ,進(jìn)程互相訪問(wèn)系統(tǒng)中開(kāi)辟長(zhǎng)度為4k的空間用作郵箱,每個(gè)郵箱的狀態(tài)由Mail類來(lái)負(fù)責(zé),讀寫操作以及其之后其處理
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1