![操作系統(tǒng)課程設(shè)計_第1頁](http://file4.renrendoc.com/view/e8b2aecc215767abaae9b7b6ca308450/e8b2aecc215767abaae9b7b6ca3084501.gif)
![操作系統(tǒng)課程設(shè)計_第2頁](http://file4.renrendoc.com/view/e8b2aecc215767abaae9b7b6ca308450/e8b2aecc215767abaae9b7b6ca3084502.gif)
![操作系統(tǒng)課程設(shè)計_第3頁](http://file4.renrendoc.com/view/e8b2aecc215767abaae9b7b6ca308450/e8b2aecc215767abaae9b7b6ca3084503.gif)
![操作系統(tǒng)課程設(shè)計_第4頁](http://file4.renrendoc.com/view/e8b2aecc215767abaae9b7b6ca308450/e8b2aecc215767abaae9b7b6ca3084504.gif)
![操作系統(tǒng)課程設(shè)計_第5頁](http://file4.renrendoc.com/view/e8b2aecc215767abaae9b7b6ca308450/e8b2aecc215767abaae9b7b6ca3084505.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、精品文檔可編輯精品文檔可編輯任務(wù)一、進(jìn)程創(chuàng)建、控制與撤消目的:通過進(jìn)程的創(chuàng)建和控制的設(shè)計來達(dá)到如下目的:加深對進(jìn)程概念的理解,明確進(jìn)程和程序的區(qū)別;進(jìn)一步認(rèn)識并發(fā)執(zhí)行的概念,區(qū)別順序執(zhí)行和并發(fā)執(zhí)行;分析進(jìn)程爭用臨界資源的現(xiàn)象,學(xué)習(xí)解決進(jìn)程互斥的方法;內(nèi)容:在 WINDOWS 環(huán)境下模擬實驗:編寫一程序,來模擬進(jìn)程的創(chuàng)建和撤消,要求通過終端鍵盤輸入三、四作業(yè)的名稱、大小、優(yōu)先級等。系統(tǒng)為它創(chuàng)建進(jìn)程,并把進(jìn)程控制塊PCB 的內(nèi)容送到終端顯示器上輸出。同時模擬內(nèi)存空間為作業(yè)分配內(nèi)存空間,并把結(jié)果用圖形形象地表示出來,同樣通過終端輸出。按進(jìn)程的優(yōu)先級的順序撤消進(jìn)程,同時通過終端顯示PCB 的撤消過程和
2、內(nèi)存的釋放過程程序流程圖:源代碼如下:#include;using namespace std;struct PCBint pid;int priority;int size;int detail;int isrun;PCB running20, ready20;int sum = 0, pid_1;void choose();void menu();int create。if (sum = 20)cout 內(nèi)存已滿,請先結(jié)束或換出進(jìn)程 endl;elsecout 請輸入第 sum + 1 個進(jìn)程 endl;cout 請輸入進(jìn)程的pid runningsum + 1.pid;cout 請輸入新
3、的進(jìn)程的優(yōu)先級 runningsum + 1.priority;cout 請輸入新的進(jìn)程的大小 runningsum + 1.size;cout 請輸入新的進(jìn)程的詳情 runningsum + 1.detail;runningsum + 1.isrun = 1;sum+;return runningsum - 1.isrun;choose();void display()int pid;cout 請輸入進(jìn)程的pid pid;if (pid 0 & pid = 20 & runningpid.isrun = 1)精品文檔可編輯精品文檔可編輯cout 進(jìn)程的 pid 是 : runningpid.
4、pidendl;cout 進(jìn)程的優(yōu)先級是: runningpid.priorityendl;cout 進(jìn)程的大小是: runningpid.sizeendl;cout 進(jìn)程的相關(guān)信息: runningpid.detailendl;elsecout 所查看運行進(jìn)程不存在 endl;choose();void replace()int pid1, pid2;cout 請輸入第一個替換進(jìn)程的pid pid1;cout 請輸入第二個替換進(jìn)程的pid pid2;if (pid1 0 & pid1 runningpid2.priority)ready20.pid = runningpid1.pid;rea
5、dy20.priority = runningpid1.priority;ready20.size = runningpid1.size;ready20.detail = runningpid1.detail;runningpid1.pid = runningpid2.pid;runningpid1.priority = runningpid2.priority;runningpid1.size = runningpid2.size;runningpid1.detail = runningpid2.detail;runningpid2.pid = ready20.pid;runningpid2
6、.priority = ready20.priority;runningpid2.size = ready20.size;runningpid2.detail = ready20.detail;cout 替換完成 endl;cout 被替換進(jìn)程的pid 是 : ready20.pidendl;cout 被替換進(jìn)程的優(yōu)先級是:, ready20.priority;cout 被替換進(jìn)程的大小是: ready20.sizeendl;cout 被替換進(jìn)程的詳情是:ready20.detailendl;elsecout 進(jìn)程優(yōu)先級不夠大endl;elsecout 所查看運行進(jìn)程不存在endl;choos
7、e();void kill()int kpid;cout kpid;if (kpid 0 & kpid 20 & runningkpid.isrun = 1)runningkpid.isrun = 0;choose();void choose() int choose;cout 是否繼續(xù)操作?繼續(xù),請輸入1 ,退出:按任意鍵 endl;cout choose;if (choose = 1) menu();else exit(0);void menu() int n, i;n = 1;while (n = 1) 進(jìn)程模擬 endl;建進(jìn)程2. 查看進(jìn)程信息 endl;撤銷進(jìn)程4. 終止進(jìn)程 en
8、dl;5. 退出 endl;你的選擇:;break;system(cls);cout cout 1. 創(chuàng)cout 3.cout cout i;switch (i)case 1:create();case2:display(); break;case精品文檔可編輯精品文檔可編輯3:replace(); break;break;case 4:kill();case 5: exit(0);default:n = 0;int main()menu();return 0;運行結(jié)果如下:息i.創(chuàng)斛程3金銷進(jìn)程、口5,退出清輸入你的選擇:精品文檔可編輯精品文檔可編輯S_【口王二_戶raw C windows
9、s/stem32cmdexe3 ,撤籍進(jìn)程5.退出 輸入你的1rjid23請輸入新的進(jìn)程的優(yōu)先級 q青輸入新的進(jìn)程的大小 %輸入新的講程的詳情12函 C:wi n d gvrss/st?m 3 2tnn d-ex?用2 程2 進(jìn)程朗 進(jìn)箱 建撤 創(chuàng)3.K+靈 ”8程進(jìn)進(jìn)止的程 S AA2 31- 1快: 2 :芝)3 工是:1自T擇 娓先小pi優(yōu)大的的人程程毒否輸,退出:按任意鍵SH C:windowsystem32Acmd+exe三星 ,1K.程進(jìn)進(jìn)止創(chuàng)3.AA 1-4Ti,rr+rr請請3:撤銷迸程“葬墓目息11請輸入第二個替換進(jìn)程的口 id請榆入1,退出.按任意鍵任務(wù)三、基本存儲器管理目
10、的:一個好的計算機(jī)系統(tǒng)不僅要有一個足夠容量的、存取速度高的、穩(wěn)定可靠的主存儲器,而且要能合理地分配和使用這些存儲空間。 當(dāng)用戶提出申請存儲 器空間時,存儲管理必須根據(jù)申請者的要求,按一定的策略分析主存空間的使 用情況,找出足夠的空閑區(qū)域分配給申請者。當(dāng)作業(yè)撤離或主動歸還主存資源 時,則存儲管理要收回作業(yè)占用的主存空間或歸還部分主存空間。主存的分配和回收的實現(xiàn)與主存儲器的管理方式有關(guān)的,通過本實驗幫助學(xué)生理解在不同 的存儲管理方式下怎樣實現(xiàn)主存的分配和回收。內(nèi)容:從下兩種存儲管理方式的主存分配和回收中, 選擇一種管理方式來實現(xiàn)本次實驗任務(wù):1、在可變(動態(tài))分區(qū)管理方式下,采用最先適應(yīng)算法。2、
11、在分頁式管理方式下,采用位示圖來表示主存的分配情況和回收情況程序流程圖:源代碼如下:#include#include#define n 10/系統(tǒng)最大作業(yè)數(shù)#define maxsize 20/空閑區(qū)最大內(nèi)存#define minisize 100using namespace std;struct float addr; /已分配分區(qū)起始地址精品文檔可編輯精品文檔可編輯精品文檔可編輯float size;/ 已分配分區(qū)長度,單位為字節(jié)int flag;useedn;/ 已分配區(qū)表structfloat addr; / 空閑區(qū)起始地址float size; / 空閑區(qū)大小int flag;/0
12、 為空, 1 未分配freesmaxsize;void allo(char a,float xk)int i,k;float ad;k=-1;for(i=0;i=xk&freesi.flag=1)if(k=-1|freesi.sizefreesk.size)k=i;if(k=-1)cout 無可用空閑區(qū)endl;return;if(freesk.size-xk=minisize)freesk.flag=0;ad=freesk.addr;xk=freesk.size;elsefreesk.size=freesk.size-xk;ad=freesk.addr+freesk.size;i=0;whi
13、le(useedi.flag!=0&i=n)couterror, 未初始化endl;if(freesk.flag=0)freesk.flag=1;elsefreesk.size=freesk.size+xk;return;elseuseedi.addr=ad;useedi.size=xk;useedi.flag=a;return;void findc(char x)int i,k,a,s,t;float S,L;s=0;while(useeds.flag!=x|useeds.flag=0)&s=n)cout沒有找到該作業(yè)endl;return;useeds.flag=0;S=useeds.ad
14、dr;L=useeds.size;a=-1;k=-1;i=0;while(imaxsize&(a=-1|k=-1)if(freesi.flag=1)if(freesi.addr+freesi.size=S)k=i;if(freesi.addr=S+L)a=i;i+;if(k!=-1)if(a!=-1)freesk.size=freesa.size+freesk.size+L;freesa.flag=0;elsefreesk.size=freesk.size+L;elseif(a!=-1)freesa.addr=S;freesa.size=freesa.size+L;elset=0;while(
15、freest.flag=1&t=maxsize)cout 內(nèi)存空閑表沒有空間,回收空間失敗endl;useeds.flag=a;return;freest.addr=S;freest.size=L;freest.flag=1;return;int main( )int i,a;float xk;frees0.addr=10240;frees0.size=10240;frees0.flag=1;for(i=1;imaxsize;i+)freesi.flag=0;for(i=0;in;i+)useedi.flag=0;while(1)(cout選擇操作:endl0- 退出endl”1-分配內(nèi)存en
16、dl”2-回收已分配內(nèi)存endl3-顯示內(nèi)存信息endl;couta;switch(a)(case 0: exit(0);case 1:couta;coutxk;allo(a,xk);break;case 2:couta;findc(a);break;case 3:cout輸出空閑分區(qū):endl”起始地址分區(qū)長度標(biāo)志 endl;for(i=0;imaxsize;i+)coutfreesi.addr freesi.size freesi.flagendl;cout按任意鍵,輸出已分配信息endl;getch();cout查看已分配分區(qū):endl起始地址分區(qū)長度標(biāo)志endl;for(i=0;in;
17、i+)if(useedi.flag!=0)coutuseedi.addruseedi.sizeuseedi.flagendl;elsecoutuseedi.addruseedi.sizeuseedi.flagendl;break;default:cout 輸入有誤! ! ! ! endl;return 1;/心債心 配信選二大 :4t= 作內(nèi)已內(nèi)夠器存 - 內(nèi)鼠 配信選 貢力富 內(nèi)己內(nèi)你操出配收受作以出配收. iStSS分回顯分回顯輸 選用g-I3-請泉選A-e-A請raw C :wi n dowsYsyste m 3 2Acmd*exvnEHJ 內(nèi)i尖空地分回顯電始配信選區(qū)泅 事鬲分方內(nèi)息擇
18、0000000 0 00 0 0 000000物n111 獨MCSIHEI。8時A 清輸起1B000000000000 0 0 0 0 0精品文檔可編輯精品文檔可編輯C: ,7- i ndm ?E & exeI a 0 0 0 a 0配分區(qū)*分區(qū)長度標(biāo)志起始夏量意鍵.輸出已分配信息204s 11 123=。維分回顯輸0A000000 SI 選0-E-B-請0_000 0 0-030存 .配信選-獲刀雷 作內(nèi)昌你 操出配收一父任務(wù)五、死鎖的避免一、目的在多道程序系統(tǒng)中,多個進(jìn)程的并發(fā)執(zhí)行來改善系統(tǒng)的資源利用率,提高系統(tǒng)的吞吐量,但可能發(fā)生一種危險一一死鎖。所謂死鎖 (Deadlock),是指多個
19、進(jìn) 程在運行過程中因爭奪資源而造成的一種僵局(DeadlyEmbrace ),當(dāng)進(jìn)程處于 這種狀態(tài)時,若無外力作用,他們都無法在向前推進(jìn)。我們可以在分配資源時加上限制條件就可以預(yù)防死鎖,但是,在每一種預(yù)防 死鎖的方法之中,都施加了較強(qiáng)的限制條件;而在避免死鎖的方法中,所施加的 限制條件較弱,有可能獲得令人滿意的系統(tǒng)性能。:、內(nèi)容利用銀行家算法來避免死鎖的發(fā)生#include#include#define max_s 20#define max_p 100int availablemax_s;int max max_p max_s ;int allocation max_p max_s ;int
20、 need max_p max_s ;int request max_s ;int requestPID;int source;int process;using namespace std;/1: 表示請求的資源還分配的資源/2: 表示請求的資源系統(tǒng)剩余的資源/3: 表示不存在安全序列/0: 成功int banker( int stSq )int i , j , k;for( i = 0 ; i needrequestPIDi ) return 1;for( i = 0 ; i availablei ) return 2;for( i = 0 ; i source ; i+ )availab
21、lei -= requesti;allocationrequestPIDi += requesti;needrequestPIDi -= requesti;int finish max_p = 0 ;int work max_s ;int curS;精品文檔可編輯精品文檔可編輯for( i = 0 ; i source ; i+ )worki = availablei;for( k = 0 ; k process ; k+ )bool flag = false;for( i = 0 ; i process & !flag ; i+ )if( finishi = 0 )flag = true;f
22、or( j = 0 ; j workj )flag = false;curS = i;if( !flag )for( j = 0 ; j source ; j+ )availablej += requestj;allocationrequestPIDj -= requestj;needrequestPIDj += requestj;return 3;finishcurS = k+1;for( j = 0 ; j source ; j+ )workj += allocationcurSj;for( i = 0 ; i process ; i+ )j = 0;while( finishj != i
23、 + 1 )j+;stSqi = j;return 0;void setCS()source = 3;process = 5;int a = 4 , 5 , 8 ;int max20100;int m max_s = 8 , 5 , 4 , 5 , 3 , 3 , 10 , 1 , 3 , 3 , 3 , 3 , 5 , 4 , 4 ,;int al max_s = 1 , 2 , 1 , 3 , 1 , 1 , 1 , 1 , 3 ;int re = 0 , 2 , 2 ;int i , j;cout 當(dāng)前可用資源數(shù):endl;for( i = 0 ; i source ; i+ )avai
24、lablei = ai;coutsetw(5)availablei;coutendlendl;cout 進(jìn)程所需資源的最大數(shù)量:endl;for( i = 0 ; i process ; i+ )for( j = 0 ; j source ; j+ )maxij = mij;coutsetw(5)maxij;coutendl;coutendl;cout 進(jìn)程已分配到資源量:endl;for( i = 0 ; i process ; i+ )for( j = 0 ; j source ; j+ )allocationij = alij;coutsetw(5)allocationij;couten
25、dl;coutendl;cout 進(jìn)程還需的資源量:endl;for( i = 0 ; i process ; i+ )for( j = 0 ; j source ; j+ )needij = maxij - allocationij;coutsetw(5)needij;)coutendl;)coutendl;requestPID = 1;cout進(jìn)程requestPID 正在請求的資源:endl;for( i = 0 ; i source ; i+ )requesti = rei;coutsetw(5)requesti;)coutendlendl;)void main()setCS();in
26、t stSq max_p = 0 ;cout銀行家算法的演示endl;int error = banker( stSq );if( !error )cout 可以進(jìn)行分配endl;for( int i = 0 ; i process ; i+ )coutsetw(5)stSqi;coutendl;elsecout 剩余資源無法滿足要求,拒絕分配資源endl;任務(wù)六、磁盤空間的分配與回收目的:磁盤初始化時把磁盤存儲空間分成許多塊(扇區(qū)),這些空間可以被多個用戶共享。用戶作業(yè)在執(zhí)行期間常常要在磁盤上建立文件或已經(jīng)建立在磁盤上的文件刪去,這就涉及到磁盤存儲空間的分配和回收。一個文件存放到磁盤上,可以
27、組織成順序文件(連續(xù)文件)、鏈接文件(串聯(lián)文件)、索引文件等,因此,磁盤存儲空間的分配有兩種方式,一種是分配連續(xù)的存儲空間,另一種是可以分配不連續(xù)的存儲空間。怎樣有效地管理磁盤存儲空間是操作系統(tǒng)應(yīng)解決的一個重要問題,通過本實驗使學(xué)生掌握磁盤存儲空間的分配和收回算法。內(nèi)容:模擬磁盤空閑空間的表示方法,以及模擬實現(xiàn)磁盤空間的分配和回收。從下題目中選擇一題來實現(xiàn)設(shè)備的管理:連續(xù)的磁盤存儲空間的分配和回收。用位示圖管理磁盤存儲空間。( 3 )模擬 UNIX 系統(tǒng)的空閑塊組鏈接法,實現(xiàn)磁盤存儲空間的管理。提示: 參考教材P231 P2341、連續(xù)的磁盤存儲空間的分配和回收:( 1) 要在磁盤上建立順序文
28、時,必須把按序排列的邏輯記錄依次存放在磁盤的連續(xù)存儲空間中??杉俣ù疟P初始化時,已把磁盤存儲空間劃分成若干個等長的塊(扇區(qū)),按柱面號和盤面號的順序給每一塊確定一個編號。隨著文件的建立、刪除、磁盤存儲空間被分成許多區(qū)(每一區(qū)包含若干塊),有的區(qū)存放著文件,而有的區(qū)的空閑的。當(dāng)要建立順序文件時必須找到一個合適的空閑區(qū)來存放文件記錄,當(dāng)一個文件被刪除時,則該文件占用的區(qū)應(yīng)成為空閑區(qū)。為此可用一張空閑區(qū)表不記錄磁盤存儲空間中尚未占用的部分,格式如下:序列起始空閑塊號空閑塊個數(shù)狀態(tài)156未分配2143未分配32130未分配4空表目:(2)要建立文件時,先查找空閑區(qū)表,從狀態(tài)為“未分配”的登記欄目中找出
29、一 個塊數(shù)能滿足要求的區(qū),由起始空閑塊號能依次推得可使用的其它塊號。若不需 要占用該區(qū)的所有塊時,則剩余的塊仍應(yīng)為未分配的空閑塊,這時要修改起空閑 塊號和空閑塊數(shù)。若占用了該區(qū)的所有塊,則相應(yīng)登記欄中的狀態(tài)修改成“空表 目”,刪除一個文件時,從空閑區(qū)表中找一個狀態(tài)為“空表目”的登記欄目,把歸 還的起始塊號和塊數(shù)填入對應(yīng)的位置。磁盤存儲空間的分配和回收算法類似于主存儲器的可變分區(qū)方式的分配和回收。同學(xué)們可參考上一實驗的第一題。當(dāng)找到空塊后,必須啟動磁盤把信息存放到指定的塊中,啟動磁盤必須給出由三個參數(shù)組成的物理地址:柱面號、磁道號和物理記錄號。故必須把找到的空閑塊號換算成磁盤的物理地址。為了減少
30、移臂次數(shù),磁盤上的信息按柱面上各磁道順序存放?,F(xiàn)假定一個盤組共有 200 個柱面, (編號0 199 )每個柱面有20 個磁道(0 19,同一柱面上的各磁道分布在各盤面上,故磁道號即盤面號。) ,每個磁道被分成等長的6 個物理記錄(編號0 5,每個盤面被分成若干個扇區(qū),故每個磁道上的物理記錄號即為對應(yīng)的扇區(qū)號。) 。那么,空閑塊號與磁盤物理地址的對應(yīng)關(guān)系如下:假設(shè)乂=空閑塊號/6 , m=空閑塊號/6則物理記錄號=m 磁道號 =M/20 ,柱面號=M/20刪除一個文件時,從文件目錄表中可得到該文件在磁盤上的起始地址和邏輯記錄個數(shù),假定每個邏輯記錄占磁盤上的一塊,則可推算出歸還后的起始空閑塊號和
31、塊數(shù),登記到空閑區(qū)表中。換算關(guān)系如下:起始空閑塊號=(柱面號 *20+ 磁道號)*6+ 物理記錄號空閑塊數(shù) =邏輯記錄數(shù)請設(shè)計磁盤存儲空間的分配和回收程序,要求把分配到空閑塊轉(zhuǎn)換成磁盤物理地址,把歸還的磁盤空間轉(zhuǎn)換成空閑塊號假定空閑區(qū)表的初值如提示(1 )中指出,現(xiàn)有一文件要占用10 塊,運行你所設(shè)計的分配程序,顯示或打印分配后的空閑區(qū)表以及分配到的磁盤空間的起始物理地址。然后,有一文件被刪除,它占用的磁盤空間為:1 號柱面 2 號磁道, 0號物理記錄開始的4 塊,運行你所設(shè)計劃的回收程序,顯示或打印回收后的空閑區(qū)表。2 、用位示圖管理磁盤存儲空間的分配和回收:( 1 )為了提高磁盤存儲空間的
32、利用率,可在磁盤上組織成鏈接文件、索引文件,這類文件可以把邏輯記錄存放在不連續(xù)的存儲空間。為了表示哪些磁盤空間已被占用,哪些磁盤空間是空閑的,可用位示圖來指出。位示圖由若干字節(jié)構(gòu)成,每一位與磁盤上的一塊對應(yīng),“ 1 ”狀態(tài)表示相應(yīng)塊已占用, “ 0”狀態(tài)表示該塊為空閑。位示圖的形式與上一實驗中的位示圖一樣,但要注意,對于主存儲空間和磁盤存儲空間應(yīng)該用不同的位示圖來管理,絕不可混用。( 2 )申請一塊磁盤空間時,由分配程序查位示圖,找出一個為“0 ”的位,計算出這一位對應(yīng)塊的磁盤物理地址,且把該位置成占用狀態(tài)“1 ”。假設(shè)現(xiàn)在有一個盤組共 80 個柱面,每個柱面有兩個磁道,每個磁道分成4 個物理
33、記錄。那么,當(dāng)在位示圖中找到某一字節(jié)的某一位為“ 0” 時, 這個空閑塊對應(yīng)的磁盤物理地址為:柱面號=字節(jié)號磁道號=位數(shù)/4物理記錄號=位數(shù)/4( 3 ) 歸還一塊磁盤空間時,由回收程序根據(jù)歸還的磁盤物理地址計算出歸還塊在位示圖中的對應(yīng)位,把該位置成“ 0”。按照(2)中假設(shè)的盤組,歸還塊在位示圖中的位置計算如下:字節(jié)號=柱面號位數(shù)=磁道號*4+物理記錄號(4)設(shè)計申請一塊磁盤空間和歸還一塊磁盤空間的程序。要求能顯示或打印程序 運行前和運行后的位示圖;分配時把分配到的磁盤空間物理地址顯示或打印出來, 歸還時把歸還塊對應(yīng)于位示圖的字節(jié)號和位數(shù)顯示或打印出來。(5)假定已有如表6 1磁盤空間被占用
34、了,現(xiàn)在要申請五塊磁盤空間,運行分配程序,按(4)中要求顯示或打印運行的結(jié)果。然后再歸還如表 6-2的空間, 運行回收程序,按(4)中的要求顯示或打印運行結(jié)果。柱面號磁道號物理記錄號001002010013100112表6 1精品文檔精品文檔柱面號磁道號物理記錄號002010101表623、模擬UNIX系統(tǒng)的空閑塊成組鏈接法,實現(xiàn)磁盤存儲空間的管理:(1 )假定磁盤存儲空間已被劃分成長度 n的等長塊,共有M塊可供使用。UNIX系統(tǒng)中采用空閑塊成組鏈接的方法來管理磁盤存儲空間,將磁盤中的每N個空閑塊(NM)分成一組,最后一組可以不足 N塊,每組的第一塊登記了下一組空閑塊的塊數(shù)和塊號,第一組的塊數(shù)
35、和塊號登記在專用塊中,登記的格式如下:當(dāng)?shù)谝豁梼?nèi)容為“ 0”時,則第二項起指出的空閑塊是最后一組。(2)現(xiàn)模擬UNIX系統(tǒng)的空閑塊成組鏈接,假定共有 8塊可供使用,每3塊為可編輯精品文檔可編輯精品文檔可編輯一組,則空閑塊成組鏈接的初始狀態(tài)為:A0A1A4A8開始時,空閑塊號是順序排列的,但經(jīng)若干次的分配和歸還操作后,空閑塊的鏈精品文檔精品文檔接就未必按序排列了用二維數(shù)組AMN來模擬管理磁盤空間,用 Ai表示第i塊,第0塊A0 作為專用塊。(3)成組鏈接的分組情況記錄在磁盤物理塊中,為了查找鏈接情況,必須把它們讀入主存,故當(dāng)磁盤初始化后,系統(tǒng)先將專用塊內(nèi)容復(fù)到主存中,定義一個數(shù)組 MA存放專用塊
36、內(nèi)容,即MA=A0。中請一塊磁盤空間時,查 MA,從中找出空 閑塊號,當(dāng)一組空閑塊只剩第一塊時,則應(yīng)把該塊中指出的下一組的空閑塊數(shù)和 塊號復(fù)制到專用塊中,然后把該塊分配給申請者。當(dāng)一組的空閑塊分配完后則把 專用塊內(nèi)容(下一組鏈接情況)復(fù)制到主存,再為申請者分配。分配算法如圖61 o圖6 1采用成組鏈接的分配算法(4)歸還一塊時給出歸還的塊號,若當(dāng)前組不滿規(guī)定塊時,將歸還塊登記入該組; 若當(dāng)前組已滿,則另建一新組,這時歸還塊作為新一組的第一塊,應(yīng)把主存中登 記的一組鏈接情況MA復(fù)制歸還塊中,然后在 MA重新登記一個新組。歸還一塊 的算法圖62。精品文檔可編輯精品文檔int ij;可編輯圖 6 2
37、 采用成組鏈接的回收算法( 5 ) 設(shè)計分配和歸還磁盤空間的程序,能顯示或打印分配的磁盤空間的塊號,在完成一次分配或歸還后能顯示或打印各空閑塊組的情況(各組的空閑塊數(shù)和塊號) 。 本實驗省去了塊號與物理地址之間的轉(zhuǎn)換工作,而在實際的系統(tǒng)中必須進(jìn)行塊號與物理地址的轉(zhuǎn)換工作。( 6 )運行你所設(shè)計的程序,假定空閑塊鏈接的初始狀態(tài)如提示(2 ) ,現(xiàn)先分配4塊,再依歸還第2 塊和第 6 塊。把執(zhí)行后分配到的塊號依次顯示或打印出來,且顯示或打印空閑塊組的情況。在上次執(zhí)行的基礎(chǔ)上繼續(xù)分配3 塊,然后歸還第1 塊,再申請5 塊,顯示或打印依次分配到的塊號及空閑塊組情況。#includeusing namespace std;void init(int disk88)int cyd,tra,sor;char select=Y;cout開始初始化vvendl;while(select=y|select=,Y,)(COUtVV”請輸入柱面號:;cincyd;COUtVV”請輸入磁道號:; cintra;COUtVV”請輸入物理地址號:;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 朝陽2024年遼寧朝陽師范學(xué)院招聘37人筆試歷年參考題庫附帶答案詳解
- 攀枝花2025年四川攀枝花市民政局直屬事業(yè)單位考調(diào)4人筆試歷年參考題庫附帶答案詳解
- 2025年中國沖天爐數(shù)字式綜合檢測儀市場調(diào)查研究報告
- 2025至2031年中國高壓均質(zhì)機(jī)行業(yè)投資前景及策略咨詢研究報告
- 2025至2031年中國耐低溫型不干膠行業(yè)投資前景及策略咨詢研究報告
- 2025至2031年中國直流脈寬調(diào)速器行業(yè)投資前景及策略咨詢研究報告
- 2025年活門項目可行性研究報告
- 2025至2031年中國易洗除漬素行業(yè)投資前景及策略咨詢研究報告
- 2025至2031年中國嬰兒玩具拉琴行業(yè)投資前景及策略咨詢研究報告
- 2025年女裝牛仔中褲項目可行性研究報告
- 北京市北師大附中2024-2025學(xué)年高一上學(xué)期期末考試數(shù)學(xué)試卷(含答案)
- 駝鳥養(yǎng)殖生態(tài)旅游項目策劃書方案模版(4篇)
- 煤礦重大災(zāi)害治理中長期規(guī)劃(防治煤塵爆炸、火災(zāi)事故)
- 安全風(fēng)險隱患舉報獎勵制度
- 教學(xué)成果獎培育工作方案
- 廈門三固科技有限公司貨幣資金管理優(yōu)化設(shè)計
- 北京卷2025屆高考語文倒計時模擬卷含解析
- 2023學(xué)年廣東省深圳實驗學(xué)校初中部九年級(下)開學(xué)語文試卷
- 貫徹《法治思想學(xué)習(xí)綱要》一書專題課件
- (完整版)施工組織設(shè)計范本
- 二年級口算題大全1000道(打印版)
評論
0/150
提交評論