-
大小: 72KB文件類(lèi)型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-05-08
- 語(yǔ)言: 其他
- 標(biāo)簽:
資源簡(jiǎn)介
設(shè)計(jì)并實(shí)現(xiàn)一個(gè)spooling輸出的模擬系統(tǒng)
①進(jìn)程控制塊(PCB)
對(duì)于輸出進(jìn)程和spooling進(jìn)程兩種不同的進(jìn)程,采用相同的結(jié)構(gòu)處理,包括進(jìn)程標(biāo)識(shí)、進(jìn)程狀態(tài)、輸出緩沖、輸出指針、信息塊首地址、輸出長(zhǎng)度等內(nèi)容。需要支持在不同狀態(tài)之間的轉(zhuǎn)換,輸出緩沖清空等操作。
②輸出請(qǐng)求塊
包括要求輸出的進(jìn)程標(biāo)識(shí)、輸出長(zhǎng)度、輸出首地址等內(nèi)容。
③輸出井
使用隊(duì)列結(jié)構(gòu)模擬,需要支持隊(duì)列重整,取隊(duì)首元素,刪除隊(duì)首元素,在隊(duì)尾插入等操作,需要使用兩個(gè)指針協(xié)助操作。

代碼片段和文件信息
????????//>>>>>>>>>>>>>>>>>>>>>頭文件<<<<<<<<<<<<<<<<<<<<<<<<<
#include??
#include??
#include?
#include??
#include?
//>>>>>>>>>>>>>>>>>>>>>數(shù)據(jù)結(jié)構(gòu)<<<<<<<<<<<<<<<<<<<<<<<<<
struct?PCB??????????
{???????????????????//進(jìn)程控制塊PCB
???long?ID;?????????//進(jìn)程標(biāo)識(shí)?
???int?status;??????//狀態(tài)?(0-可運(yùn)行狀態(tài);1-輸出井滿(mǎn)不可運(yùn)行狀態(tài);2-進(jìn)程控制塊;3-結(jié)束狀態(tài)?)
???long?po;?????????//輸出指針?
???long?head;???????//信息塊首地址?
???long?count;??????//輸出長(zhǎng)度?
???long?wait[1000];?//輸出緩沖?
}PCB[5];?
struct?ReqBlock?
{??long?ID;???????//要求輸出的進(jìn)程?
???long?len;??????//輸出長(zhǎng)度?
???long?head;?????//輸出首地址?
}ReqBlock[256];?
struct?well???????????
{???????????????????//輸出井
???long?num[10000];??//輸出內(nèi)容?
???long?openclosed;?//隊(duì)列指針?
}well[4];?
//>>>>>>>>>>>>>>>>>>>>>全局變量<<<<<<<<<<<<<<<<<<<<<<<<<
long?K[4]L1L2[4];?
long?n;
long?r;????//程序選擇環(huán)節(jié)時(shí)用于存放隨機(jī)生成數(shù)
long?k;????//存放進(jìn)程標(biāo)志如pcb[k];
long?ab;??//a-存儲(chǔ)輸出塊號(hào)如ReqBlock[a];
long?i;????//循壞時(shí)用的參數(shù);?
//>>>>>>>>>>>>>>>>>>>>>輸入函數(shù)<<<<<<<<<<<<<<<<<<<<<<<<<
void?input()???????
{??printf(“Input?the?size?of?user1‘s?output?file:(0-85)“);?//size<=256/3?
???scanf(“%ld“&K[1]);?
???printf(“Input?the?size?of?user2‘s?output?file:(0-85)“);?
???scanf(“%ld“&K[2]);??
???printf(“Input?the?size?of?user3‘s?output?file:(0-85)“);?
???scanf(“%ld“&K[3]);?????????
}?
//>>>>>>>>>>>>>>>>>>>>>初始化函數(shù)<<<<<<<<<<<<<<<<<<<<<<<<<
void?init()??????
{??L1=10;?????????????????//空閑塊初值10
???L2[1]=L2[2]=L2[3]=100;?
???memset(PCB0sizeof(PCB));?
???PCB[1].ID=1;?
???PCB[2].ID=2;?
???PCB[3].ID=3;
???PCB[4].ID=4;?
???PCB[4].status=2;?
???memset(well0sizeof(well));
???n=0;?????????//輸出塊計(jì)數(shù)初始為0;
}?
//>>>>>>>>>>>>>>>>>>>>>用戶(hù)進(jìn)程<<<<<<<<<<<<<<<<<<<<<<<<<
void?UserServer(int?kx)???
{???a=rand()%10;?
???++PCB[kx].po;?
???PCB[kx].wait[PCB[kx].po]=a;?
???if?(a==0)?
???{???b=well[kx].closed+1;?
??????for?(i=1;i<=PCB[kx].po;i++)?
?????????well[kx].num[++well[kx].closed]=PCB[kx].wait[i];?
??????PCB[kx].po=0;?
??????PCB[kx].count++;?
??????if?(PCB[kx].count==K[kx])???//進(jìn)程控制塊用完
?????????PCB[kx].status=3;????????//進(jìn)程執(zhí)行完畢后應(yīng)置成“結(jié)束狀態(tài)“
??????if?(PCB[4].status==2)???????//要求輸出進(jìn)程在輸出信息到輸出井并形成信息塊后,應(yīng)將Spooling?進(jìn)程?
?????????PCB[4].status=0;?????????//置成“可運(yùn)行狀態(tài)“
??????if?(L2[kx]==0?&&?PCB[kx].status==0)??
?????????PCB[kx].status=1;?????????//如果輸出井滿(mǎn),將進(jìn)程置為“不可運(yùn)行狀態(tài)?1“
??????n++;?
??????ReqBlock[n].ID=kx;?
??????ReqBlock[n].head=b;?
??????ReqBlock[n].len=well[kx].closed-b+1;?
??????printf(“Process?%ld?produces?a?block?%ld!\n“kxn);?
???}?
}
//>>>>>>>>>>>>>>>>>>>>>spooling進(jìn)程<<<<<<<<<<<<<<<<<<<<<<<<<
void?SpoolingServer()?????
{????PCB[4].po++;?
????a=PCB[4].po;?
????printf(“Output?block?%ld:?(ID=%ld)\n“aReqBlock[a].ID);?
????for?(i=1;i<=ReqBlock[a].len;i++)?
{?????printf(“%ld?“well[ReqBlock[a].ID].num[i+ReqBlock[a].head-1]);?
}?
????printf(“\n“);?
????if?(PCB[4].po==n)?
{????PCB[4].status=2;?
???????//Spooling?進(jìn)程在輸出井空時(shí)應(yīng)置成“不可運(yùn)行狀態(tài)2“。?
???????if?(PCB[1].status==3?&&?PCB[2].status==3?&&?PCB[3].status==3)???????
???PCB[4].
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????文件???????4544??2008-12-25?00:42??六.Spooling技術(shù)\spooling技術(shù)\Spooling.cpp
?????文件?????196734??2008-12-25?00:40??六.Spooling技術(shù)\spooling技術(shù)\Spooling技術(shù).exe
?????目錄??????????0??2008-12-25?15:23??六.Spooling技術(shù)\spooling技術(shù)
?????文件??????71680??2008-12-25?00:46??六.Spooling技術(shù)\實(shí)驗(yàn)報(bào)告:Spooling技術(shù).doc
?????目錄??????????0??2009-06-05?23:19??六.Spooling技術(shù)
-----------?---------??----------?-----??----
???????????????272958????????????????????5
- 上一篇:軟件測(cè)試體系思維導(dǎo)圖
- 下一篇:C8051F410官方例程
評(píng)論
共有 條評(píng)論