操作系統(tǒng)課程設(shè)計(jì)報(bào)告_第1頁(yè)
操作系統(tǒng)課程設(shè)計(jì)報(bào)告_第2頁(yè)
操作系統(tǒng)課程設(shè)計(jì)報(bào)告_第3頁(yè)
操作系統(tǒng)課程設(shè)計(jì)報(bào)告_第4頁(yè)
操作系統(tǒng)課程設(shè)計(jì)報(bào)告_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、操作系統(tǒng)課程設(shè)計(jì)報(bào)告xx信息技術(shù)學(xué)院操作系統(tǒng)課程設(shè)計(jì)報(bào)告一、操作系統(tǒng)課程設(shè)計(jì)的目的與要求1、目的 死鎖會(huì)引起進(jìn)程僵死,嚴(yán)重的話會(huì)造成整個(gè)系統(tǒng)癱瘓。因此,死鎖現(xiàn)象是操作系統(tǒng)特別是大型系統(tǒng)中必須設(shè)法 防止的。學(xué)生應(yīng)獨(dú)立的使用 C語(yǔ)言(或其它程序設(shè)計(jì)語(yǔ)言)編寫 和調(diào)試一個(gè)系統(tǒng)動(dòng)態(tài)分配資源的簡(jiǎn)單模擬程序,觀察死鎖產(chǎn) 生的條件,并采用適當(dāng)?shù)乃惴?,有效的防止死鎖的發(fā)生。從而更直觀地了解死鎖的起因,初步掌握防止死鎖的簡(jiǎn) 單方法,加深理解課堂上講授過的知識(shí)。2、要求 (1)設(shè)計(jì)一個(gè)由n個(gè)并發(fā)進(jìn)程共享 m個(gè)系統(tǒng) 資源的系統(tǒng)。系統(tǒng)中進(jìn)程可動(dòng)態(tài)地申請(qǐng)資源和釋放資源。系統(tǒng)按各進(jìn)程的申請(qǐng)動(dòng)態(tài)地分配各資源。(2)系統(tǒng)應(yīng)能

2、顯示各進(jìn)程申請(qǐng)和釋放資源以及系統(tǒng)動(dòng) 態(tài)分配資源的過程,便于用戶觀察和分析。(3)系統(tǒng)應(yīng)能選擇是否采用防止死鎖算法或選用何種 防止算法(如有多種算法)。在不采用防止算法時(shí)觀察死鎖現(xiàn)象的發(fā)生過程。在使用防止死鎖算法時(shí),了解在同樣申請(qǐng)條件下,防止 死鎖的過程。二、簡(jiǎn)述課程設(shè)計(jì)內(nèi)容、主要功能和實(shí)現(xiàn)環(huán)境本示例采用銀行家算法防止死鎖的發(fā)生。假設(shè)有三個(gè)并發(fā)進(jìn)程共享十個(gè)系統(tǒng)。在三個(gè)進(jìn)程申請(qǐng)的系統(tǒng)資源之和不超過10時(shí),當(dāng)然不可能發(fā)生死鎖,因?yàn)楦鱾€(gè)進(jìn)程申請(qǐng)的資源都能滿足。在有一個(gè)進(jìn)程申請(qǐng)的系統(tǒng)資源數(shù)超過10時(shí),必然會(huì)發(fā)生死鎖。應(yīng)該排除這二種情況。程序采用人工輸入各進(jìn)程的申請(qǐng)資源序列。如果隨機(jī)給各進(jìn)程分配資源,就可

3、能發(fā)生死鎖,這就是 不采用防止死鎖算法的情況。假如,按照一定的規(guī)則,為各進(jìn)程分配資源,就可以防 止死鎖的發(fā)生。示例中采用了銀行算法。1編制和調(diào)試示例給由的死鎖觀察與避免程序,并用進(jìn) 程的各種資源請(qǐng)求序列測(cè)試死鎖的形成和避免死鎖的過程, 強(qiáng)調(diào)過程顯示。2修改并調(diào)試一個(gè)使用有序資源使用法來預(yù)防死鎖的模 擬程序,并用進(jìn)程的各種資源請(qǐng)求序列測(cè)試死鎖的形成和預(yù) 防死鎖的過程。實(shí)現(xiàn)環(huán)境C三、任務(wù)的分析、設(shè)計(jì)、實(shí)現(xiàn)和討論1、任務(wù)的分析 操 作系統(tǒng)按照銀行家制定的規(guī)則為進(jìn)程分配資源,當(dāng)進(jìn)程首次 申請(qǐng)資源時(shí),要測(cè)試該進(jìn)程對(duì)資源的最大需求量,如果系統(tǒng) 現(xiàn)存的資源可以滿足它的最大需求量則按當(dāng)前的申請(qǐng)量分 配資源,否

4、則就推遲分配。當(dāng)進(jìn)程在執(zhí)行中繼續(xù)申請(qǐng)資源時(shí),先測(cè)試該進(jìn)程本次中請(qǐng)的資源數(shù)是否超過了該資源所剩余的總量。若超過則拒絕分配資源,若能滿足則按當(dāng)前的申請(qǐng)量分配資源,否則也要推遲分配2、任務(wù)的設(shè)計(jì)與實(shí)現(xiàn)(分別給由系統(tǒng)總控和本人負(fù)責(zé)實(shí)現(xiàn)的算法流程圖與說明)3操作過程和結(jié)果分析序中使用的數(shù)據(jù)結(jié)構(gòu)和變量名說明如下OPTION選擇標(biāo)志 0選用防止死鎖”算法1不用防止死 鎖”算法 輸入ai1 2 2代表現(xiàn)有資源數(shù)。然后輸入bI2 9 9代表最大需求資源。然后輸入opnion的值。程序自動(dòng)判斷其是否為死鎖,并處理顯示答案。四、操作系統(tǒng)課程設(shè)計(jì)小結(jié)(收獲、不足與建議)有些難度,在隊(duì)長(zhǎng)的幫助下完成了,希望能在操作系統(tǒng)

5、方面多下功夫5、 附錄主要源程序和運(yùn)行結(jié)果的清單include “stdio.h include “stdlib.h inclUde “iostream.h struct pcb char name; 進(jìn)程號(hào) char statue;/狀態(tài) r 就緒 f 完成 intNeed;尚需資源數(shù) struct pcb * next; ; int e13; pcb * createstruct pcb * a,int n /初始化進(jìn)程鏈表 a表示隊(duì)列 n表示 進(jìn)程個(gè)數(shù) struct pcb *q,*s; sqNULL; sa; forint i1;iq-nameq-Maxq-allocation; if

6、q-Maxallocationstatue r ; ee-q-allocation; q-nextNULL; ifaNULL asq; else s-nextq;ss-next; return a; void showstruct pcb * a/打 E3 進(jìn)程情況 struct pcb * p; pa; printf 資 源占用 情況為 n " printf “ PROCESVPMAXCLAIM VALLOCATION NEEDS STATUS n “whilepNULL printf c"t d td t dt ct n ”, p-name,p-Max,p-alloca

7、tion,p-Max-p-allocation,p-statue;pp-next; void yinhangstruct pcb * a, int n /執(zhí)行車艮行家算法a表示進(jìn)程鏈表,n表示進(jìn)程的個(gè)數(shù) int Request,l,flag;/l 是輸出安全序列的下標(biāo),Request是進(jìn)程申請(qǐng)的資源個(gè)數(shù)flagO; l0; struct pcb *q,*x; /x 用來申請(qǐng)資源的進(jìn)程char t; /記錄要申請(qǐng)進(jìn)程的資源名字 char m 20;安全序列qxNULL; qxa; whilel printf請(qǐng)'輸入進(jìn)程名和申請(qǐng)的資源數(shù)n " cintRequest; ifReq

8、uestallocationRequestMax break; else printf輸入的有誤,請(qǐng)重新輸入n “; printf試分配'后的結(jié)果為 n 二 printf“PROCESS/PMAXCLAIMVALLOCATIONSTATUS AVn " ; whilexNULL 把當(dāng)前申請(qǐng)量付給 進(jìn)程 ifx-namet xx-next; else x-allocationx-allocationRequest;ee-Request;系統(tǒng)所乘 ij 資源 whileqNULL printffdctd t ct d t n " ,q-name,q-Max,q-allo

9、cation,q-statue,e-3; qq-next; printf "n " ; break; printf 進(jìn)行安全性算法 n "forint i0;istatue f ifq -allocationq-Max q-statue f ; printf c"t d td t ct d n ” ,q-name,q-Max,q-allocation, q-statue,e-3; mlq-name; ll1; qq-next; continue; ifq-Max-q-allocationstatue f ; mlq- name; ll1; printf

10、t d t(c tn 二 qname,q-Max,q-allocation,q-statue,e-3; qq-next; else qq-next; qa; whileqNULL 判斷狀態(tài) ifq-statue f flagl; printf安"全序列查找失敗,資源分配錯(cuò)誤n " ;xa; whilexNULL 把當(dāng)前申請(qǐng)量付給進(jìn)程 ifx-namet xx-next; else x-allocationx-allocation-Request; eeRequest; break; showa; return ; else qq- next; printf安全序列為 n &

11、quot;;腑I由安全序歹U fori0;inamet xx-next; else ifx-allocationx-Max ex-allocation; break; printf 試'分酉已成功 n ”; xa; whilexNULL ifx-allocationx-Max x-statue r ; xx-next; showa; return ; void randomstruct pcb * a,int r int y,flag;flagl; struct pcb *q,*x; char t; qxNULL; qxa; whilel printf 請(qǐng) 輸入要申請(qǐng)資源的進(jìn)程的進(jìn)程名

12、和要申請(qǐng)的資源個(gè)數(shù)n “cinty; ifynamet xx-next; else x-allocationx-allocationy; ee-y; ifeallocationx- Max printf由現(xiàn)死鎖,系統(tǒng)現(xiàn)在已無(wú)可以利用 的 資 源 n “; showa; break; ifx-allocationx-Max eex-allocation; x-statue f ; printf現(xiàn)在系統(tǒng)可以利用的資源個(gè)數(shù)為 n ",e3; showa; else printf現(xiàn)在系統(tǒng)可以利用的資源個(gè)數(shù)為n 二e3; showa; break; qa; whileqNULL ifq-statue f flag。; qq- next; ifflag1 printf所有進(jìn)程都獲得了資源,資源分配完畢 n二 void m ain int n; struct pcb *a; aNULL; int r3;/ 進(jìn)程數(shù)為3 acreatea,r;/創(chuàng)建進(jìn)程數(shù)為 3的 進(jìn)程隊(duì)列,并將進(jìn)程隊(duì)列的值賦值給a showa; printf "n "; printf “OPTION "; scanf "d ”printf“CLAIMDFPROCESS1IS 123-1-1n“;printf“CLAIMDFPRO

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(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)論