91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 72KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-08
  • 語言: 其他
  • 標簽:

資源簡介

設計并實現一個spooling輸出的模擬系統 ①進程控制塊(PCB) 對于輸出進程和spooling進程兩種不同的進程,采用相同的結構處理,包括進程標識、進程狀態、輸出緩沖、輸出指針、信息塊首地址、輸出長度等內容。需要支持在不同狀態之間的轉換,輸出緩沖清空等操作。 ②輸出請求塊 包括要求輸出的進程標識、輸出長度、輸出首地址等內容。 ③輸出井 使用隊列結構模擬,需要支持隊列重整,取隊首元素,刪除隊首元素,在隊尾插入等操作,需要使用兩個指針協助操作。

資源截圖

代碼片段和文件信息

????????//>>>>>>>>>>>>>>>>>>>>>頭文件<<<<<<<<<<<<<<<<<<<<<<<<<
#include??
#include??
#include?
#include??
#include?
//>>>>>>>>>>>>>>>>>>>>>數據結構<<<<<<<<<<<<<<<<<<<<<<<<<
struct?PCB??????????
{???????????????????//進程控制塊PCB
???long?ID;?????????//進程標識?
???int?status;??????//狀態?(0-可運行狀態;1-輸出井滿不可運行狀態;2-進程控制塊;3-結束狀態?)
???long?po;?????????//輸出指針?
???long?head;???????//信息塊首地址?
???long?count;??????//輸出長度?
???long?wait[1000];?//輸出緩沖?
}PCB[5];?
struct?ReqBlock?
{??long?ID;???????//要求輸出的進程?
???long?len;??????//輸出長度?
???long?head;?????//輸出首地址?
}ReqBlock[256];?
struct?well???????????
{???????????????????//輸出井
???long?num[10000];??//輸出內容?
???long?openclosed;?//隊列指針?
}well[4];?
//>>>>>>>>>>>>>>>>>>>>>全局變量<<<<<<<<<<<<<<<<<<<<<<<<<
long?K[4]L1L2[4];?
long?n;
long?r;????//程序選擇環節時用于存放隨機生成數
long?k;????//存放進程標志如pcb[k];
long?ab;??//a-存儲輸出塊號如ReqBlock[a];
long?i;????//循壞時用的參數;?
//>>>>>>>>>>>>>>>>>>>>>輸入函數<<<<<<<<<<<<<<<<<<<<<<<<<
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]);?????????
}?
//>>>>>>>>>>>>>>>>>>>>>初始化函數<<<<<<<<<<<<<<<<<<<<<<<<<
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;?????????//輸出塊計數初始為0;
}?
//>>>>>>>>>>>>>>>>>>>>>用戶進程<<<<<<<<<<<<<<<<<<<<<<<<<
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])???//進程控制塊用完
?????????PCB[kx].status=3;????????//進程執行完畢后應置成“結束狀態“
??????if?(PCB[4].status==2)???????//要求輸出進程在輸出信息到輸出井并形成信息塊后,應將Spooling?進程?
?????????PCB[4].status=0;?????????//置成“可運行狀態“
??????if?(L2[kx]==0?&&?PCB[kx].status==0)??
?????????PCB[kx].status=1;?????????//如果輸出井滿,將進程置為“不可運行狀態?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進程<<<<<<<<<<<<<<<<<<<<<<<<<
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?進程在輸出井空時應置成“不可運行狀態2“。?
???????if?(PCB[1].status==3?&&?PCB[2].status==3?&&?PCB[3].status==3)???????
???PCB[4].

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????4544??2008-12-25?00:42??六.Spooling技術\spooling技術\Spooling.cpp

?????文件?????196734??2008-12-25?00:40??六.Spooling技術\spooling技術\Spooling技術.exe

?????目錄??????????0??2008-12-25?15:23??六.Spooling技術\spooling技術

?????文件??????71680??2008-12-25?00:46??六.Spooling技術\實驗報告:Spooling技術.doc

?????目錄??????????0??2009-06-05?23:19??六.Spooling技術

-----------?---------??----------?-----??----

???????????????272958????????????????????5


評論

共有 條評論