




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、景德鎮(zhèn)陶瓷學(xué)院計算機操作系統(tǒng)課程設(shè)計學(xué)院:信息工程學(xué)院專業(yè):計算機科學(xué)與技術(shù)班級:13級二班學(xué)號:201310510112姓名:張旸任務(wù)一、進程創(chuàng)建、控制與撤消一、實驗?zāi)康模和ㄟ^進程的創(chuàng)建和控制的設(shè)計來達到如下目的:1、加深對進程概念的理解,明確進程和程序的區(qū)別2、進一步認(rèn)識并發(fā)執(zhí)行的概念,區(qū)別順序執(zhí)行和并發(fā)執(zhí)行3、分析進程爭用臨界資源的現(xiàn)象,學(xué)習(xí)解決進程互斥的方法二、實驗內(nèi)容:在WINDOWS環(huán)境下模擬實驗:1、編寫一程序,來模擬進程的創(chuàng)建和撤消,要求通過終端鍵盤輸入三、四作業(yè)的名稱、大小、優(yōu)先級等。系統(tǒng)為它創(chuàng)建進程,并把進程控制塊PCB的內(nèi)容送到終端顯示器上輸出2、同時模擬內(nèi)存空間為作業(yè)分
2、配內(nèi)存空間,并把結(jié)果用圖形形象地表示出來,同樣通過終端輸出3、按進程的優(yōu)先級的順序撤消進程,同時通過終端顯示PCB的撤消過程和內(nèi)存的釋放過程三、結(jié)構(gòu)框圖:開始主函數(shù)main ()查看進程viewrun()撤銷進程kill()創(chuàng)建進程create()替換進程huanchu()結(jié)束退出exit(0)四、實驗代碼:#include <conio.h>#include <stdio.h>#include <stdlib.h>struct jincheng int pid;int youxian;int daxiao;int msg;int live;struct j
3、incheng neicun20,waicun;int shumu=1;create()if(shumu>=20)printf("n 內(nèi)存已滿,請先結(jié)束或換出進程n");elseprintf("n 請創(chuàng)建第%d個進程",shumu);printf("n 請輸入新進程的 pidn"); scanf("%d",&neicunshumu.pid);printf("n 請輸入新的進程的優(yōu)先級n"); scanf("%d",&neicunshumu.youxian
4、);printf("n 請輸入新的進程的大小n"); scanf("%d",&neicunshumu.daxiao);printf("n 請輸入新的進程的消息n");scanf("%d",&neicunshumu.msg); neicunshumu.live=1; shumu+;return neicunshumu-1.live;void viewrun()int vpid;printf("n 請輸入想顯示第幾個創(chuàng)建的進程n"); scanf("%d",&am
5、p;vpid);if(vpid>0&&vpid<=20&&neicunvpid.live=1)printf("n進程的pid是:%dn",neicunvpid.pid);printf("n進程的優(yōu)先級是:%dn",neicunvpid.youxian);printf("n進程的大小是:%dn",neicunvpid.daxiao);printf("n進程的消息是:%dn",neicunvpid.msg);else printf("n 所查看運行進程不存在n&qu
6、ot;);printf("請按回車退出查看n");vpid=getch(); void huanchu() int pid1,pid2; char c; printf("n 請輸入第一個替換進程是第幾個創(chuàng)建的n"); scanf("%d",&pid1); printf("n 請輸入第二個替換進程是第幾個創(chuàng)建的n"); scanf("%d",&pid2); if(pid1>0&&pid1<=20&&neicunpid1.live=1) i
7、f(neicunpid1.youxian>neicunpid2.youxian) waicun.pid=neicunpid1.pid;waicun.youxian=neicunpid1.youxian;waicun.daxiao=neicunpid1.daxiao;waicun.msg=neicunpid1.msg;neicunpid1.pid=neicunpid2.pid;neicunpid1.youxian=neicunpid2.youxian;neicunpid1.daxiao=neicunpid2.daxiao;neicunpid1.msg=neicunpid2.msg;neic
8、unpid2.pid=waicun.pid; neicunpid2.youxian=waicun.youxian; neicunpid2.daxiao=waicun.daxiao; neicunpid2.msg=waicun.msg;printf("n 替換完成n");printf("n 被替換進程的pid是:%dn",waicun.pid);printf("n 被替換進程的youxian是:%dn",waicun.youxian);printf("n 被替換進程的daxiao是:%dn",waicun.daxia
9、o);printf("n 被替換進程的msg是:%dn",waicun.msg);elseprintf("n進程優(yōu)先級不夠大");elseprintf("所查看運行進程不存在"); printf("請按回車退出換出進程n");c=getche();void kill()int kpid; printf("n 請輸入要撤銷第幾個創(chuàng)建的進程n"); scanf("%d",&kpid);if(kpid>0&&kpid<20&&ne
10、icunkpid.live=1)neicunkpid.live=0;printf("n 已撤銷第%d個創(chuàng)建的進程",kpid);else printf("n 所查看運行進程不存在n");printf("請按回車退出查看n");kpid=getch();void main ()int n,m,i;char a;n=1;while(n=1)system("cls");printf("n*"); printf("n* 進程演示系統(tǒng) *");printf("n*"
11、);printf("n 1.創(chuàng)建新的進程 2.查看運行進程 ");printf("n 3.換出某個進程 4.殺死運行進程 "); printf("n 5.退出 "); printf("n*");printf("n請選擇(15)"); a=getch();switch(a) case'1':create();break;case'2':viewrun();break;case'3':huanchu();break;case'4':ki
12、ll();break;case'5':exit(0);default:n=0; 五:實驗結(jié)果:任務(wù)二、單處理機系統(tǒng)的進程調(diào)度一、實驗?zāi)康模?、加深對進程概念的理解,明確進程和程序的區(qū)別2、深入了解系統(tǒng)如何組織進程,創(chuàng)建進程3、進一步認(rèn)識如何實現(xiàn)處理機調(diào)度二、實驗內(nèi)容:從下面四個調(diào)度算法中,選擇一個調(diào)度算法來實現(xiàn)進程調(diào)度:1、先來先服務(wù)調(diào)度算法2、優(yōu)先數(shù)調(diào)度算法3、時間片輪法調(diào)度算法4、多級反饋隊列輪轉(zhuǎn)調(diào)度算法三、結(jié)構(gòu)框圖:While循環(huán)遍歷就緒隊列調(diào)用check()函數(shù),打印所有隊列將就緒隊列中的首進程由“就緒狀態(tài)”轉(zhuǎn)為執(zhí)行狀態(tài)調(diào)用running()函數(shù)調(diào)用destroy()函
13、數(shù),釋放進程調(diào)用input()函數(shù);用戶輸入測試數(shù)據(jù)輸入的同時建立好就緒序列初始化運行時間是否等于服務(wù)開始結(jié)束四、實驗代碼:#include "stdio.h" #include <stdlib.h> #include <conio.h> #define getpch(type) (type*)malloc(sizeof(type) #define NULL 0 struct pcb /* 定義進程控制塊PCB */ char name10; char state; int super; int ntime; int rtime; struct pc
14、b* link; *ready=NULL,*p; typedef struct pcb PCB; void sort() /* 建立對進程進行優(yōu)先級排列函數(shù)*/ PCB *first, *second; int insert=0; if(ready=NULL)|(p->super)>(ready->super) /*優(yōu)先級最大者,插入隊首*/ p->link=ready; ready=p; else /* 進程比較優(yōu)先級,插入適當(dāng)?shù)奈恢弥?/ first=ready; second=first->link; while(second!=NULL) if(p->
15、;super)>(second->super) /*若插入進程比當(dāng)前進程優(yōu)先數(shù)大,*/ /*插入到當(dāng)前進程前面*/ p->link=second; first->link=p; second=NULL; insert=1; else /* 插入進程優(yōu)先數(shù)最低,則插入到隊尾*/ first=first->link; second=second->link; if(insert=0) first->link=p; void input() /* 建立進程控制塊函數(shù)*/ int i,num; printf("n請輸入進程數(shù)量:"); sc
16、anf("%d",&num); for(i=1;i<=num;i+) printf("n 進程號No.%d:n",i); p=getpch(PCB); printf("n 輸入進程名:"); scanf("%s",p->name); printf("n 輸入進程優(yōu)先數(shù):"); scanf("%d",&p->super); printf("n 輸入進程運行時間:"); scanf("%d",&p-
17、>ntime); printf("n"); p->rtime=0;p->state='w' p->link=NULL; sort(); /* 調(diào)用sort函數(shù)*/ int space() int l=0; PCB* pr=ready; while(pr!=NULL) l+; pr=pr->link; return(l); void show()printf("nqnametstatetsupertndtimetruntimen"); void disp(PCB * pr) /*建立進程顯示函數(shù),用于顯示當(dāng)前進
18、程*/ printf(" %st",pr->name); printf(" %ct",pr->state); printf(" %dt",pr->super); printf(" %dt",pr->ntime); printf(" %dt",pr->rtime); printf("n"); void check() /* 建立進程查看函數(shù) */ PCB* pr; printf("n*當(dāng)前正在運行的進程是:%s",p->n
19、ame); /*顯示當(dāng)前運行進程*/ show();disp(p); pr=ready; if(pr=NULL)printf("n*當(dāng)前就緒隊列為空!");else printf("n*當(dāng)前就緒隊列狀態(tài)為:"); /*顯示就緒隊列狀態(tài)*/show();while(pr!=NULL) disp(pr); pr=pr->link; void destroy() /*建立進程撤消函數(shù)(進程運行結(jié)束,撤消進程)*/ printf("n 進程%s已完成.n",p->name); free(p); void running() /*
20、建立進程就緒函數(shù)(進程運行時間到,置就緒狀態(tài)*/ (p->rtime)+; if(p->rtime=p->ntime) destroy(); /* 調(diào)用destroy函數(shù)*/ else (p->super)-; p->state='w' sort(); /*調(diào)用sort函數(shù)*/ void main() /*主函數(shù)*/ int len,h=0; char ch; input(); len=space(); while(len!=0)&&(ready!=NULL) ch=getchar(); h+; printf("n 當(dāng)前運
21、行次數(shù)為:%d n",h); p=ready; ready=p->link; p->link=NULL; p->state='R' check(); running(); printf("n 按任一鍵繼續(xù)."); ch=getchar(); printf("nn 進程已經(jīng)完成.n"); ch=getchar(); 五:實驗結(jié)果:任務(wù)三、基本存儲器管理一、實驗?zāi)康模阂粋€好的計算機系統(tǒng)不僅要有一個足夠容量的、存取速度高的、穩(wěn)定可靠的主存儲器,而且要能合理地分配和使用這些存儲空間。當(dāng)用戶提出申請存儲器空間時,存儲管理
22、必須根據(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、在分頁式管理方式下,采用位示圖來表示主存的分配情況和回收情況開始j:=0j:=j+1查看空閑區(qū)說明表的第j個登記欄狀態(tài)為“未分配”嗎?申請xk主存區(qū)輸出分配情況長
23、度:=長度-xk;起址:=起址+xk;置狀態(tài)為“空表目”長度xk嗎?j為空閑區(qū)說明表的最末一欄嗎?結(jié)束輸出作業(yè)不能裝入三、結(jié)構(gòu)框圖:四、實驗代碼:#include<stdio.h>#include<stdlib.h>struct linkkint size;int addr;struct linkk *next;struct jobtabint jno;int size;int addr;int flag;struct linkk *PL,*p,*q,*p1;struct jobtab tab20;int l,m,n,t,addr,length;void printli
24、nk()if (PL!=NULL)printf("n 進程內(nèi)存大小 剩余內(nèi)存n");printf("-n");q=PL;while(q!=NULL)printf(" %d %dn",q->addr,q->size);q=q->next; printf("-n");return;void printtab()int i; int flag=0;for (i=0;i<20&&flag=0;i+)if (tabi.flag=1)flag=1;if (flag=0)printf(&q
25、uot;n 無進程!");return;printf("n 進程編號 進程起始地址 進程內(nèi)存大小n");printf("-n");for (i=0;i<20;i+)if (tabi.flag=1)printf(" %d %d %dn",i,tabi.addr,tabi.size);printf("-n");return;void allocm()printf("n 輸入進程編號:");scanf("%d",&n);printf("n 輸入進程
26、內(nèi)存大小:");scanf("%d",&l);if (tabn.flag=1)printf("n 該進程被創(chuàng)建!n");return;elsetabn.flag=1;tabn.size=l;q=PL; p=PL;while (q!=NULL)if (q->size=l)tabn.addr=q->addr;p1=q;if (p1=PL) PL=q->next;else p->next=q->next;free(p1);return;if (q->size>l)tabn.addr=q->add
27、r;q->size=q->size-l; q->addr=q->addr+l;return;p=q; q=q->next;tabn.flag=0;printf("n 沒有內(nèi)存剩余!n");return;void freem()printf("n 輸入進程編號:"); scanf("%d",&n); if(tabn.flag=0)printf("n 不是該進程!"); return; addr=tabn.addr; length=tabn.size; tabn.flag=0; q
28、=PL;if (q=NULL)|(addr+length<q->addr)p1=(struct linkk *)malloc(sizeof(struct linkk); p1->size=length; p1->addr=addr; p1->next=q; PL=p1;return;if(addr+length=q->addr)q->addr=addr; q->size=q->size+length; return;p=q; q=q->next;while (q!=NULL)if(p->addr+p->size=addr)
29、p->size=p->size+length;if (addr+length=q->addr)p->size=p->size+q->size;p1=q; p->next=q->next;free(p1);return;if(addr+length=q->addr)q->addr=addr; q->size=q->size+length; return; if(addr+length<q->addr)p1=(struct linkk *)malloc(sizeof(struct linkk); p1->si
30、ze=length; p1->addr=addr; p1->next=q; p->next=p1; return;p=q; q=q->next; if(p->addr+p->size=addr)p->size=p->size+length; return; p1=(struct linkk *)malloc(sizeof(struct linkk); p1->addr=addr; p1->size=length; p1->next=NULL; p1->next=p1; return; main()PL=(struct li
31、nkk *)malloc(sizeof(struct linkk); PL->addr=0; PL->next=NULL; printf("n輸入內(nèi)存大小:"); scanf("%d",&n); PL->size=n; for(int i=0;i<20;i+)tabi.jno=i; tabi.flag=0; t=0; doprintf("n-n"); printf(" 1-分配內(nèi)存 2-釋放內(nèi)存n"); printf(" 3-鏈接進程號 4-輸出_TAB n");
32、 printf(" 5-Quitn"); printf("n-n"); printf(" Select bb"); scanf("%d",&m); switch(m)case 1: allocm();break;case 2: freem();break;case 3: printlink();break;case 4: printtab();break;case 5: t=1;while (!t);五:實驗結(jié)果:任務(wù)四、請求分頁存儲管理(虛擬存儲)一、實驗?zāi)康模和ㄟ^請求分頁存儲管理的設(shè)計,讓學(xué)生了解虛擬存
33、儲器的概念和實現(xiàn)方法。進行運行時不需要將所有的頁面都調(diào)入內(nèi)存,只需將部分調(diào)入內(nèi)存,即可運行,在運行的過程中若要訪問的頁面不在內(nèi)存時,則需求有請求調(diào)入的功能將其調(diào)入。假如此時若內(nèi)存沒有空白物理塊,則通過頁面置換的功能將一個老的不用的頁面淘汰出來,其中淘汰的算法有多種二、實驗內(nèi)容:模擬仿真請求分頁調(diào)度算法,其中淘汰的算法可選下列其一1、先進先出算法2、最近最久算法3、CLOCK算法三、結(jié)構(gòu)框圖:結(jié)束開始主函數(shù)main()初始化頁框Init()LRU算法LRU()FIFO算法FIFO()輸出OutPut()四、實驗代碼:#include<iostream>#include<time
34、.h>using namespace std;const int MaxNum=320;const int M=5;int PageOrderMaxNum;int SimulateMaxNumM;int PageCountM,LackNum;float PageRate;int PageCount132;bool IsExit(int i)bool f=false;for(int j=0;j<M;j+)if(Simulatei-1j=PageOrderi)f=true;return f;int IsExitLRU(int i)int f=-1;for(int j=0;j<M;
35、j+)if(Simulatei-1j=PageOrderi)f=j;return f;int Compare() int p,q;p=PageCount0;q=0;for(int i=1;i<M;i+)if(p<PageCounti)p=PageCounti;q=i;return q;void Init() for(int k=0;k<MaxNum;k+)int n=rand()%320;PageOrderk=n/10;for(int i=0;i<MaxNum;i+)for(int j=0;j<M;j+)Simulateij=-1;for(int q=0;q<
36、;M;q+)PageCountq=0;void OutPut()int i,j;cout<<"頁面訪問序列:"<<endl;for(j=0;j<MaxNum;j+)cout<<PageOrderj<<" "cout<<endl;cout<<"頁面訪問過程(只顯示前10個):"<<endl;for(i=0;i<10;i+)for(j=0;j<M;j+)if(Simulateij=-1)cout<<" "e
37、lsecout<<Simulateij<<" "cout<<endl;cout<<"缺頁數(shù)= "<<LackNum<<endl;cout<<"命中率= "<<PageRate<<endl;cout<<"-"<<endl; void FIFO()int j,x=0,y=0;LackNum=0,Init();for(j=0;j<M;j+)for(int k=0;k<=j;k+)
38、if(j=k)Simulatejk=PageOrderj;elseSimulatejk=Simulatej-1k; ;for(x=M;x<MaxNum;x+)for(int t=0;t<M;t+)Simulatext=Simulatex-1t;if(!IsExit(x)LackNum+;Simulatexy%M=PageOrderx;y+;PageRate=1-(float)LackNum/(float)MaxNum);OutPut();void LRU()int j,x=0,y=0;LackNum=0,Init();for(j=0;j<M;j+)for(int k=0;k&
39、lt;=j;k+)PageCountk+;if(j=k)Simulatejk=PageOrderj;elseSimulatejk=Simulatej-1k; LackNum+;for(x=M;x<MaxNum;x+)for(int t=0;t<M;t+)Simulatext=Simulatex-1t;int p=IsExitLRU(x);if(p=-1)int k;k=Compare();for(int w=0;w<M;w+)if(w!=k)PageCountw+;elsePageCountk=1;Simulatexk=PageOrderx;LackNum+;elsefor(
40、int w=0;w<M;w+)if(w!=p)PageCountw+;elsePageCountp=1;PageRate=1-(float)LackNum/(float)MaxNum);OutPut();void YourChoice(int choice)switch(choice)case 1:cout<<"-"<<endl; cout<<"FIFO算法結(jié)果如下:"<<endl;FIFO();break;case 2:cout<<"-"<<endl; c
41、out<<"LRU算法結(jié)果如下:"<<endl;LRU();break;case 5:break;default:cout<<"重新選擇算法:1-FIFO 2-LRU 5-退出 "<<endl; cin>>choice;YourChoice(choice);void main()int choice,i=1;while(i)cout<<"請選擇算法:1-FIFO 2-LRU 5-退出 "<<endl; cin>>choice;if(choi
42、ce=5)i=0;elseYourChoice(choice);五:實驗結(jié)果:任務(wù)五、死鎖的避免一、實驗?zāi)康模涸诙嗟莱绦蛳到y(tǒng)中,多個進程的并發(fā)執(zhí)行來改善系統(tǒng)的資源利用率,提高系統(tǒng)的吞吐量,但可能發(fā)生一種危險死鎖。所謂死鎖(Deadlock),是指多個進程在運行過程中因爭奪資源而造成的一種僵局(DeadlyEmbrace),當(dāng)進程處于這種狀態(tài)時,若無外力作用,他們都無法在向前推進我們可以在分配資源時加上限制條件就可以預(yù)防死鎖,但是,在每一種預(yù)防死鎖的方法之中,都施加了較強的限制條件;而在避免死鎖的方法中,所施加的限制條件較弱,有可能獲得令人滿意的系統(tǒng)性能二、實驗內(nèi)容:利用銀行家算法來避免死鎖的發(fā)
43、生開始計算剩余資源量顯示信息show()初始化Init()主函數(shù)main()結(jié)束已分配資源Allocation判斷是否安全Safe程序所需濟源Need三、結(jié)構(gòu)框圖:四、實驗代碼:#include<iostream>#include<cstdlib>#include<string>using namespace std;int Sign100;/標(biāo)記數(shù)組int Progress100;/進程執(zhí)行順序標(biāo)記數(shù)組string Number100;/進程號class BankerArithmeticpublic:BankerArithmetic(int a,int b
44、); /構(gòu)造函數(shù)int Safe(int grac);/判斷是否安全void Show();/顯示相關(guān)信息void Bank();/計算剩余資源量BankerArithmetic();/析構(gòu)函數(shù)private:BankerArithmetic();void Init(int a,int b);/初始化int ID;/記錄成功申請資源的進程號int n; /包含的進程數(shù)int m; /資源種類數(shù)int *Available;/可提供的資源總數(shù)int * Allocation;/以分配的資源int * Need;/仍需要的資源int *Left;/剩余的資源;BankerArithmetic:Ba
45、nkerArithmetic(int a,int b):n(a),m(b)Init(n,m);BankerArithmetic:BankerArithmetic()int i;deleteAvailable;deleteLeft;for(i=0;i<n;i+)deleteAllocationi;deleteAllocation;for(i=0;i<n;i+)deleteNeedi;deleteNeed;void BankerArithmetic:Init(int a,int b)int i,j;for(i=0;i<100;i+)Signi=-1;Available=new i
46、ntb;/Availablede的申請Left=new intb;/Left的申請Allocation=new int*a;/Allocation的申請for(i=0;i<a;i+)Allocationi=new intb;Need=new int*a;/Need的申請for(i=0;i<a;i+)Needi=new intb;cout<<"請輸入可用資源Available:"<<endl;for(i=0;i<b;i+)cin>>Availablei;cout<<"請輸入進程號:"<
47、<endl;for(i=0;i<a;i+)cin>>Numberi;cout<<"請輸入分配資源矩陣Allocation:"<<'('<<a<<','<<b<<')'<<endl; for(i=0;i<a;i+)for(j=0;j<b;j+)cin>>Allocationij;cout<<"請輸入仍需要資源矩陣Need:"<<'('<
48、;<a<<','<<b<<')'<<endl; for(i=0;i<a;i+)for(j=0;j<b;j+)cin>>Needij;/計算剩余的資源for(i=0;i<m;i+)Lefti=Availablei;j=0;while(j<m)for(i=0;i<n;i+)Leftj-=Allocationij;j+;int BankerArithmetic:Safe(int grac) int i,j,temp;for(i=0;i<n;i+)if(Signi!=1
49、)temp=1;for(j=0;j<m;j+)if(Leftj>=Needij)temp*=1;elsetemp*=0;if(temp=1)break;ID=i;Signi=1;Progressgrac=ID;if(temp)return ID;elsereturn -1;void BankerArithmetic:Bank()for(int i=0;i<m;i+)Lefti=Lefti+AllocationIDi; void BankerArithmetic:Show()int i,j;cout<<"進程 Allocation Need n"
50、for(i=0;i<n;i+)if(Signi!=1)cout<<Numberi<<" "for(j=0;j<m;j+)cout<<" "<<Allocationij;cout<<" "for(j=0;j<m;j+)cout<<" "<<Needij;cout<<endl;cout<<endl;for(i=0;i<m;i+)cout<<Lefti<<"
51、 "cout<<endl;int main()int process,source,result,i=0,sum=1;char ans1,ans2;cout<<"請輸入包含的進程數(shù):"cin>>process;cout<<"請輸入資源種類數(shù):"cin>>source;BankerArithmetic banker(process,source);while(i<process)cout<<"你是否想查詢還未處理進程的詳細(xì)信息(y/n):" cin&
52、gt;>ans1;if(ans1='y'|ans1='Y')banker.Show();result=banker.Safe(i);if(result>=0)Progressi=result;elsesum=0;cout<<"處于不安全狀態(tài)!程序?qū)⑼顺觯" exit(1);cout<<"按空格鍵程序執(zhí)行一次"<<endl; while(cin.get(ans2)&&ans2='n')banker.Bank();i+;if(sum=1)cout
53、<<"進程執(zhí)行的順序如下:"for(i=0;i<process-1;i+)cout<<NumberProgressi<<" -> " cout<<NumberProgressprocess-1;return 0;五:實驗結(jié)果:任務(wù)六、磁盤空間的分配與回收一、實驗?zāi)康模捍疟P初始化時把磁盤存儲空間分成許多塊(扇區(qū)),這些空間可以被多個用戶共享。用戶作業(yè)在執(zhí)行期間常常要在磁盤上建立文件或已經(jīng)建立在磁盤上的文件刪去,這就涉及到磁盤存儲空間的分配和回收。一個文件存放到磁盤上,可以組織成順序文件(連續(xù)文件)
54、、鏈接文件(串聯(lián)文件)、索引文件等,因此,磁盤存儲空間的分配有兩種方式,一種是分配連續(xù)的存儲空間,另一種是可以分配不連續(xù)的存儲空間。怎樣有效地管理磁盤存儲空間是操作系統(tǒng)應(yīng)解決的一個重要問題,通過本實驗使學(xué)生掌握磁盤存儲空間的分配和收回算法二、實驗內(nèi)容:模擬磁盤空閑空間的表示方法,以及模擬實現(xiàn)磁盤空間的分配和回收。從下題目中選擇一題來實現(xiàn)設(shè)備的管理:1、連續(xù)的磁盤存儲空間的分配和回收2、用位示圖管理磁盤存儲空間3、模擬UNIX系統(tǒng)的空閑塊組鏈接法,實現(xiàn)磁盤存儲空間的管理開始把As塊內(nèi)容復(fù)制到專用塊A0:=Asi:=MA0把專用塊內(nèi)容自制到主存MA:=A0MA01?MA0=1?MA1=0?S:=MAi空閑塊數(shù)減1MA0:=MA0-1顯示分配的塊號sS:=MAi顯示:系統(tǒng)無空閑塊結(jié)束三、結(jié)構(gòu)框圖:分配框圖 否 是 是 否 否 是開始J:=歸還塊號MA0
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 煤礦后勤服務(wù)合同協(xié)議書
- 保潔員工合同協(xié)議書
- 餐桌合作協(xié)議書合同模板
- 衡山文化城策劃書
- 木飾面安裝合同協(xié)議書
- 安全施肥課件視頻
- 家政服務(wù)線上服務(wù)平臺運營規(guī)劃及策略設(shè)計
- 橋梁護軌扣件項目可行性研究報告評審方案設(shè)計2025年標(biāo)準(zhǔn)案例范文
- 2025年摔跤場地罩行業(yè)深度研究分析報告
- 中國蛭石防火涂料項目商業(yè)計劃書
- 餐飲服務(wù)食品安全監(jiān)督量化分級管理制度
- 2023年中國財稅服務(wù)行業(yè)市場全景評估及未來投資趨勢預(yù)測
- 醫(yī)療衛(wèi)生事業(yè)單位面試題型及答題技巧
- 腫瘤科運用PDCA循環(huán)提高疼痛評估的規(guī)范率品管圈成果匯報
- 管道安全檢查表
- 心理劇比賽點評金句
- 校園網(wǎng)站的設(shè)計與實現(xiàn)-畢業(yè)論文
- 石油石化職業(yè)技能鑒定操作試題集-輸氣工中級
- 辦公樓工程臨時用電專項施工方案
- GB/T 18705-2002裝飾用焊接不銹鋼管
- 課件 京劇傳統(tǒng)戲 課件-2022-2023學(xué)年高中音樂人音版(2019)必修音樂鑒賞
評論
0/150
提交評論