操作系統(tǒng)課程設計任務書(計算機、軟件、網(wǎng)絡)_第1頁
操作系統(tǒng)課程設計任務書(計算機、軟件、網(wǎng)絡)_第2頁
操作系統(tǒng)課程設計任務書(計算機、軟件、網(wǎng)絡)_第3頁
操作系統(tǒng)課程設計任務書(計算機、軟件、網(wǎng)絡)_第4頁
操作系統(tǒng)課程設計任務書(計算機、軟件、網(wǎng)絡)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、2016-2017 學年第一學期操作系統(tǒng)課程設計任務書依照大綱和課程內(nèi)容實踐特點,結(jié)合操作系統(tǒng)、 LINUX 操作系統(tǒng)和嵌入式程序設計課程主要內(nèi)容,課設的具體要求及任務如下:一、設計成果的要求課程設計應嚴格按照要求完成,在系統(tǒng)調(diào)試成功后, 需要提供操作系統(tǒng)課程設計報告,具體包括:( 1)設計目的( 1)設計內(nèi)容( 3)設計準備(理論、技術(shù))( 4)設計過程(設計思想、代碼實現(xiàn))( 5)設計結(jié)果并分析( 6)系統(tǒng)的結(jié)構(gòu)、原理框圖和模塊等的詳細說明( 7)用戶使用說明書和參考資料( 8)設計體會。注: 1.( 1) -( 7)項可以打印,(8)設計體會必須手寫。2. 報告的封皮、封底,采用給定的模

2、板;報告的內(nèi)容,在教師的指導下,獨立完成,自主排版,不做統(tǒng)一要求。二、設計任務(每名同學選一題,獨立完成)題目一 : 進程與線程 Linux 進程與線程通訊設計目的深刻理解線程和進程的概念, 掌握線程與進程在組成成分上的差別以及與其相適應的通訊方式和應用目標。Linux系統(tǒng)的fork()保持了 UNIX的經(jīng)典語義,被創(chuàng)建的進程具有獨立于父進 程的地址空間,二者之間的通訊通??刹捎?pipe機制,clone ()是Linux系統(tǒng)特 有的系統(tǒng)調(diào)用, 可以通過參數(shù)確定父子進程之間是否共享存儲空間等資源。 在地址空間等資源共享的情況下, clone 實質(zhì)相當于創(chuàng)建了一個輕進程或線程,這是clone的通

3、常用法。實際在Linux系統(tǒng)中,fork以及用戶級線程pthread都是基于 clone 實現(xiàn)的。設計內(nèi)容以Linux系統(tǒng)進程和線程機制為背景,掌握 fork()和clone ()系統(tǒng)調(diào)用的形式和功能以及與其相適應的高級通訊方式。 由 fork 派生的子進程之間通過pipe通訊,由clone創(chuàng)建的線程之間通過共享內(nèi)存通訊,對于后者需要考慮互斥問題。以生產(chǎn)者-消費者問題為例,通過實驗理解fork ()和clone ()兩個系統(tǒng)調(diào)用的區(qū)別。 程序要求能夠創(chuàng)建 4 個進程或線程, 其中包括兩個生產(chǎn)者和兩個消費者,生產(chǎn)者和消費者之間能夠傳遞數(shù)據(jù)。題目二 : 處理機調(diào)度實時調(diào)度算法EDF 和 RMS設計

4、目的深入理解處理機調(diào)度算法, 了解硬實時概念, 掌握最早截止期優(yōu)先調(diào)度算法EDF(Earliest Deadline First和速率單調(diào)調(diào)度算法 RMS (Rate Monotonic Scheduling 的可調(diào)度條件,并能在可調(diào)度情況下給出具體調(diào)度結(jié)果。設計內(nèi)容在Linux環(huán)境中采用用戶級線程模擬實現(xiàn)EDF和RMS兩種實時調(diào)度算法。給定一組實時任務,按照EDF算法和RMS算法分別判斷是否可調(diào)度。在可調(diào)度的情況下, 創(chuàng)建一組用戶級線程, 分別代表各個實時任務, 并按算法所確定的調(diào)度次序安排各個線程運行,運行時在終端上畫出其Gantt 圖。為避免圖形繪制沖淡 算法, Gantt 圖可用字符表

5、示。題目三 : 存儲管理動態(tài)異長存儲資源分配算法設計目的理解動態(tài)異長存儲分區(qū)資源管理, 掌握所需數(shù)據(jù)結(jié)構(gòu)和管理程序, 了解各種存儲分配算法的優(yōu)點和缺點。設計內(nèi)容(1)分析UNIX最先適應(First Fit,FF)存儲分配算法,即map數(shù)據(jù)結(jié)構(gòu)、存儲分配函數(shù)malloc(開口存儲釋放函數(shù)mfree(),找出與算法有關(guān)的成分。(2)修改上述與算法有關(guān)的成分,使其分別體現(xiàn) BF (Best Fit,最佳適應)分配原則和WF(Worst Fit,最環(huán)適應)分配原則。題目四:文件系統(tǒng)一Hash結(jié)構(gòu)文件設計目的理解 Linux 文件系統(tǒng)的內(nèi)部技術(shù),掌握Linux 與文件有關(guān)的系統(tǒng)調(diào)用命令,并在此基礎上建

6、立面向隨機檢索的Hash結(jié)構(gòu)文件。Linux 系統(tǒng)保持 UNIX 文件系統(tǒng)的風格,提供流式文件界面,這種結(jié)構(gòu)具有簡潔靈活的特點,但并不直接支持記錄式文件和關(guān)鍵字檢索。本設計在Linux 文件系統(tǒng)基礎上,設計一組庫函數(shù),以提供對隨機檢索的支持。設計內(nèi)容(1)參考教程中Hash文件構(gòu)造算法,設計一組 Hash文件函數(shù),包括Hash文件創(chuàng)建、打開、關(guān)閉、讀、寫等。( 2)編寫一個測試程序,通過記錄保存、查找、刪除等操作,檢查上述Hash文件是否實現(xiàn)相關(guān)功能。題目五:設備管理 Linux 設備驅(qū)動程序安裝設計目的認識 Linux 設備的種類和設備工作方式,理解設備驅(qū)動程序的工作原理,掌握設備驅(qū)動程序的

7、編寫規(guī)范,能編寫并安裝簡單的設備驅(qū)動程序。設計內(nèi)容在 Linux 系統(tǒng)中,編寫一個簡單的字符型設備驅(qū)動程序模塊,設備具有獨占特性,可執(zhí)行讀和寫操作,相關(guān)系統(tǒng)調(diào)用為open,close,read,whteOpen和close分別相當于請求和釋放設備,read和write將內(nèi)容保存在設備模塊內(nèi)的綏沖區(qū)中。設備模塊可動態(tài)注冊和卸載,并建立與之對應的特殊文件/dev/mydev 。題目六:Bootloader引導程序設計與實現(xiàn).設計目的認識Bootloader 的作用,深入理解Bootloader 的編程思想。以典型的引導程序 vivi 為例,對 vivi 程序的架構(gòu), vivi 的啟動流程,使用 v

8、ivi 完成系統(tǒng)引導程序的設計方法形成深刻的理解和認識。. 設計內(nèi)容在嵌入式操彳系統(tǒng)中,Bootloader的作用與PC機上的BIOS類似,通過Bootloader可以完成對系統(tǒng)板上的主要部件如CPU、SDRAM、Flashr用行口等進行初始化。當運行操作系統(tǒng)時,它會在操作系統(tǒng)內(nèi)核運行之前運行,通過它,可以分配內(nèi)存空間的映射, 從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài), 以便為最終調(diào)用操作系統(tǒng)準備好正確的環(huán)境。本設計要求同學首先分析老師提供的 vivi 程序源代碼, 理清 vivi 程序的架構(gòu)分為哪幾個模塊, 然后根據(jù)分析vivi 程序的執(zhí)行流程具體分為哪幾個階段, 各階段的主要任務是什么。最

9、后要求同學編寫內(nèi)存映射初始化函數(shù)mem_map_init()ffi內(nèi)存管理單元初始化函數(shù)mmu_init()。題目七:嵌入式linux 下鍵盤驅(qū)動程序的設計與實現(xiàn).設計目的通過完成又t嵌入式linux下鍵盤驅(qū)動程序的設計和調(diào)試,掌握嵌入式linux驅(qū) 動程序的編寫方法, 理解驅(qū)動程序動態(tài)模塊的調(diào)試方法, 掌握驅(qū)動程序添加到內(nèi) 核的流程。. 設計內(nèi)容設備驅(qū)動程序是操作系統(tǒng)內(nèi)核和機器硬件之間的接口。設備驅(qū)動程序為應用程序屏蔽了硬件的細節(jié), 故在應用程序看來, 硬件設備只是一個設備文件, 應用程序可以像操作普通文件一樣對硬件設備進行操作。本設計要求同學按照標準設備驅(qū)動程序的步驟編寫驅(qū)動程序。 由于鍵

10、盤的設備驅(qū)動程序?qū)儆谧址O備的驅(qū)動, 因此, 應當按照字符設備的規(guī)則編寫。 要求同學編寫鍵盤設備文件file_operations結(jié)構(gòu),以及以下幾個鍵盤操作函數(shù):鍵盤控制函數(shù)Kbd_Ioctl()、關(guān)閉鍵盤設備函數(shù) Kbd_Close(打開鍵盤設備函數(shù) Kbd_Open()、獲取鍵值函數(shù)Kbd_Getkey()、鍵盤服務子程序 Kbd_ISR()、鍵盤設 備的硬件初始化函數(shù)Setup_Kbd(注冊鍵盤設備使用函數(shù)KbdInit()和卸載鍵盤 設備函數(shù) Kbd_Exit() 。題目八:首次適應算法的動態(tài)分區(qū)分配方式模擬.設計目的了解動態(tài)分區(qū)分配中使用的數(shù)據(jù)結(jié)構(gòu)和分配算法,并進一步加深對動態(tài)分區(qū)存

11、儲管理方式及其實現(xiàn)過程的理解。.設計內(nèi)容1)用C語言實現(xiàn)采用首次適應算法的動態(tài)分區(qū)分配過程 allocQffi回收過程free()。 其中,空閑分區(qū)通過空閑分區(qū)鏈表來管理, 在進行內(nèi)存分配時,系統(tǒng)優(yōu)先使用空 閑區(qū)低端的空間。2)假設初始狀態(tài)如下,可用的內(nèi)存空間為 640KB,并有下列的請求序列;作業(yè)1申請130KB作業(yè)2中請60KB作業(yè)3申請100KB作業(yè)2釋放60KB作業(yè)4申請200 KB作業(yè)3釋放100 KB作業(yè)1釋放130 KB作業(yè)5申請140 KB作業(yè)6中請60 KB作業(yè)7中請50KB作業(yè)6釋放60 KB請采用首次適應算法進行內(nèi)存塊的分配和回收,同時顯示內(nèi)存塊分配和回收后空閑內(nèi)存分區(qū)鏈

12、的情況。題目九:循環(huán)首次適應算法的動態(tài)分區(qū)分配方式模擬1.設計目的了解動態(tài)分區(qū)分配中使用的數(shù)據(jù)結(jié)構(gòu)和分配算法, 并進一步加深對動態(tài)分區(qū) 存儲管理方式及其實現(xiàn)過程的理解。2設計內(nèi)容1)用C語言實現(xiàn)采用循環(huán)首次適應算法的動態(tài)分區(qū)分配過程 alloc()ffi回收過程 freeO其中,空閑分區(qū)通過空閑分區(qū)鏈表來管理, 在進行內(nèi)存分配時,系統(tǒng)優(yōu)先 使用空閑區(qū)低端的空間。2)假設初始狀態(tài)如下,可用的內(nèi)存空間為 640KB,并有下列的請求序列;作業(yè)1申請130KB作業(yè)2中請60KB作業(yè)3申請100KB作業(yè)2釋放60KB作業(yè)4申請200 KB作業(yè)3釋放100 KB作業(yè)1釋放130 KB作業(yè)5申請140 KB

13、作業(yè)6中請60 KB作業(yè)7中請50KB作業(yè)6釋放60 KB同時顯示內(nèi)存塊分配和并進一步加深對動態(tài)分區(qū)請采用循環(huán)首次適應算法進行內(nèi)存塊的分配和回收, 回收后空閑內(nèi)存分區(qū)鏈的情況。題目十:最佳適應算法的動態(tài)分區(qū)分配方式模擬.設計目的了解動態(tài)分區(qū)分配中使用的數(shù)據(jù)結(jié)構(gòu)和分配算法,存儲管理方式及其實現(xiàn)過程的理解。.設計內(nèi)容1)用C語言分別實現(xiàn)采用最佳適應算法的動態(tài)分區(qū)分配過程 allocCffi回收過程 freeO其中,空閑分區(qū)通過空閑分區(qū)鏈表來管理, 在進行內(nèi)存分配時,系統(tǒng)優(yōu)先 使用空閑區(qū)低端的空間。2)假設初始狀態(tài)如下,可用的內(nèi)存空間為 640KB,并有下列的請求序列;作業(yè)1申請130KB作業(yè)2中請

14、60KB作業(yè)3申請100KB作業(yè)2釋放60KB作業(yè)4申請200 KB作業(yè)3釋放100 KB作業(yè)1釋放130 KB作業(yè)5申請140 KB作業(yè)6中請60 KB作業(yè)7中請50KB作業(yè)6釋放60 KB請采用最佳適應算法進行內(nèi)存塊的分配和回收,同時顯示內(nèi)存塊分配和回收后空閑內(nèi)存分區(qū)鏈的情況。題目十一:最壞適應算法的動態(tài)分區(qū)分配方式模擬.設計目的了解動態(tài)分區(qū)分配中使用的數(shù)據(jù)結(jié)構(gòu)和分配算法,并進一步加深對動態(tài)分區(qū)存儲管理方式及其實現(xiàn)過程的理解。.設計內(nèi)容1)用C語言分別實現(xiàn)采用最壞適應算法的動態(tài)分區(qū)分配過程 alloc()ffi回收過程 freeO其中,空閑分區(qū)通過空閑分區(qū)鏈表來管理, 在進行內(nèi)存分配時,系

15、統(tǒng)優(yōu)先 使用空閑區(qū)低端的空間。2)假設初始狀態(tài)如下,可用的內(nèi)存空間為 640KB,并有下列的請求序列;作業(yè)1申請130KB作業(yè)2中請60KB作業(yè)3申請100KB作業(yè)2釋放60KB作業(yè)4申請200 KB作業(yè)3釋放100 KB作業(yè)1釋放130 KB作業(yè)5申請140 KB作業(yè)6中請60 KB作業(yè)7中請50KB作業(yè)6釋放60 KB請采用最壞適應算法進行內(nèi)存塊的分配和回收,同時顯示內(nèi)存塊分配和回收后空閑內(nèi)存分區(qū)鏈的情況。題目十二:進程調(diào)度模擬算法.設計目的通過算法的模擬加深對進程概念和進程調(diào)度過程的理解,掌握進程狀態(tài)之間 的切換,同時掌握進程調(diào)度算法的實現(xiàn)方法和技巧。.設計內(nèi)容(1)用C語言來實現(xiàn)對N個

16、進程采用動態(tài)優(yōu)先權(quán)優(yōu)先算法的進程調(diào)度。(2)每個用來標識進程的進程控制塊 PCB用結(jié)構(gòu)來描述,包括以下字段:進程標識數(shù)ID;進程優(yōu)先數(shù)PRIORITY,并規(guī)定優(yōu)先數(shù)越大的進程,其優(yōu)先權(quán)越高;進程已占用的CPU時間CPUTIME ;進程還需占用的CPU時間ALLTIME。當進程運行完畢時,ALLTIME變?yōu)?;進程的阻塞時間STARTBLOCK,表示當進程再運行 STARTBLOCK 個時間片后,進程將進入阻塞狀態(tài);進程被阻塞的時間BLOCKTIME ,表示已阻塞的進程再等待BLOCKTIME 個時間片后,進程將轉(zhuǎn)換成就緒狀態(tài);進程狀態(tài)STATE;隊列指針NEXT,用來將PCB排成隊列。(3)

17、優(yōu)先數(shù)改變的原則:進程在就緒隊列中呆一個時間片,優(yōu)先數(shù)增加1;進程每運行一個時間片,優(yōu)先數(shù)減3。(4) 假設在調(diào)度前,系統(tǒng)中有系統(tǒng)中啟5 個進程,它們的初始狀態(tài)如下:它們的初始狀態(tài)如下:ID01234PRIORITY93830290CPUTIME00000ALLTIME33634STARTBLOCK2-1-1-1-1BLOCKTIME30000STATEREADYREADY READYREADYREADY(5) 為了清楚地觀察進程的調(diào)度過程,程序應將每個時間片內(nèi)的進程的情況顯示出來,參照的具體格式如下:RUNNING PROG: iREADY_QUEUE:-id1-id2BLOCK_QUEUE

18、:-id3-id4ID01234PRIORITYP0P1P2P3P4CPUTIMEC0C1C2C3C4ALLTIMEA0A1A2A3A4STARTBLOCKT0T1T2T3T4BLOCKTIMEB0B1B2B3B4STATES0S1S2S3S4題目十三:請求調(diào)頁存儲管理方式的模擬 11 設計目的通過對頁面、 頁表、 地址轉(zhuǎn)換和頁面置換過程的模擬, 加深對請求調(diào)頁系統(tǒng)的原理和實現(xiàn)過程的理解。2設計內(nèi)容1)假設每個頁面中可存放 10 條指令,分配給作業(yè)的內(nèi)存塊數(shù)為 4。2)用c 語言模擬一個作業(yè)的執(zhí)行過程,該作業(yè)共有 320條指令,即它的地址空間為 32頁,目前它的所有頁都還未調(diào)入內(nèi)存。在模擬過程

19、中,如果所訪問的指令已在內(nèi)存, 則顯示其物理地址, 并轉(zhuǎn)下一條指令。 如果所訪問的指令還未裝入內(nèi)存,則發(fā)生缺頁,此時需記錄缺頁的次數(shù),并將相應頁調(diào)入內(nèi)存。如果4個內(nèi)存塊均已裝入該作業(yè), 則需進行頁面置換, 最后顯示其物理地址, 并轉(zhuǎn)下一條指令。在所有 320指令執(zhí)行完畢后,請計算并顯示作業(yè)運行過程中發(fā)生的缺頁率。3)置換算法:采用先進先出(FIFO )置換算法。提示 :成:50%的指令是順序執(zhí)行的;25%的指令是均勻分布在前地址部分;25%的指令是均勻分布在后地址部分;具體的實施方法是:在0, 319的指令地址之間隨機選取一起點m;順序執(zhí)行一條指令,即執(zhí)行地址為 m+1 的指令;在前地址0,

20、m+1中隨機選取一條指令并執(zhí)行,該指令的地址為m;順序執(zhí)行一條指令,其地址為 m +1的指令;在后地址m +2, 319中隨機選取一條指令并執(zhí)行;重復上述步驟,直到執(zhí)行320次指令。( 2)將指令序列變換為頁地址流設頁面大小為 1K ;用戶內(nèi)存容量為4 頁到32 頁;用戶虛存容里為32K。在用戶虛存中,按每K 存放 10 條指令排列虛存地址,即320條指令在虛存中的存放方式為:第0條第9條指令為第0頁(對應虛存地址為0, 9);第10條第19條指令為第1頁(對應虛存地址為10, 19);第310條第319條指令為第31頁(對應虛存地址為310, 319)按以上方式,用戶指令可組成32 頁。(3

21、)計算先進先出(FIFO )算法在不同內(nèi)存容量下的命中率。其中,命中率=1-頁面失效次數(shù)/ 頁地址流長度題目十四:請求調(diào)頁存儲管理方式的模擬 21 設計目的通過對頁面、 頁表、 地址轉(zhuǎn)換和頁面置換過程的模擬, 加深對請求調(diào)頁系統(tǒng)的原理和實現(xiàn)過程的理解。2設計內(nèi)容1)假設每個頁面中可存放 10 條指令,分配給作業(yè)的內(nèi)存塊數(shù)為 4。2)用C 語言模擬一個作業(yè)的執(zhí)行過程,該作業(yè)共有320條指令,即它的地址空間為 32頁,目前它的所有頁都還未調(diào)入內(nèi)存。在模擬過程中,如果所訪問的指令已在內(nèi)存, 則顯示其物理地址, 并轉(zhuǎn)下一條指令。 如果所訪問的指令還未裝入內(nèi)存,則發(fā)生缺頁,此時需記錄缺頁的次數(shù),并將相應

22、頁調(diào)入內(nèi)存。如果4個內(nèi)存塊均已裝入該作業(yè), 則需進行頁面置換, 最后顯示其物理地址, 并轉(zhuǎn)下一條指令。在所有 320指令執(zhí)行完畢后,請計算并顯示作業(yè)運行過程中發(fā)生的缺頁率。3)置換算法:最近最久未使用(LRU)算法。提示 :成:50%的指令是順序執(zhí)行的;25%的指令是均勻分布在前地址部分;25%的指令是均勻分布在后地址部分;具體的實施方法是:在0, 319的指令地址之間隨機選取一起點m;順序執(zhí)行一條指令,即執(zhí)行地址為 m+1 的指令;在前地址0, m+1中隨機選取一條指令并執(zhí)行,該指令的地址為m;順序執(zhí)行一條指令,其地址為 m +1的指令;在后地址m +2, 319中隨機選取一條指令并執(zhí)行;重

23、復上述步驟,直到執(zhí)行320次指令。( 2)將指令序列變換為頁地址流設頁面大小為 1K ;用戶內(nèi)存容量為4 頁到32 頁;用戶虛存容里為32K。在用戶虛存中,按每K 存放 10 條指令排列虛存地址,即320條指令在虛存中的存放方式為:第0條第9條指令為第0頁(對應虛存地址為0, 9);第10條第19條指令為第1頁(對應虛存地址為10, 19);第310條第319條指令為第31頁(對應虛存地址為310, 319)按以上方式,用戶指令可組成32 頁。( 3)計算最近最少使用(LRU )算法在不同內(nèi)存容量下的命中率。其中,命中率=1-頁面失效次數(shù)/ 頁地址流長度題目十五:請求調(diào)頁存儲管理方式的模擬 3

24、1 設計目的通過對頁面、 頁表、 地址轉(zhuǎn)換和頁面置換過程的模擬, 加深對請求調(diào)頁系統(tǒng)的原理和實現(xiàn)過程的理解。2設計內(nèi)容1)假設每個頁面中可存放 10 條指令,分配給作業(yè)的內(nèi)存塊數(shù)為 4。2)用C 語言模擬一個作業(yè)的執(zhí)行過程,該作業(yè)共有320條指令,即它的地址空間為 32頁,目前它的所有頁都還未調(diào)入內(nèi)存。在模擬過程中,如果所訪問的指令已在內(nèi)存, 則顯示其物理地址, 并轉(zhuǎn)下一條指令。 如果所訪問的指令還未裝入內(nèi)存,則發(fā)生缺頁,此時需記錄缺頁的次數(shù),并將相應頁調(diào)入內(nèi)存。如果4個內(nèi)存塊均已裝入該作業(yè), 則需進行頁面置換, 最后顯示其物理地址, 并轉(zhuǎn)下一條指令。在所有 320指令執(zhí)行完畢后,請計算并顯示

25、作業(yè)運行過程中發(fā)生的缺頁率。3)置換算法:最佳置換(OPT)算法。提示 :成:50%的指令是順序執(zhí)行的;25%的指令是均勻分布在前地址部分;25%的指令是均勻分布在后地址部分;具體的實施方法是:在0, 319的指令地址之間隨機選取一起點m;順序執(zhí)行一條指令,即執(zhí)行地址為 m+1 的指令;在前地址0, m+1中隨機選取一條指令并執(zhí)行,該指令的地址為m;順序執(zhí)行一條指令,其地址為 m +1的指令;在后地址m +2, 319中隨機選取一條指令并執(zhí)行;重復上述步驟,直到執(zhí)行320次指令。( 2)將指令序列變換為頁地址流設頁面大小為 1K ;用戶內(nèi)存容量為4 頁到32 頁;用戶虛存容里為32K。在用戶虛

26、存中,按每K 存放 10 條指令排列虛存地址,即320條指令在虛存中的存放方式為:第0條第9條指令為第0頁(對應虛存地址為0, 9);第10條第19條指令為第1頁(對應虛存地址為10, 19);第310條第319條指令為第31頁(對應虛存地址為310, 319)按以上方式,用戶指令可組成32 頁。(3)計算最彳置換(OPT)算法在不同內(nèi)存容量下的命中率。其中,命中率=1-頁面失效次數(shù)/ 頁地址流長度題目十六:請求調(diào)頁存儲管理方式的模擬 41 設計目的通過對頁面、 頁表、 地址轉(zhuǎn)換和頁面置換過程的模擬, 加深對請求調(diào)頁系統(tǒng)的原理和實現(xiàn)過程的理解。2設計內(nèi)容1)假設每個頁面中可存放 10 條指令,

27、分配給作業(yè)的內(nèi)存塊數(shù)為 4。2)用C 語言模擬一個作業(yè)的執(zhí)行過程,該作業(yè)共有320條指令,即它的地址空間為 32頁,目前它的所有頁都還未調(diào)入內(nèi)存。在模擬過程中,如果所訪問的指令已在內(nèi)存, 則顯示其物理地址, 并轉(zhuǎn)下一條指令。 如果所訪問的指令還未裝入內(nèi)存,則發(fā)生缺頁,此時需記錄缺頁的次數(shù),并將相應頁調(diào)入內(nèi)存。如果4個內(nèi)存塊均已裝入該作業(yè), 則需進行頁面置換, 最后顯示其物理地址, 并轉(zhuǎn)下一條指令。在所有 320指令執(zhí)行完畢后,請計算并顯示作業(yè)運行過程中發(fā)生的缺頁率。3)置換算法:最少訪問(LFU )算法。提示 :成:50%的指令是順序執(zhí)行的;25%的指令是均勻分布在前地址部分;25%的指令是均

28、勻分布在后地址部分;具體的實施方法是:在0, 319的指令地址之間隨機選取一起點m;順序執(zhí)行一條指令,即執(zhí)行地址為 m+1 的指令;在前地址0, m+1中隨機選取一條指令并執(zhí)行,該指令的地址為m;順序執(zhí)行一條指令,其地址為 m +1的指令;在后地址m +2, 319中隨機選取一條指令并執(zhí)行;重復上述步驟,直到執(zhí)行320次指令。( 2)將指令序列變換為頁地址流設頁面大小為 1K ;用戶內(nèi)存容量為4 頁到32 頁;用戶虛存容里為32K。在用戶虛存中,按每K 存放 10 條指令排列虛存地址,即320條指令在虛存中的存放方式為:第0條第9條指令為第0頁(對應虛存地址為0, 9);第10條第19條指令為

29、第1頁(對應虛存地址為10, 19);第310條第319條指令為第31頁(對應虛存地址為310, 319)按以上方式,用戶指令可組成32 頁。( 3)計算最少訪問(LFU )算法在不同內(nèi)存容量下的命中率。其中,命中率=1-頁面失效次數(shù)/ 頁地址流長度題目十七:請求調(diào)頁存儲管理方式的模擬 51 設計目的通過對頁面、 頁表、 地址轉(zhuǎn)換和頁面置換過程的模擬, 加深對請求調(diào)頁系統(tǒng)的原理和實現(xiàn)過程的理解。2設計內(nèi)容1)假設每個頁面中可存放10 條指令,分配給作業(yè)的內(nèi)存塊數(shù)為 4。2)用C 語言模擬一個作業(yè)的執(zhí)行過程,該作業(yè)共有320條指令,即它的地址空間為 32頁,目前它的所有頁都還未調(diào)入內(nèi)存。在模擬過

30、程中,如果所訪問的指令已在內(nèi)存, 則顯示其物理地址, 并轉(zhuǎn)下一條指令。 如果所訪問的指令還未裝入內(nèi)存,則發(fā)生缺頁,此時需記錄缺頁的次數(shù),并將相應頁調(diào)入內(nèi)存。如果4個內(nèi)存塊均已裝入該作業(yè), 則需進行頁面置換, 最后顯示其物理地址, 并轉(zhuǎn)下一條指令。在所有 320指令執(zhí)行完畢后,請計算并顯示作業(yè)運行過程中發(fā)生的缺頁率。3)置換算法:最近最不經(jīng)常使用(NRU )算法。提示 :成:50%的指令是順序執(zhí)行的;25%的指令是均勻分布在前地址部分;25%的指令是均勻分布在后地址部分;具體的實施方法是:在0, 319的指令地址之間隨機選取一起點m;順序執(zhí)行一條指令,即執(zhí)行地址為 m+1 的指令;在前地址0,

31、m+1中隨機選取一條指令并執(zhí)行,該指令的地址為m;順序執(zhí)行一條指令,其地址為 m +1的指令;在后地址m +2, 319中隨機選取一條指令并執(zhí)行;重復上述步驟,直到執(zhí)行320次指令。( 2)將指令序列變換為頁地址流設頁面大小為 1K ;用戶內(nèi)存容量為4 頁到32 頁;用戶虛存容里為32K。在用戶虛存中,按每K 存放 10 條指令排列虛存地址,即320條指令在虛存中的存放方式為:第0條第9條指令為第0頁(對應虛存地址為0, 9);第10條第19條指令為第1頁(對應虛存地址為10, 19);第310條第319條指令為第31頁(對應虛存地址為310, 319)按以上方式,用戶指令可組成32 頁。(3

32、)計算最近最不經(jīng)常使用(NRU )算法在不同內(nèi)存容量下的命中率。其中,命中率=1-頁面失效次數(shù)/ 頁地址流長度題目十八:P、 V 操作及進程同步的實現(xiàn)1設計目的掌握信號量通信方式的一般方法, 了解系統(tǒng)實現(xiàn)“阻塞”和“喚醒”功能的方法和技巧。同時掌握進程同步和互斥的概念及實現(xiàn)技術(shù)。2設計內(nèi)容1)用語言編程實現(xiàn)P、 V 原語并用 P、 V 原語描述如下理發(fā)師-顧客問題:有一個理發(fā)師, 一把理發(fā)椅和 n 把提供給等候理發(fā)的顧客座的椅子。 如果沒有顧客, 則理發(fā)師便在理發(fā)椅子上睡覺; 當?shù)谝粋€顧客到來時, 必須喚醒該理發(fā)師進行理發(fā); 如果理發(fā)師正在理發(fā)時又有顧客到來, 則如果有空椅子可坐, 他就坐下來

33、等待,如果沒有空椅子,他就離開理發(fā)店。為理發(fā)師和顧客各編一段程序描述他們的行為, 要求不能帶有競爭條件, 試用 P、 V 操作實現(xiàn)。2)實驗要求及說明定義信號量并將P、 V 操作定義為帶參數(shù)以輸出字符串的形式表示理發(fā)師和顧客的行為。設計適當?shù)臄?shù)據(jù)結(jié)構(gòu)和函數(shù)描述顧客等待隊列和“喚醒”理發(fā)師理發(fā)過程,以及沒有顧客時的“阻塞”理發(fā)師過程。編程時需考慮理發(fā)師和顧客對應的程序是并發(fā)操作的。提示:可利用隨機函數(shù)模擬并發(fā)操作。理發(fā)師和顧客兩個進程各自調(diào)用一個函數(shù)模擬生產(chǎn)及消費的操作。題目十九:P、V操作及進程同步的實現(xiàn)2.設計目的掌握信號量通信方式的一般方法,了解系統(tǒng)實現(xiàn)“阻塞”和“喚醒”功能的 方法和技巧

34、。同時掌握進程同步和互斥的概念及實現(xiàn)技術(shù)。.設計內(nèi)容用語言編程實現(xiàn)P、V原語并用P、V原語哲學家就餐問題:為每個哲學家各編一段程序描述他們的行為,試用 P、V操作實現(xiàn)。題目二十:銀行家算法.設計目的了解多道程序系統(tǒng)中,多個進程并發(fā)執(zhí)行的資源分配。2)掌握銀行家算法,了解資源在進程并發(fā)執(zhí)行中的資源分配情況。3)掌握預防死鎖的方法,系統(tǒng)安全狀態(tài)的基本概念。.設計內(nèi)容設計一個n個并發(fā)進程共享m個系統(tǒng)資源的程序以實現(xiàn)銀行家算法。 要求:簡單的選擇界面;能顯示當前系統(tǒng)資源的占用和剩余情況。為進程分配資源,如果進程要求的資源大于系統(tǒng)剩余的資源,不與分配并且提示分配不成功;撤銷作業(yè),釋放資源。編寫和調(diào)試一個

35、系統(tǒng)動態(tài)分配資源的簡單模擬程序,觀察死鎖產(chǎn)生的條件,并采用適當?shù)乃惴?,有效地防止和避免死鎖的發(fā)生。銀行家算法分配資源的原則是:系統(tǒng)掌握每個進程對資源的最大需求量,當進程要求申請資源時, 系統(tǒng)就測試該進程尚需資源的最大量, 如果系統(tǒng)中現(xiàn)存的資源數(shù)大于或等于該進程尚需求資源最大量時, 就滿足進程的當前申請。 這樣就可以保證至少有一個進程可能得到全部資源而執(zhí)行到結(jié)束, 然后歸還它所占有的全部資源供其它進程使用。銀行家算法中的數(shù)據(jù)結(jié)構(gòu)(1)可利用資源向量AvailableL維數(shù)組)是一個含有m 個元素,其中的每一個元素代表一類可利用的資源數(shù)目,其初值是系統(tǒng)中所配置的該類全部可用資源數(shù)目。 如果Avai

36、lablej=k, 表示系統(tǒng)中現(xiàn)有Rj類資源k個。(2典大需求矩陣Max(二維數(shù)組)m 的矩陣,它定義了系統(tǒng)中 n 個進程中的每一個進程對m 類資源的最大需求。如果 Max(i,j)=k , 表示進程 i 需要Rj 類資源的最大數(shù)目為k。(3份配貨!陣Allocation(二維數(shù)組)m 的矩陣, 它定義了系統(tǒng)中每一類資源當前已分配給每一進程的資源數(shù)。果Allocation(i,j尸k,表示進程i當前已分得Rj類資源k個。(4)需求矩陣Need (二維數(shù)組)是一個含有n*m 的矩陣,用以表示每一個進程尚需的各類資源數(shù)。如果Need(i,j尸k,表示進程i還需要Rj類資源k個,方能完成其任務。Ne

37、ed(i,j)= Max(i,j)-Allocation(i,j)題目二十一: SPOOLING 技術(shù)1 設計目的設計一個 SPOOLING 假脫機輸出的模擬程序,更好地理解和掌握SPOOLING 技術(shù)的實現(xiàn)原理。2設計內(nèi)容SPOOLING 技術(shù)廣泛地應用于各種計算機的 I/O 。該技術(shù)通過預輸出和緩輸出的方法,使用共享設備的一部分來模擬獨占設備。1)設計一個實現(xiàn)SPOOLING 技術(shù)的進程設計一個 SPOOLING 輸出服務進程、一個SPOOLING 輸出進程、兩個用戶請求進程。 用戶進程請求輸出一系列信息, 調(diào)用輸出服務進程, 由輸出服務進程將該信息送入輸出井。 等待 SPOOLING 進

38、程進行輸出。 SPOOLING 輸出進程工作時,根據(jù)請求塊記錄的各進程要輸出的信息將其輸出。2)設計進程調(diào)度算法進程調(diào)度采用隨機算法,兩個請求輸出的用戶進程的調(diào)度概率各為 45%,SPOOLING 輸出進程為10%,這由隨機數(shù)發(fā)生器產(chǎn)生的隨機數(shù)來模擬決定。進程狀態(tài)進程基本狀態(tài)有可執(zhí)行、等待、結(jié)束三種??蓤?zhí)行狀態(tài)就是進程正在運行或等待調(diào)度的狀態(tài);等待狀態(tài)又分為等待狀態(tài)1、等待狀態(tài)2、等待狀態(tài) 3。狀態(tài)變化的條件為 :進程執(zhí)行完成時,置為“結(jié)束”態(tài)。服務程序在將輸出信息送輸出井時, 如發(fā)現(xiàn)輸出井已滿, 將調(diào)用進程置為“等待狀態(tài)1”。SPOOLING 進程在進行輸出時,若輸出井空,則進入“等待狀態(tài)2

39、”。SPOOLING 進程輸出一個信息塊后,應立即釋放該信息塊所占的輸出井空間,并將正在等待輸出的進程置為“可執(zhí)行狀態(tài)”。服務程序在輸出信息到輸出井并形成輸出請求信息塊后,若SPOOLING進程處于等待態(tài),則將其置為“可執(zhí)行態(tài)”。當用戶進程申請請求輸出塊時, 若沒有可用請求時, 調(diào)用進程進入 “等待狀態(tài) 3”。題目二十二:進程間通信設計目的Linux系統(tǒng)的進程通信機構(gòu)(IPC)允許在任意進程間大批量的交換數(shù)據(jù)。本實驗的目的是了解和熟悉 Linux 支持的通信機制、共享存儲區(qū)機制及信號量機制。2設計內(nèi)容共享存儲區(qū)的創(chuàng)建,鏈接和斷開消息的創(chuàng)建,發(fā)送和接收編寫程序 1 ,實現(xiàn)利用共享存儲區(qū)進行進程通

40、信。使用系統(tǒng)調(diào)用shmget() shmat(), shmdt()及shmctl(筑制一長度為1k的消息發(fā)送和 接收程序。編寫程序 2, 實現(xiàn)利用消息隊列進行進程通信。 使用系統(tǒng)調(diào)用shmget(,)shmat(), shmdt()及shmctlQ制一長度為1k的消息發(fā)送和接收程序。1) 為了便于操作和觀察結(jié)果,用一個程序作為“引子”,先后fork ()兩個子進程, SERVER 和 CLIENT ,進行通信。SERVER端建立一個Key為75的共享區(qū),并將第一個字節(jié)置為-1,作為數(shù)據(jù)空的標志,等待其他進程發(fā)來的消息。當該字節(jié)的值發(fā)生變化時,表示收到了消息,進行處理。然后再次把它的值設為-1。

41、如果遇到的值為 0, 則視為結(jié)束信號, 取消該隊列, 并退出 SERVER。 SERVER每接收到一個消息后顯示一句“(server) received”。CLIENT 端使用 Key 為 75 的共享區(qū),當共享取得第一個字節(jié)為-1 時,SERVER 端空閑,可發(fā)送請求。 CLIENT 隨即填入9 到 0。期間等待SERVER 端再次空閑。進行完這些操作后, CLIENT 退出。 CLIENT每發(fā)送一條信息后顯示一句“(client) sent”。父進程在SERVER和CLIENT均退出后結(jié)束。1 設計目的加深對進程概念的理解, 明確進程和程序的區(qū)別。 進一步認識并發(fā)執(zhí)行的實質(zhì),并了解Linu

42、x 系統(tǒng)中進程通信的基本原理。2設計內(nèi)容( 1)編制一段程序,實現(xiàn)進程的管道通信。使用系統(tǒng)調(diào)用pipe()建立一條管道線,兩個子進程P1和P2分別向管道各寫一句話:Child 1 is sending a message!Child 2 is sending a message!而父進程則從管道中讀出來自兩個子進程的信息,顯示在屏幕上。要求父進程先接收子進程P1 發(fā)來的消息,再接收子進程P2 發(fā)來的消息。( 2)編制一段程序,實現(xiàn)進程的軟中斷通信。使用系統(tǒng)調(diào)用fork()創(chuàng)建兩個子進程,再用系統(tǒng)調(diào)用signal(讓父進程捕捉鍵盤上來的中斷信號(即按DEL 鍵);當捕捉到中斷信號后,父進程用系統(tǒng)

43、調(diào)用 Kill()向兩個子進程發(fā)出信號,子進程捕捉到信號后分別輸出下列信息后終止:Child 1 is killed by parent!Child 2 is killed by parent!父進程等待兩個子進程終止后,輸出下列信息后終止。Parent is killed!題目二十四: linux 進程與線程通訊1 設計目的:深刻理解線程和進程的概念, 掌握線程和進程在組成成分上的差別以及與其相適應的通信方式和應用目標。2設計內(nèi)容:以Linux系統(tǒng)進程和線程機制為背景,掌握 fork()和clone()系統(tǒng)調(diào)用的形式和功能以及與其相適應的高級通信方式。由 fork 派生的子進程之間通過pip

44、e 通信,由clone創(chuàng)建的線程之間通過共享內(nèi)存通信。以生產(chǎn)者-消費者為例,通過實當理解fork和clone兩個系統(tǒng)調(diào)用的區(qū)別。程序要求能夠創(chuàng)建4 個進程或線程, 其中包括兩個生產(chǎn)者和兩個消費者, 生產(chǎn)者和消費者之間能夠傳遞數(shù)據(jù)。題目二十五:動態(tài)不等長存儲資源分配算法1 設計目的:理解動態(tài)異常存儲分區(qū)資源管理, 掌握所需數(shù)據(jù)結(jié)構(gòu)和管理程序, 了解各種存儲分配算法的優(yōu)缺點。2設計內(nèi)容:(1)分析Unix最先適應(first fit, ff)存儲分配算法。即map數(shù)據(jù)結(jié)構(gòu)、存儲 分配函數(shù)ma 110c(和存儲釋放函數(shù)mfree(),找出與算法有關(guān)的成分。(2)修改上述算法有關(guān)成分,使其分別體現(xiàn) B

45、F(best fit,最佳適應)分配原則WF(worst fit ,最壞適應)分配原則。題目二十六:編程演示三種存儲管理方式的地址換算過程1 設計目的:理解頁式、 段式、 段頁式的邏輯地址向物理地址的轉(zhuǎn)換過程。 理解重定位的含義。要求演示正確、清晰,編程所用工具不限2設計內(nèi)容:編程實現(xiàn)演示頁式、段式、段頁式的地址轉(zhuǎn)換過程1、分頁方式的地址換算2、分段方式的地址換算3、段頁式的地址換算題目二十七:編程模擬多進程共享臨界資源設計目的:理解多進程共享臨界資源的原理,并編程實現(xiàn)2設計內(nèi)容:要求產(chǎn)生 3 個進程:1) 兩個進程模擬需要進入臨界區(qū)的用戶進程,當需要進入臨界區(qū)時,顯示:“進程x請求進入臨界區(qū)

46、”,同時向管理進程提出申請;申請返回,表示進入了臨界區(qū)。在臨界區(qū)中等待一段隨機時間,并顯示:“進程 x正在臨界區(qū)” ;當時間結(jié)束,顯示:“進程x退出臨界區(qū)”,同時向管理進程提出退出申請;當申請返回,顯示:“進程x 已退出臨界區(qū)?!?)一個進程作為原語的管理進程,接受其他進程的臨界區(qū)進入請求:如果允許進入,則設置相應變量,然后返回;如果不允許進入,則進入循環(huán)等待,直到允許為止;3)對臨界區(qū)的訪問應遵循空閑讓進、忙則等待、有限等待、讓權(quán)等待的準則。4)進程間通信可以采用信號、消息傳遞、管道或網(wǎng)絡通信方式。題目二十八:文件系統(tǒng)的設計與實現(xiàn)1 設計目的:通過設計一個小型文件系統(tǒng),進一步掌握文件管理的方

47、法和技術(shù),在實踐中去認識文件系統(tǒng)的實現(xiàn)原理, 加深對文件系統(tǒng)存儲、 數(shù)據(jù)的安全性和一致性理解,使學生初步具有研究、設計、編制和調(diào)試操作系統(tǒng)模塊的能力。2設計內(nèi)容:實現(xiàn)一個模擬文件系統(tǒng),可為該文件系統(tǒng)設計相應的數(shù)據(jù)結(jié)構(gòu)來管理目錄、磁盤空閑空間、 已分配空間等。 提供文件的創(chuàng)建、 刪除、 移位、 改名等功能。 、提供良好的界面,可以顯示磁盤文件系統(tǒng)的狀態(tài)和空間的使用情況。 提供虛擬磁盤轉(zhuǎn)儲功能,可將信息存入磁盤,還可從磁盤讀入內(nèi)存。題目二十九:主存空間的分配與回收1 設計目的本設計題目主要讓大家熟悉主存的各種分配與回收。 所謂分配, 就是解決多道作業(yè)或多進程如何共享主存空間的問題。所謂回收,就是當

48、作業(yè)運行完成時,將作業(yè)或進程所占用的主存空間歸還給系統(tǒng)。 主存的分配與回收的實現(xiàn)是與主存儲器的管理方式有關(guān)的。 通過本次設計, 幫助學生理解在不同的存儲管理方式下,如何實現(xiàn)主存空間的分配與回收。 使學生初步具有研究、 設計、 編制和調(diào)試操作系統(tǒng)模塊的能力。2設計內(nèi)容采用可變式分區(qū)管理, 使用首次或最佳適應算法實現(xiàn)主存的分配與回收。 可以采用分區(qū)說明表或空閑區(qū)鏈來進行。 設計多個作業(yè)或進程動態(tài)請求內(nèi)存資源的模擬系統(tǒng), 使用首次或最佳適應算法實現(xiàn)內(nèi)存的分配與回收, 實現(xiàn)可變式分區(qū)管理; 設計相應的內(nèi)存分配算法, 定義相關(guān)數(shù)據(jù)結(jié)構(gòu), 以及輸出顯示每次請求分配內(nèi)存的結(jié)果和內(nèi)存的已分配和未分配的狀況。題

49、目三十: Windows 多線程控制臺程序設計目的學習和掌握如何編寫 Windows 多線程控制臺程序。通過編寫程序,加深對進程和線程關(guān)系的理解,掌握多線程程序的執(zhí)行和編寫技巧。設計內(nèi)容寫一個單進程多線程的 Windows 控制臺程序,該程序在一個進程內(nèi)建立N個線程來執(zhí)行指定的任務。 N 由命令行傳遞給系統(tǒng)。Win32 控制臺程序中,主函數(shù)的格式如:Void main(int argc,char *argv)可以獲取命令行參數(shù)。通過VC+ ”工程/設置”的C/C+屬性頁設置應用程序為“MTDJ多線程利用Win32 API CreateThread便生成線程。題目三十一: 讀者與寫者問題(進程同

50、步問題)設計目的了解進程同步的概念, 理解信號量機制的原理, 掌握運用信號量解決進程同步問題的方法,進而學會運用進程的同步與互斥。設計要求:編程模擬讀者與寫者問題,要求顯示結(jié)果。. 設計內(nèi)容( 1)多個進程共享一個文件,其中只讀文件的稱之為讀者,其余只寫文件的稱為寫者。讀者可以同時讀,但是寫者只能獨立寫。( 2)對(1)修改,使得它對寫者優(yōu)先,即一旦有寫者到,后續(xù)的讀者都必須等待,而無論是否有讀者在讀文件。題目三十二: 模擬文件管理系統(tǒng)設計目的深入了解文件管理系統(tǒng),初步掌握文件管理系統(tǒng)的實現(xiàn)方法。. 設計內(nèi)容編寫一程序, 模擬一個簡單的文件管理系統(tǒng)。 樹型結(jié)構(gòu), 目錄下可以是目錄,也可以是文件

51、。在此文件管理系統(tǒng),可實現(xiàn)的操作有: TOC o 1-5 h z 改變目錄:格式:cd 顯示目錄:格式:dir創(chuàng)建目錄:格式:md 刪除目錄:格式: rd新建文件:格式:6計文件名刪除文件:格式:del退出文件系統(tǒng): exit實現(xiàn)參考:文件系統(tǒng)采用二叉樹型存儲結(jié)構(gòu),結(jié)點結(jié)構(gòu)如下:Struct FileNodeChar filenameFILENAME_LEN;/ 文件名 / 目錄名Int isdir ;/ 目錄、文件的識別標志Int i_nlink;/ 文件鏈接數(shù)Int adr;/ 文件的地址Struct FileNode *parent,*child;/指向父親的指針和左孩子的指針Struc

52、t FileNode *sibling_prev,*sibling_next;/方旨向前一個兄弟的指針和后一個兄弟 的指針。/ ”隔目錄名和文件名支持全路徑名和相對路徑名,路徑名各分量間用“開功能具體描述:改變目錄:改變當前工作目錄,目錄不存在是給出出錯信息顯示目錄:顯示指定目錄下或當前目錄下所有文件和一級目錄(選做:帶 /s 參數(shù)的 dir 命令,顯示所有子目錄)創(chuàng)建目錄:在指定路徑或當前路徑下創(chuàng)建指定目錄。重名時給出出錯信息。刪除目錄: 刪除指定目錄下所有文件和子目錄。 要刪目錄不空時, 要給出提示是 否要刪除。創(chuàng)建文件: 創(chuàng)建指定名字的文件, 只要創(chuàng)建表示文件的節(jié)點即可, 內(nèi)容及大小不

53、考慮。刪除文件:刪除指定文件,不存在時給出出錯信息。退出文件系統(tǒng): exit流程:初始化文件目錄 輸出提示符,等待接受命令,分析鍵入的命令;對合法的命令,執(zhí)行相應的處理程序,否則輸出錯誤信息,繼續(xù)等待新命令。直到鍵入exit退出為止。題目三十三: 內(nèi)存的申請與釋放.設計目的了解操作系統(tǒng)內(nèi)存分配的算法。.設計內(nèi)容定義一個自由存儲塊鏈表,按塊地址排序,表中記錄塊的大小。當請求分配內(nèi)存時, 掃描自由存儲塊鏈表, 址到找到一個足夠大的可供分配的內(nèi)存塊, 若找到的塊大小正好等于所請求的大小時, 就把這一塊從自由鏈表中取下來, 返回給申請者。 若找到的塊太大, 即對其分割, 并從該塊的高地址部分往低地址部分分割, 取出大小合適的塊返回給申請者, 余下的低地址部分留在鏈表中。 若找不到足夠大的塊, 就從操作系統(tǒng)中請求另外一塊足夠大的內(nèi)存區(qū)域, 并把它鏈接到自由塊鏈表中,然后再繼續(xù)搜索。釋放存儲塊也要搜索自由鏈表, 目的是找到適當?shù)奈恢脤⒁尫诺膲K插進去, 如果被釋放的塊的任何一邊與鏈表中的某一塊臨接, 即對其進行合并操作, 直到?jīng)]有合并的臨接塊為止,這樣可以防止存儲空間變得過于零碎??臻e區(qū)采用分區(qū)說明表的方法實現(xiàn)( 1)中的功能。要求同上。題

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論