操作系統(tǒng)實(shí)驗(yàn) 設(shè)備管理_第1頁(yè)
操作系統(tǒng)實(shí)驗(yàn) 設(shè)備管理_第2頁(yè)
操作系統(tǒng)實(shí)驗(yàn) 設(shè)備管理_第3頁(yè)
操作系統(tǒng)實(shí)驗(yàn) 設(shè)備管理_第4頁(yè)
操作系統(tǒng)實(shí)驗(yàn) 設(shè)備管理_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 操作系統(tǒng)實(shí)驗(yàn)名 稱 實(shí)驗(yàn)六 設(shè)備管理 姓 名 專 業(yè) 學(xué) 號(hào) 日 期 2015年12月01日 指導(dǎo)老師 1、 實(shí)驗(yàn)?zāi)康?. 理解設(shè)備管理的概念和任務(wù)。2. 掌握獨(dú)占設(shè)備的分配、回收等主要算法的原理并編程實(shí)現(xiàn)。2、 實(shí)驗(yàn)內(nèi)容與要求1. 在Windows系統(tǒng)中,編寫(xiě)程序?qū)崿F(xiàn)對(duì)獨(dú)占設(shè)備的分配和回收的模擬,該程序中包括:建立設(shè)備類表和設(shè)備表、分配設(shè)備和回收設(shè)備的函數(shù)。3、 實(shí)驗(yàn)原理1. 獨(dú)占設(shè)備的分配、回收等主要算法的原理。為了提高操作系統(tǒng)的可適應(yīng)性和可擴(kuò)展性,現(xiàn)代操作系統(tǒng)中都毫無(wú)例外地實(shí)現(xiàn)了設(shè)備獨(dú)立性,又叫做設(shè)備無(wú)關(guān)性。設(shè)備獨(dú)立性的含義是:應(yīng)用程序獨(dú)立于具體使用的物理設(shè)備。為了實(shí)現(xiàn)獨(dú)占設(shè)備的分配,

2、系統(tǒng)設(shè)置數(shù)據(jù)表格的方式也不相同,在實(shí)驗(yàn)中只要設(shè)計(jì)合理即可。這里僅僅是一種方案,采用設(shè)備類表和設(shè)備表。(1)數(shù)據(jù)結(jié)構(gòu)設(shè)備物理名是否分配占用進(jìn)程001未分配002已分配J1003未分配操作系統(tǒng)設(shè)置“設(shè)備分配表”,用來(lái)記錄計(jì)算機(jī)系統(tǒng)所配置的獨(dú)占設(shè)備類型、臺(tái)數(shù)以及分配情況。設(shè)備分配表可由“設(shè)備類表”和“設(shè)備表”兩部分組成,如下圖:設(shè)備類總臺(tái)數(shù)空閑臺(tái)數(shù)設(shè)備表始址輸入機(jī)21打印機(jī)11設(shè)備類表 設(shè)備表控制器標(biāo)識(shí)符控制器狀態(tài):忙、閑與控制器相連的通道表指針控制器隊(duì)列的隊(duì)首指針控制器隊(duì)列的隊(duì)首指針通道標(biāo)識(shí)符通道狀態(tài):忙、閑與通道相連的控制器表首址通道隊(duì)列的隊(duì)首指針通道隊(duì)列的隊(duì)首指針控制器表 通道表設(shè)備隊(duì)列隊(duì)首指

3、針。凡因請(qǐng)求本設(shè)備而未得到滿足的進(jìn)程,其PCB都應(yīng)按照一定的策略排成一個(gè)隊(duì)列,稱該隊(duì)列為設(shè)備請(qǐng)求隊(duì)列或簡(jiǎn)稱設(shè)備隊(duì)列。其隊(duì)首指針指向隊(duì)首PCB。在有的系統(tǒng)中還設(shè)置了隊(duì)尾指針。設(shè)備狀態(tài)。當(dāng)設(shè)備自身正處于使用狀態(tài)時(shí),應(yīng)將設(shè)備的忙/閑標(biāo)志置“1”。若與該設(shè)備相連接的控制器或通道正忙,也不能啟動(dòng)該設(shè)備,此時(shí)則應(yīng)將設(shè)備的等待標(biāo)志置“1”。與設(shè)備連接的控制器表指針。該指針指向該設(shè)備所連接的控制器的控制表。在設(shè)備到主機(jī)之間具有多條通路的情況下,一個(gè)設(shè)備將與多個(gè)控制器相連接。此時(shí),在DCT中還應(yīng)設(shè)置多個(gè)控制器表指針。(2)設(shè)備分配1)當(dāng)進(jìn)程申請(qǐng)某類設(shè)備時(shí),系統(tǒng)先查“設(shè)備類表”。2)如果該類設(shè)備的現(xiàn)存臺(tái)數(shù)可以滿足

4、申請(qǐng)要求,則從該類設(shè)備的“設(shè)備表”始址開(kāi)始依次查該類設(shè)備在設(shè)備表中的登記項(xiàng),找出“未分配”的設(shè)備分配給進(jìn)程。3)分配后要修改設(shè)備類表中的現(xiàn)存臺(tái)數(shù),把分配給進(jìn)程的設(shè)備標(biāo)志改為“已分配”且填上占用設(shè)備的進(jìn)程名。4)然后,把設(shè)備的絕對(duì)號(hào)與相對(duì)號(hào)的對(duì)應(yīng)關(guān)系通知用戶,以便用戶在分配到的設(shè)備上裝上存儲(chǔ)介質(zhì)。(3)設(shè)備回收當(dāng)進(jìn)程執(zhí)行結(jié)束撤離時(shí)應(yīng)歸還所占設(shè)備,系統(tǒng)根據(jù)進(jìn)程名查設(shè)備表,找出進(jìn)程占用設(shè)備的登記欄,把標(biāo)志修改為“未分配”,清除進(jìn)程名。同時(shí)把回收的設(shè)備臺(tái)數(shù)加到設(shè)備類表中的現(xiàn)存臺(tái)數(shù)中。設(shè)備分配程序的改進(jìn)增加設(shè)備的獨(dú)立性:為了獲得設(shè)備的獨(dú)立性,進(jìn)程應(yīng)使用邏輯設(shè)備名I/O。這樣,系統(tǒng)首先從SDT中找出第一個(gè)

5、該類設(shè)備的DCT。若該設(shè)備忙,又查找第二個(gè)該類設(shè)備的DCT,僅當(dāng)所有該類設(shè)備都忙時(shí),才把進(jìn)程掛在該類設(shè)備的等待隊(duì)列上,而只要有一個(gè)該類設(shè)備可用,系統(tǒng)便進(jìn)一歩計(jì)算分配該設(shè)備的安全性。4、 程序流程圖開(kāi)始結(jié)束輸入選擇指令A(yù)輸入設(shè)備名稱輸入設(shè)備類型是否添加控制器輸入控制器名稱輸入選擇的通道顯示所有設(shè)備信息添加成功NY設(shè)備是否存在NY刪除設(shè)備開(kāi)始同時(shí)刪除控制器輸入選擇指令D輸入要?jiǎng)h除的設(shè)備名稱是否刪除控制器結(jié)束刪除控制器成功YN設(shè)備獨(dú)立性結(jié)束開(kāi)始輸入選擇指令I(lǐng)輸入設(shè)備名稱設(shè)置成功申請(qǐng)?jiān)O(shè)備開(kāi)始輸入申請(qǐng)的進(jìn)程判斷通道,控制器是否為忙輸入選擇指令S輸入申請(qǐng)的設(shè)備名稱將設(shè)備掛到等待隊(duì)列申請(qǐng)?jiān)O(shè)備成功結(jié)束YN開(kāi)始

6、輸入選擇指令H判斷設(shè)備是否存在設(shè)備不存在判斷設(shè)備是否需要回收設(shè)備不需要回收判斷通道等待隊(duì)列空不空輸入設(shè)備名稱設(shè)備回收成功結(jié)束五、實(shí)驗(yàn)程序#include<iostream>using namespace std;/數(shù)據(jù)結(jié)構(gòu)typedef struct nodechar name10;char devname10;struct node *next;PCB;/進(jìn)程PCB * run;/執(zhí)行隊(duì)列/typedef struct Nodechar identify10;/標(biāo)識(shí)int state;/設(shè)備狀態(tài)PCB *blocking;/阻塞隊(duì)列指針CHCT;/通道控制表CHCT * CH1,

7、 * CH2;/設(shè)置兩個(gè)通道為ch1,ch2/typedef struct NOdechar identify10;/標(biāo)識(shí)int state;/設(shè)備狀態(tài)CHCT * chct;/CHCTPCB *blocking;/阻塞隊(duì)列指針struct NOde *next;COCT;/控制器控制表COCT * cohead;typedef struct NODechar identify10;/標(biāo)識(shí)char type;/設(shè)備類型int state;/設(shè)備狀態(tài)int times;/重復(fù)執(zhí)行次數(shù)PCB *blocking;/阻塞隊(duì)列指針COCT * coct;/COCTDCT;/設(shè)備控制表typedef s

8、truct NODEchar type;/類別char identify10;/標(biāo)識(shí)DCT * dct;/DCT設(shè)備控制表/驅(qū)動(dòng)入口地址struct NODE *next;SDT;/系統(tǒng)設(shè)備表SDT * head;SDT * checkdel;void Init()PCB * ch1block,* ch2block,* co1block,* co2block,* co3block,* d1block,* d2block,* d3block,* d4block;/進(jìn)程控制塊COCT * CO1,* CO2,* CO3;DCT *d1,*d2,*d3,*d4;SDT *s1,*s2,*s3,*s4

9、;/=run=(PCB *)malloc(sizeof(PCB);run->next=NULL;CH1=(CHCT *)malloc(sizeof(CHCT);CH2=(CHCT *)malloc(sizeof(CHCT);strcpy(CH1->identify,"ch1");strcpy(CH2->identify,"ch2");CH1->state=0;CH2->state=0;ch1block=(PCB *)malloc(sizeof(PCB);ch1block->next=NULL;ch2block=(PCB

10、 *)malloc(sizeof(PCB);ch2block->next=NULL;CH1->blocking=ch1block;CH2->blocking=ch2block;cohead=(COCT *)malloc(sizeof(COCT);cohead->next=NULL;CO1=(COCT *)malloc(sizeof(COCT);cohead->next=CO1;CO1->next=NULL;CO2=(COCT *)malloc(sizeof(COCT);CO1->next=CO2;CO2->next=NULL;CO3=(COCT

11、*)malloc(sizeof(COCT);CO2->next=CO3;CO3->next=NULL;CO1->state=0;CO2->state=0;CO3->state=0;co1block=(PCB *)malloc(sizeof(PCB);co1block->next=NULL;co2block=(PCB *)malloc(sizeof(PCB);co2block->next=NULL;co3block=(PCB *)malloc(sizeof(PCB);co3block->next=NULL;strcpy(CO1->identi

12、fy,"co1");strcpy(CO2->identify,"co2");strcpy(CO3->identify,"co3");CO1->chct=CH1;CO2->chct=CH1;CO3->chct=CH2;CO1->blocking=co1block;CO2->blocking=co2block;CO3->blocking=co3block;/=d1block=(PCB *)malloc(sizeof(PCB);d2block=(PCB *)malloc(sizeof(PCB)

13、;d3block=(PCB *)malloc(sizeof(PCB);d4block=(PCB *)malloc(sizeof(PCB);d1block->next=NULL;d2block->next=NULL;d3block->next=NULL;d4block->next=NULL;d1=(DCT *)malloc(sizeof(DCT);strcpy(d1->identify,"P");/p表示打印機(jī)設(shè)備d2=(DCT *)malloc(sizeof(DCT);strcpy(d2->identify,"T");

14、/t表示顯示器設(shè)備d3=(DCT *)malloc(sizeof(DCT);strcpy(d3->identify,"K");/k表示鍵盤(pán)設(shè)備d4=(DCT *)malloc(sizeof(DCT);strcpy(d4->identify,"M");/m表示鼠標(biāo)設(shè)備d1->coct=CO1; /控制器d2->coct=CO2; d3->coct=CO3;d4->coct=CO3;d1->state=0;/狀態(tài)d2->state=0;d3->state=0;d4->state=0;d1->t

15、ype='o'/o表示輸出設(shè)備outputd2->type='o'd3->type='i'/i表示輸入設(shè)備d4->type='i'd1->blocking=d1block;d2->blocking=d2block;d3->blocking=d3block;d4->blocking=d4block;/=head=(SDT *)malloc(sizeof(SDT);head->next=NULL;s1=(SDT *)malloc(sizeof(SDT);s2=(SDT *)malloc(

16、sizeof(SDT);s3=(SDT *)malloc(sizeof(SDT);s4=(SDT *)malloc(sizeof(SDT);head->next=s1;s1->next=s2;s2->next=s3;s3->next=s4;s4->next=NULL;s1->dct=d1;s2->dct=d2;s3->dct=d3;s4->dct=d4;strcpy(s1->identify,"P");strcpy(s2->identify,"T");strcpy(s3->ident

17、ify,"K");strcpy(s4->identify,"M");s1->type='o's2->type='o's3->type='i's4->type='i'/testSDT *temp=head->next;/=/添加設(shè)備時(shí)候,添加新控制器,把控制器加到最后void Addcotrol (COCT *temp)/添加控制器函數(shù)COCT *cotemp=cohead;while(cotemp->next!=NULL)cotemp=cotemp-

18、>next;cotemp->next=temp;temp->next=NULL;/查看所有控制器,選擇所要連接的控制器void Showallco()COCT *temp=cohead->next;while(temp!=NULL)cout<<temp->identify<<" "temp=temp->next;cout<<endl;/查找要連接的控制器COCT * Findco(char a)COCT * temp=cohead->next;while(temp!=NULL)if(!strcmp

19、(temp->identify,a)return temp;temp=temp->next;return temp;/刪除設(shè)備時(shí)候,判斷是不是同時(shí)刪除控制器,等于1刪,0不刪int sf_deleteco(char a,char b)SDT *temp;temp=head->next;while(temp!=NULL)if(strcmp(temp->identify,a)&&(!strcmp(temp->dct->coct->identify,b)return 0;temp=temp->next;return 1;/刪除設(shè)備的時(shí)候

20、同時(shí)刪除控制器void Deletecotrol(COCT *te)COCT * temp=cohead;while(temp->next!=te)temp=temp->next;temp->next=te->next;delete(te);/添加設(shè)備,查找設(shè)備是不是已經(jīng)存在int sf_exist(char a)SDT *temp;if(head->next=NULL)return 0;elsetemp=head->next;while(temp!=NULL)if(!strcmp(a,temp->identify)checkdel=temp;retu

21、rn 1;temp=temp->next;return 0;/申請(qǐng)?jiān)O(shè)備時(shí)候,如果忙,將設(shè)備掛到等待隊(duì)列void Addwaitpcb(PCB * p1,PCB * p2)PCB *temp=p1;while(temp->next!=NULL)temp=temp->next;temp->next=p2;p2->next=NULL;/回收設(shè)備時(shí)候,對(duì)PCB的操作void Deletepcb(char a)PCB * temp2=run->next,* temp=run;while(temp2!=NULL)if(!strcmp(temp2->devname,

22、a)temp->next=temp2->next;delete(temp2);break;temp=temp2;temp2=temp->next;/判斷等待隊(duì)列是不是空int sf_pcbnull(PCB *temp)if(temp->next=NULL)return 0;else return 1;/查看所有設(shè)備狀態(tài)void Showmenu()PCB * ptemp=run->next;SDT * temp=head->next;DCT * dtemp;COCT * cotemp;CHCT * chtemp;cout<<"SDT&q

23、uot;<<" i/o"<<" COCT"<<" CHCT"<<endl;while(temp!=NULL)dtemp=temp->dct;cotemp=dtemp->coct;chtemp=cotemp->chct;cout<<dtemp->identify<<""<<dtemp->state<<""<<"t"<<dtemp-

24、>type<<"t"<<cotemp->identify<<""<<cotemp->state<<""<<" t"<<chtemp->identify<<""<<chtemp->state<<""<<endl;temp=temp->next;while(ptemp!=NULL)cout<<"

25、;進(jìn)程"<<ptemp->name<<"申請(qǐng)了設(shè)備"<<ptemp->devname<<endl;ptemp=ptemp->next;cout<<endl;/設(shè)備獨(dú)立性時(shí)候查找要查找的類型是不是存在int sf_typeexist(char ch)SDT *temp;if(head->next=NULL)return 0;elsetemp=head->next;while(temp!=NULL)if(temp->type=ch)return 1;else temp=te

26、mp->next;return 0;/增加設(shè)備void Adddevice()cout<<"增加設(shè)備"<<endl;/寫(xiě)入設(shè)備名稱SDT * stemp,* s2temp;COCT *cotemp;DCT *temp;char temptype;PCB *tempblock,* cotempblock;char choice;char eqary10,coary10;cin>>eqary;/此處查找SDT,看是否所要添加的設(shè)備已經(jīng)存在if(sf_exist(eqary)=1)/設(shè)備已經(jīng)存在cout<<"設(shè)備已存

27、在"<<endl;else/設(shè)備不存在tempblock=(PCB *)malloc(sizeof(PCB);tempblock->next=NULL;temp=(DCT *)malloc(sizeof(DCT);strcpy(temp->identify,eqary);temp->blocking=tempblock;temp->state=0;cout<<"輸入設(shè)備類型"<<endl;cin>>temptype;temp->type=temptype;stemp=(SDT *)mal

28、loc(sizeof(SDT);stemp->next=NULL;stemp->dct=temp;stemp->type=temptype;strcpy(stemp->identify,eqary);s2temp=head;while(s2temp->next!=NULL)s2temp=s2temp->next;s2temp->next=stemp;stemp->next=NULL;cout<<"是否添加控制器?(y/n)"<<endl;cin>>choice;if(choice='

29、y')|(choice='Y')/添加新控制器cout<<"輸入控制器名稱:"<<endl;cin>>coary;cotempblock=(PCB *)malloc(sizeof(PCB);cotempblock->next=NULL;cotemp=(COCT *)malloc(sizeof(COCT);cotemp->next=NULL;strcpy(cotemp->identify,coary);cotemp->state=0;cotemp->blocking=cotempbloc

30、k;Addcotrol(cotemp);temp->coct=cotemp;cout<<"請(qǐng)選擇連接的通道:1/2"<<endl;/因?yàn)橹欢x了兩個(gè)通道,選1就是ch1,選2就是ch2int i;cin>>i;if(i=1)cotemp->chct=CH1;elsecotemp->chct=CH2;else/不添加控制器Showallco();cout<<"輸入連接控制器的名稱:"<<endl;cin>>coary;cotemp=Findco(coary);temp

31、->coct=cotemp;cout<<"設(shè)備"<<eqary<<"添加成功!"<<endl;/刪除設(shè)備void Deletedevice()/刪除設(shè)備的時(shí)候同時(shí)刪除pcb Deletepcbcout<<"刪除設(shè)備"<<endl;COCT * temp;SDT * stemp;char chary10;char tempary10;cin>>chary;if(sf_exist(chary)=0)cout<<"刪除設(shè)備不存在!

32、"<<endl;else if(checkdel->dct->state=1)cout<<"設(shè)備正在使用無(wú)法刪除"<<endl;else/sf_deleteco();Deletepcb(chary);strcpy(tempary,checkdel->dct->coct->identify);if(sf_deleteco(chary,tempary)/刪除控制器temp=checkdel->dct->coct;Deletecotrol(temp);stemp=head;while(stem

33、p->next!=checkdel)stemp=stemp->next;stemp->next=checkdel->next;delete(checkdel);cout<<"設(shè)備"<<chary<<"刪除成功!"<<endl;/申請(qǐng)?jiān)O(shè)備void Applydevice()cout<<"申請(qǐng)?jiān)O(shè)備"<<endl;PCB *ptemp;DCT *dtemp;COCT *cotemp;CHCT *chtemp;char pname10,eqname

34、10;cin>>pname>>eqname;if(sf_exist(eqname)=0)cout<<"設(shè)備不存在!"<<endl;else/checkdel(對(duì)應(yīng)要申請(qǐng)?jiān)O(shè)備的指針)ptemp=(PCB *)malloc(sizeof(PCB);strcpy(ptemp->name,pname);ptemp->next=NULL;dtemp=checkdel->dct;/=此處是否要考慮狀態(tài)的改變=if(dtemp->state=1)/設(shè)備忙Addwaitpcb(dtemp->blocking,pt

35、emp);cout<<"進(jìn)程"<<ptemp->name<<"被掛在設(shè)備"<<dtemp->identify<<"的等待隊(duì)列上!"<<endl;else /設(shè)備不忙cotemp=dtemp->coct;if(cotemp->state=1)/控制器忙Addwaitpcb(cotemp->blocking,ptemp);cout<<"進(jìn)程"<<ptemp->name<<&qu

36、ot;被掛在控制器"<<cotemp->identify<<"的等待隊(duì)列上!"<<endl;else/控制器不忙chtemp=cotemp->chct;if(chtemp->state=1)/通道忙Addwaitpcb(chtemp->blocking,ptemp);cout<<"進(jìn)程"<<ptemp->name<<"被掛在通道"<<chtemp->identify<<"的等待隊(duì)列上!

37、"<<endl;else/通道不忙Addwaitpcb(run,ptemp);dtemp->state=1;cotemp->state=1;chtemp->state=1;strcpy(ptemp->devname,eqname);cout<<"進(jìn)程"<<pname<<"申請(qǐng)?jiān)O(shè)備"<<eqname<<"成功!"<<endl;/回收設(shè)備void Recycledevice()cout<<"回收設(shè)備&

38、quot;<<endl;/char ch;char eqname10;DCT *dtemp;COCT *cotemp;CHCT *chtemp;PCB *pctemp1,*pctemp2;cin>>eqname;if(sf_exist(eqname)=0)/設(shè)備不存在cout<<"要回收的設(shè)備不存在!"<<endl;else if(checkdel->dct->state=0)/設(shè)備存在,但是不需要回收cout<<"設(shè)備處于閑狀態(tài),不需要回收!"<<endl;else/需

39、要回收Deletepcb(eqname);/dtemp=checkdel->dct;cotemp=dtemp->coct;chtemp=cotemp->chct;dtemp->state=0;cotemp->state=0;chtemp->state=0;if(sf_pcbnull(chtemp->blocking)/如果通道等待隊(duì)列不空pctemp1=chtemp->blocking;pctemp2=pctemp1->next;pctemp1->next=pctemp2->next;pctemp2->next=NULL;

40、strcpy(pctemp2->devname,eqname);Addwaitpcb(run,pctemp2);dtemp->state=1;cotemp->state=1;chtemp->state=1;elseif(sf_pcbnull(cotemp->blocking)/如果控制器的等待隊(duì)列不空pctemp1=cotemp->blocking;pctemp2=pctemp1->next;pctemp1->next=pctemp2->next;pctemp2->next=NULL;strcpy(pctemp2->devnam

41、e,eqname);Addwaitpcb(run,pctemp2);dtemp->state=1;cotemp->state=1;chtemp->state=1;elseif(sf_pcbnull(dtemp->blocking)/如果設(shè)備的等待隊(duì)列不空pctemp1=dtemp->blocking;pctemp2=pctemp1->next;pctemp1->next=pctemp2->next;pctemp2->next=NULL;strcpy(pctemp2->devname,eqname);Addwaitpcb(run,pct

42、emp2);dtemp->state=1;cotemp->state=1;chtemp->state=1;cout<<"設(shè)備"<<eqname<<"回收成功!"<<endl;/設(shè)備獨(dú)立性=void Independence()cout<<"設(shè)備獨(dú)立性-申請(qǐng)?jiān)O(shè)備:"<<endl;/cout<<"申請(qǐng)?jiān)O(shè)備"<<endl;char type;char pname10;SDT * temp,* temp2;PC

43、B *ptemp;DCT *dtemp;COCT *cotemp;CHCT *chtemp;cin>>pname>>type;if(type='o')|(type='i')/=還得考慮要申請(qǐng)的類型是不是存在=if(sf_typeexist(type)=0)cout<<"要申請(qǐng)的該類設(shè)備不存在!"<<endl;elsetemp=head->next;while(temp!=NULL)if(temp->type=type)&&(temp->dct->state

44、=0)/當(dāng)設(shè)備類型相同,并且設(shè)備空閑temp2=temp;break;else if(temp->type=type)temp2=temp;temp=temp->next;sf_exist(temp2->identify);/=ptemp=(PCB *)malloc(sizeof(PCB);strcpy(ptemp->name,pname);ptemp->next=NULL;dtemp=checkdel->dct;/要用了這個(gè)函數(shù)才可以=if(temp2->dct->state=0)/當(dāng)設(shè)備不忙時(shí)候cotemp=dtemp->coct;if

45、(cotemp->state=1)/控制器忙Addwaitpcb(cotemp->blocking,ptemp);cout<<"進(jìn)程"<<ptemp->name<<"被掛在控制器"<<cotemp->identify<<"的等待隊(duì)列上!"<<endl;else/控制器不忙chtemp=cotemp->chct;if(chtemp->state=1)/通道忙Addwaitpcb(chtemp->blocking,ptemp);cout<<"進(jìn)程"<<ptemp->name<<"被掛在通道"<<chtemp->identi

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論