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

資源簡(jiǎn)介

操作系統(tǒng)課程設(shè)計(jì)SPOOLING技術(shù)。 C語(yǔ)言版,內(nèi)含課設(shè)報(bào)告。 有簡(jiǎn)單的中文操作界面。 建議使用C與C++程序設(shè)計(jì)學(xué)習(xí)與實(shí)驗(yàn)系統(tǒng) 打開(kāi)。

資源截圖

代碼片段和文件信息

#include
#include
#include

struct?pcb{??????//定義結(jié)構(gòu)體?
????int?status;?????//進(jìn)程狀態(tài)
????int?length;????//輸出長(zhǎng)度
}*PCB[3];

struct?req{??????//請(qǐng)求進(jìn)程名
????int?reqname;??//定義名稱(chēng)
????int?length;????//輸出長(zhǎng)度
????int?addr;??//本次輸出的首地址
}reqblock[10];

int?buffer[2][100];
int?head=0tail=0;
int?t1=5t2=5;
FILE?*f;

void?help();
void?menu();

void?request(int?i)?//定義請(qǐng)求函數(shù)
{
????int?jmslength=0;
????struct?req*run;
????if(1==i)
????????t1--;
????else
????????t2--;
????printf(“用戶%d請(qǐng)求數(shù)據(jù):\n“i);//輸出標(biāo)注
????fprintf(f“用戶%d請(qǐng)求數(shù)據(jù):\n“i);
????run=&reqblock[tail%10];//定義輸出塊
????run->reqname=i;
????run->length=0;
????if(0==tail)
????????run->addr=0;
????else
????{
????????int?index=(tail-1)%10;
????????run->addr=reqblock[index].addr+reqblock[index].length;
????}
????for(?m=0;m<100;m++)
????{
????????if(0==buffer[i-1][m])
????????{
????????????run->addr=m;
????????????break;
????????}
????}
?????s=0;
????while(1)
????{
????????j=rand()%10;
????????if(0==j)
????????{
????????????run->length=length;
????????????break;
????????}
????????buffer[i-1][(run->addr+length)]=s;
????????printf(“%3d“s);
????????fprintf(f“%3d“s);
????????s++;
????????length++;
????}
????printf(“\n“);
????fprintf(f“\n“);
????PCB[i-1]->length+=length;
????length=0;
????if(2==PCB[2]->status)
????????PCB[2]->status=0;
????tail++;
}

void?spooling()
{
????int?ij;
????struct?req*run;
????printf(“調(diào)用SPOOLING輸出服務(wù)程序輸出數(shù)據(jù):\n“);
????fprintf(f“調(diào)用SPOOLING輸出服務(wù)程序輸出數(shù)據(jù):\n“);
????run=&reqblock[head%10];
????printf(“%d:“run->reqname);
????fprintf(f“%d:“run->reqname);
????for(i=0;ilength;i++)
????{
????????printf(“%3d“buffer[run->reqname-1][run->addr+i]?);
????????fprintf(f“%3d“buffer[run->reqname-1][run->addr+i]?);
????}
????printf(“\n“);
????fprintf(f“\n“);
????head++;
????for(?j=0;j<2;j++)
????{
????????if(1==PCB[j]->status)
????????????PCB[j]->status=0;
????}
}

void?start()
{?int?lmnjk;
????for(l=0;l<2;l++)
????????for(j=0;j<100;j++)
????????????buffer[l][j]=0;
????for(n=0;n<3;n++)
????{
????????struct?pcb*tmpPcb=(struct?pcb*)malloc(sizeof(struct?pcb));
????????tmpPcb->status=0;
????????tmpPcb->length=0;
????????PCB[n]=tmpPcb;
????}
????printf(“兩個(gè)用戶進(jìn)程的請(qǐng)求分別為5,5.\n“);
????fprintf(f“兩個(gè)用戶進(jìn)程的請(qǐng)求分別為5,5.\n“);
????srand((unsigned)time(NULL));
????while(1)
????{

????????k=rand()%100;?//用隨機(jī)數(shù)模擬進(jìn)程執(zhí)行概率
????????if(k<=45)//執(zhí)行請(qǐng)求輸出用戶進(jìn)程1
????????{
????????????if((0==PCB[0]->status)&&(t1>0))
????????????????request(1);
????????}
????????else?if((k<=90)&&(t2>0))//執(zhí)行請(qǐng)求輸出用戶進(jìn)程2
????????{
????????????if(0==PCB[1]->status)
????????????????request(2);
????????}
????????else
????????????spooling();//執(zhí)行SPOOLING進(jìn)程
????????if((0==t1)&&(0==t2)&&(head==tail))
????????????break;
????}
????for(m=0;m<3;m++)
????{
????????free(PCB[m]);
????????PCB[m]=NULL;//PCB值為空
????}
????printf(“\n按回車(chē)鍵返回菜單選項(xiàng)\n“);
????getchar();
????tail=0;
????head=0;
????t1=5;
????t2=5;
????men

?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----

?????文件???????4914??2009-06-16?18:30??spooling.c

?????文件?????181841??2009-06-16?18:28??李禹霖22號(hào).doc

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

???????????????186755????????????????????2


評(píng)論

共有 條評(píng)論

相關(guān)資源