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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論