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

正文內(nèi)容

計(jì)算機(jī)虛擬頁(yè)式存儲(chǔ)管理系統(tǒng)的仿真實(shí)現(xiàn)-資料下載頁(yè)

2024-11-16 16:01本頁(yè)面

【導(dǎo)讀】3. 3. 3. 3. 4. 4. 4. 4. 4. 4. 5. 5. 6. 7. 8. 8. 9. 9. 9. 9. 9. 9. 10. 10. 10. 11. 11. 11. 12. 12. 12. 12. 12. 13. 13. 13. 13. 13. 13. 13. 13. 13. 14. 14. 14. 15. 15. 15. 15. 15. 15. 15. 15. 16. 17. 18. 18. 19. 20. 20. 21. 22. 23. 24. 24. 25. 25. 25. 25. 25. 26. 26. 27. 28. 29. 30. 30. 31. 31

  

【正文】 thissetPSW(this)。//設(shè)置程序狀態(tài)字 thissetPtbr(this)。//設(shè)置頁(yè)表基 址寄存器 thisClearTlb()。//清空快表 thissetTLB(this)。 this()。//輸出當(dāng)前運(yùn)行進(jìn)程信息 } void CPU::ClearTlb()//清空快表 change { this=this。 } void CPU::setPSW(PSW psw)//設(shè)置程序狀態(tài)字,用于進(jìn)程上下文切換 { thiscpsw=psw。 } void CPU::setTLB(TQueue ptlb){//設(shè)置快表 thisctlb=ptlb。 } void CPU::setPtbr(PTBR ptbr)//設(shè)置進(jìn)程的頁(yè)表基址 { thiscptbr=ptbr。 } 6. 2 頁(yè)面替換算法 6. 2. 1 先入先出 FIFO 頁(yè)面替換算法 偽代碼: if(駐留集 中存在該請(qǐng)求頁(yè)面) { 命中; } else{ if(駐留集數(shù)組沒(méi)有滿) { 直接將請(qǐng)求頁(yè)面加入數(shù)組; } else{ 替換 最先進(jìn)入 的頁(yè)面; } } 喚醒進(jìn)程; 進(jìn)程進(jìn)入就緒隊(duì)列; 27 開 始訪 問(wèn) 序 列 第 一 個(gè) 頁(yè)面 進(jìn) 入 駐 留 集 數(shù) 組訪 問(wèn) 序 列 是 否結(jié) 束 ?駐 留 集 數(shù) 組 中是 否 存 在 該 頁(yè)面 值 ?當(dāng) 前 駐 留 集 是否 滿 ?直 接 加 入 該 頁(yè) 面查 找 最 先 進(jìn) 入 的 頁(yè)面 進(jìn) 行 替 換命 中結(jié) 束是否否是否是 圖 6. 2. 1 先入先出 FIFO 頁(yè)面替換算法 6. 2. 2 最久未被訪問(wèn) LRU 頁(yè)面替換算法 偽代碼: if(駐留集數(shù)組中存在該請(qǐng)求頁(yè)面) { 該頁(yè)面時(shí)間置 0; 所有頁(yè)面時(shí)間加 1; 命中; } else{ if(駐留集數(shù)組沒(méi)有滿) { 直接將請(qǐng)求頁(yè)面加入數(shù)組; 該頁(yè)面時(shí)間置 0; 所有頁(yè)面時(shí)間加 1; } else{ 替換最長(zhǎng)時(shí)間沒(méi)有被訪問(wèn)的頁(yè)面; } } 喚醒進(jìn)程; 進(jìn)程進(jìn)入就緒隊(duì)列; 28 開 始訪 問(wèn) 序 列 第 一 個(gè) 頁(yè)面 進(jìn) 入 駐 留 集 數(shù)組 , 時(shí) 間 數(shù) 組 對(duì) 應(yīng)位 置 置 1訪 問(wèn) 序 列 是 否結(jié) 束 ?駐 留 集 數(shù) 組 中是 否 存 在 該 頁(yè)面 值 ?當(dāng) 前 駐 留 集 是否 滿 ?直 接 加 入 該 頁(yè) 面查 找 時(shí) 間 數(shù) 組 中 時(shí)間 最 久 的 進(jìn) 行 替 換該 頁(yè) 面 對(duì) 應(yīng) 時(shí) 間 置0 , 全 部 頁(yè) 面 時(shí) 間+ 1結(jié) 束是否否是否是 圖 6. 2. 2 最久未被訪問(wèn) LRU 頁(yè)面替換算法 6. 2. 3 時(shí)鐘 CLOCK 頁(yè)面替換算法 偽代碼: if(駐留集隊(duì)列中存在該請(qǐng)求頁(yè)面) { 頁(yè)面標(biāo)志置 1; 命中; } else{ if(駐留集隊(duì)列沒(méi)有滿) { 直接將請(qǐng)求頁(yè)面加入隊(duì)列; 該頁(yè)面標(biāo)志置 1; } else{ while(隊(duì)首頁(yè)面標(biāo)志 == 1) { 指針指向下一個(gè)位置; 該頁(yè)面標(biāo)志置 0; } 替換該標(biāo)志為 0的頁(yè)面,新頁(yè)面標(biāo)志置 1; 指針指向像一個(gè)位置; } } 喚醒進(jìn)程; 進(jìn)程進(jìn)入就緒隊(duì)列; 29 開 始訪 問(wèn) 序 列 第 一 個(gè) 頁(yè)面 加 入 循 環(huán) 隊(duì) 列 ,標(biāo) 志 位 置 1訪 問(wèn) 序 列 是 否結(jié) 束駐 留 集 是 否 存在 該 頁(yè) 面駐 留 集 是 否 滿直 接 加 入 該 頁(yè) 面 ,標(biāo) 志 位 置 1指 針 當(dāng) 前 指 向的 頁(yè) 面 標(biāo) 志 是否 為 1頁(yè) 面 標(biāo) 志 位 置 0 ,指 針 指 向 下 一 個(gè) 位置請(qǐng) 求 頁(yè) 面 加 入 該 位置 , 標(biāo) 志 置 1 , 指針 指 向 下 一 個(gè) 位 置該 頁(yè) 面 標(biāo) 志 位 置 1結(jié) 束是否是否否是是否 圖 6. 2. 2 時(shí)鐘 CLOCK 頁(yè)面替換算法 6. 3 過(guò)程可視化 頁(yè)面布局: QHBoxLayout *mainLayout=new QHBoxLayout。//主面板 QGridLayout *rightLayout=new QGridLayout。//右面板 QVBoxLayout *leftLayout=new QVBoxLayout。//左面板 QGridLayout *leftupLayout=new QGridLayout。//左上面板 QVBoxLayout *leftdownLayout=new QVBoxLayout。//左下面板 QGridLayout *leftdownupLayout=new QGridLayout。//左下上面板 QHBoxLayout *leftdowndownLayout=new QHBoxLayout。//左下下面板 leftdownupLayoutaddWidget(thistlbLabel,0,0)。//寫入控件 ? leftdownLayoutaddLayout(leftdownupLayout)。//設(shè)置布局 leftdownLayoutaddLayout(leftdowndownLayout)。 leftupLayoutaddWidget(thisproIdLabel,0,0)。//寫入控件 ? 30 leftLayoutaddLayout(leftupLayout)。//設(shè)置布局 leftLayoutaddLayout(leftdownLayout)。 rightLayoutaddWidget(thispageLabel,0,0)。 //寫入控件 mainLayoutaddLayout(leftLayout)。 //設(shè)置布局 mainLayoutaddLayout(rightLayout)。 thissetLayout(mainLayout)。//設(shè)置布局 thisresize(1000,500)。 圖 過(guò)程可視化圖 7 技術(shù)問(wèn)題分析與解決方案 7. 1 存在問(wèn)題與 解決 方案 ( 1)在將硬件 CPU 抽象為類時(shí),對(duì) PSW 結(jié)構(gòu)概念不夠清楚。根據(jù)教材及相關(guān)資料了解到 CPU 中的 PSW 為一組寄存器,其存放了當(dāng)前進(jìn)程的多個(gè)信息,并應(yīng)與 PCB中的 PSW一致。 解決方案: 查閱課本中相關(guān)內(nèi)容,自己歸納分析總結(jié)。在 PSW 寄存器組中設(shè)置當(dāng)前運(yùn)行指令編號(hào)、中斷允許標(biāo)志、運(yùn)行狀態(tài)三項(xiàng)內(nèi)容,以確??梢詫?shí) 現(xiàn)相應(yīng)的功能。 ( 2)使用指針時(shí)多次出現(xiàn)程序崩潰的現(xiàn)象。 解決方案: 動(dòng)態(tài)分配內(nèi)存使指針指向內(nèi)存某一存儲(chǔ)單元,排除只定義未初始化直接使用野指針情況。 ( 3)程序設(shè)計(jì)時(shí)模塊整合出現(xiàn)沖突的問(wèn)題。 根據(jù)設(shè)計(jì),抽象模塊主要分為: CPU、 PCB、 MMU、 PCB 池、存儲(chǔ)空間。 CPU 內(nèi)存放當(dāng)前運(yùn)行的 PCB 的信息,以及實(shí)現(xiàn)對(duì)指令的操作; PCB 直接代表進(jìn)程,存放進(jìn)程的信息; MMU進(jìn)行虛存管理,包括地址轉(zhuǎn)換與發(fā)出異常信息; PCB 池初始化 PCB 分配的內(nèi)存空間,以及釋放 PCB 占用的空間。為方便整合程序, MMU 模塊將引用將異常處理程序 ,完成對(duì)頁(yè)面的換入換出。 具體問(wèn)題如下: ①大多數(shù)功能需要幾個(gè)模塊共同完成,因此在各個(gè)模塊中都有相應(yīng)的函數(shù),因此導(dǎo)致大量代碼冗余。 31 ②設(shè)計(jì)之初的思路為盡可能的將功能細(xì)化,使每個(gè)函數(shù)實(shí)現(xiàn)簡(jiǎn)單的功能,但實(shí)際的代碼編寫無(wú)法完全達(dá)到這一要求,導(dǎo)致在模塊組合時(shí)產(chǎn)生混亂。 解決方案: 將相關(guān)功能整合在抽象模塊中,以方便使用;對(duì)代碼盡可能的實(shí)現(xiàn)復(fù)用,減少代碼冗余的現(xiàn)象;劃分各模塊功能,并對(duì)其有清楚的認(rèn)識(shí),在整合代碼時(shí)按照功能進(jìn)行組合與調(diào)試。 ( 4)對(duì) C++讀寫文件機(jī)制沒(méi)有完全掌握,對(duì)數(shù)據(jù)流概念不清晰,導(dǎo)致在將頁(yè)面替換過(guò)程寫 入文件時(shí)出現(xiàn)問(wèn)題。 解決方案: 閱讀與分析相關(guān)教材的文件讀寫部分的代碼示例,對(duì)文件流概念有一定的了解后繼續(xù)完成設(shè)計(jì)中對(duì)文件操作的部分。 ( 5)其他問(wèn)題 ① 代碼可重用性不是很強(qiáng); ② 在硬件設(shè)計(jì)時(shí)只涉及到比較重要的模塊,比如 CPU模塊只抽象出程序狀態(tài)字 PSW 、頁(yè)表基址寄存器 PTBR、指令計(jì)數(shù)器 PC、指令寄存器 IR、快表 TLB 等寄存器,沒(méi)有將 CPU模塊完全模擬抽象出來(lái); ③ 代碼編寫時(shí)規(guī)范性不是很強(qiáng),還需改進(jìn); ④ 對(duì)指針的應(yīng)用還不是很熟練,還需練習(xí); 7. 2 其他設(shè)想 ( 1) 程序根據(jù)隨機(jī)數(shù)選擇頁(yè)面替換算法, 作業(yè)生 成以及進(jìn)程創(chuàng)建時(shí)的大部分?jǐn)?shù)據(jù)均是由隨機(jī)函數(shù)隨機(jī)生成,之后可以考慮是否將其寫入圖形化界面,提高系統(tǒng)的交互性。 ( 2)繼續(xù)熟悉 Qt Creator 開發(fā)環(huán)境,可以嘗試在以后的學(xué)習(xí)中應(yīng)用起來(lái)。 8 實(shí)踐體會(huì) 課程設(shè)計(jì)代碼部分的編寫進(jìn)度基本上和選題報(bào)告書的編寫計(jì)劃相吻合,也基本上實(shí)現(xiàn)了預(yù)期功能。主要模塊的編寫工作在寒假已完成,在助教的建議下,部分代碼優(yōu)化以及部分功能的增加在停課課設(shè)周基本完成。 這次課程設(shè)計(jì)我采用的編寫語(yǔ)言是 C++,集成開發(fā)環(huán)境選擇的是 Qt Creator,之所以選擇 Qt Creator 是自 己想要接觸新的開發(fā)環(huán)境,而不僅僅是局限于在學(xué)校學(xué)習(xí)所使用的 VC 或者 VS 環(huán)境。初次接觸 Qt 有很多不了解的地方,比如如何創(chuàng)建項(xiàng)目,如何編寫類等等,所以我參考了很多 Qt 入門的書籍,基本上了解了 Qt 的編寫規(guī)則,也學(xué)習(xí)了如何在 Qt 環(huán)境下實(shí)現(xiàn)用戶界面的設(shè)計(jì),這是本次操作系統(tǒng)課設(shè)的收獲之一。 當(dāng)然,最大的收獲還是對(duì) C++和操作系統(tǒng)中作業(yè)和進(jìn)程的生成、創(chuàng)建、執(zhí)行、調(diào)度、終止,虛擬頁(yè)式存儲(chǔ)管理的實(shí)現(xiàn)等等,有了更進(jìn)一步的了解。在學(xué)習(xí) C++時(shí),雖然也有實(shí)驗(yàn)課的代碼練習(xí),但是都不是很大的項(xiàng)目,在學(xué)習(xí)操作系統(tǒng)時(shí),只是對(duì)書本上的 理論知識(shí)有了初步的了解,并沒(méi)有深入了解這些功能的實(shí)現(xiàn)過(guò)程,再加上在學(xué)習(xí)操作系統(tǒng)時(shí),是按照模塊來(lái)學(xué)習(xí),并沒(méi)有很強(qiáng)的系統(tǒng)概念,對(duì)整個(gè)框架還不是很了解。所以在本次操作系統(tǒng)課程設(shè)計(jì)中,我再次學(xué)習(xí)了數(shù)據(jù)結(jié)構(gòu)、 C++,為了對(duì)整個(gè)項(xiàng)目有整體的框架概念,我把操作系統(tǒng)中的存儲(chǔ)器管理與處理器管理又系統(tǒng)的看了一遍,基本上了解了虛擬頁(yè)式存儲(chǔ)管理系統(tǒng)工作的時(shí)間和流程,并將虛擬頁(yè)式存儲(chǔ)管理系統(tǒng)與作業(yè)以及進(jìn)程調(diào)度結(jié)合起來(lái),完成了在并發(fā)環(huán)境下進(jìn)行虛擬頁(yè)式存儲(chǔ)管理系統(tǒng),我的收獲很大。 在停課周,聽取了助教的建議,我又在程序原有的基礎(chǔ)上實(shí)現(xiàn) 了三個(gè)頁(yè)面替換算法算法的并發(fā)環(huán)境,這是本次課程設(shè)計(jì)最大的難點(diǎn)。上個(gè)學(xué)期學(xué)習(xí)處理器管理時(shí)對(duì)進(jìn)程的調(diào)度的理解并不是很深入,只知道進(jìn)程三種狀態(tài)的轉(zhuǎn)換以及進(jìn)程上下文切換,具體代碼實(shí)現(xiàn)并沒(méi)有系統(tǒng)的思路。如果僅僅是作業(yè)與進(jìn)程的調(diào)度相對(duì)來(lái)說(shuō)還是比較容易實(shí)現(xiàn),但是還有另一個(gè)模塊 —— 存儲(chǔ)器管理,這就需要將書本理論知識(shí)的兩個(gè)獨(dú)立模塊有效的整 32 合在一起,完成并發(fā)環(huán)境下的虛擬頁(yè)式存儲(chǔ)管理系統(tǒng)的實(shí)現(xiàn)。最終我完成了任務(wù),也認(rèn)識(shí)到自己對(duì)課本中的抽象的理論知識(shí)有了更加具體和深刻的了解。這不僅僅是對(duì)編程能力的提高,也是對(duì)算法思維的培養(yǎng)和對(duì)整體 框架抽象設(shè)計(jì)能力的鍛煉。非常感謝助教給予我的幫助,在我遇到問(wèn)題時(shí)耐心的講解,并提出好的建議讓我能夠順利的完成課程設(shè)計(jì)。 參考文獻(xiàn) [1] 費(fèi)翔林 ,駱斌 .操作系統(tǒng)教程 [M].(5 版 ).北京 :高等教育出版社 ,2020. [2] 嚴(yán)蔚敏 ,吳偉民 .數(shù)據(jù)結(jié)構(gòu) (C 語(yǔ)言版 )[M].北京 :清華大學(xué)出版社 ,2020. [3] 許薇 ,方修豐 .面向?qū)ο蟪绦蛟O(shè)計(jì) (C++)[M].北京 :清華大學(xué)出版社 ,2020. [4] 唐朔飛 .計(jì)算機(jī)組成原理 (2 版 )[M].北京 :高等教育出版社 ,2020. [5] Charles 程序設(shè)計(jì) (5 版 )[M].北京 :北京大學(xué)出版社 ,2020. [6] Jasmin Blanchette,Mark ++ GUI Qt4 編程 (2 版 )[M].北京 :電子工業(yè)出版社 ,2020. [7] [M].(3 版 ).北京 :機(jī)械工業(yè)出版社 ,2020 33 附件 1 ( 1) PCB cpcb。//運(yùn)行態(tài)進(jìn)程,表示該進(jìn)程擁有 CPU 資源 PSW cpsw。//程序狀態(tài)字,用于進(jìn)程上下文切換 PTBR
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1