亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? os1.cpp.bak

?? 這是上完操作系統課時
?? BAK
字號:
//os1.cpp--采用響應比高者優先的作業調度算法,進行批處理系統中的作業調度,
//編譯IDE:C++ Builder 命令行下編譯
//注:本實驗中用了三個隊列
//外存就緒隊列(后備隊列)head;內存就緒隊列read;運行隊列run
//處理機處理每一個作業的時間統一為3秒

#include <iostream.h>
#include <time.h>
#include <dos.h>

//#define N 10;					//假定系統中可容納的作業數量為n

typedef  struct  jcb
{char  name[4];				    //作業名
 int  length;					    //作業長度,所需主存大小
 int  printer;					    //作業執行所需打印機的數量
 int  tape;					    //作業執行所需磁帶機的數量
 int  runtime;					    //作業估計執行時間
 int  waittime;						//作業在系統中的等待時間
 int  next;						//指向下一個作業控制塊的指針,用游標實現·
}JCB;          				//作業控制塊類型定義

//存放作業控制塊的區域
JCB jobtable[10];			//作業表

//三個隊列的首指針
int  head;	//指向后備隊列的首指針,即外存就緒就緒首指針
struct 
{
	int head;
	int tail;
}ready;		//指向內存就緒隊列的頭指針和尾指針
int run;	//指向CPU正在運行的作業

int  jobcount=0;	//系統內現有作業數量
int  runcount=0;	//已運行的作業數量

int s, p, kp;	//p指向當前正在操作計算的作業,s標識p的前一位置
int t, q, kq;	//q指向滿足條件的作業,t標識q的前一位置

//設置系統所擁有的資源
int sysmemory=64*1024, sysprinter=4, systape=2;

void initialize(int);	//初始化某個時刻系統中各個作業的情況
void selectHRjob();
void loadin();	//裝入程序
void batrun();	//批處理運行程序

int main()
{
		
	initialize(10);	//手工初始化10個作業,且全部作業進入外存就緒隊列中

	system("PAUSE");

	for(;runcount<=9;){	//一共要處理10個作業
		ready.head=ready.tail=-1;	//
		bool tag=1;	//tag為真時表示還有作業可以調入內存
		while(tag){	//在運行前將外存中所有符合兩個條件的所有作業調入內存
			selectHRjob();	//從后備隊列中選擇滿足資源滿足且響應比最高的作業
			if(q!=-1)	//找到了q滿足兩個條件:系統資源滿足且響應比最高
				loadin();	//裝入內存,并修改系統資源
			else
				tag=0;	//沒有作業可以調入內存了,跳出
		}

		cout<<"將所有滿足條件的作業調入內存之后的系統信息:"<<endl;
		cout<<"jobcount="<<jobcount<<endl;
		cout<<"sysmemory="<<sysmemory<<endl;
		cout<<" sysprinter="<<sysprinter<<endl;
		cout<<"systape="<<systape<<endl;

		system("PAUSE");

		//批處理內存中所有的作業
		batrun();
		cout<<"批處理完內存中的所有作業后的系統信息:"<<endl;
		cout<<"runcount="<<runcount<<endl;
		cout<<"jobcount="<<jobcount<<endl;
		cout<<"sysmemory="<<sysmemory<<endl;
		cout<<"sysprinter="<<sysprinter<<endl;
		cout<<"systape="<<systape<<endl;

		system("PAUSE");

	}//for

	cout<<"Congratulations! "<<runcount<<" jobs haved run off"<<endl;
	system("PAUSE");

	return 0;
}

//手工初始化10個作業
void initialize(int n)
{
	void entercontent(int);	

	cout<<"注意:若提示輸入的是數字,而輸入的是字母或其它字符,則可能會導致死循環"<<endl;
	cout<<"請按提示輸入10個要處理的作業的信息:"<<endl;
	for(int i=0; i<=n-1; i++){	//系統中的n個作業組成一個靜態鏈表
		entercontent(i);	//輸入作業i的各項內容
		jobtable[i].next=i+1;	//作業指針指向下一個作業
	}
	jobtable[n-1].next=-1;	//表尾的指針域為空,即不指向任單元

	head=0;	//head指針指向第一個作業
}

void entercontent(int i)
{
	//輸入作業名
	cout<<"enter the JOBNAME of NO."<<i<<endl;
	cin>>jobtable[i].name;
	
	//輸入作業長度,所需主存大小
	cout<<"enter the job's LENGTH(1~65536)"<<endl;
	cin>>jobtable[i].length;
	while(jobtable[i].length<=0||jobtable[i].length>sysmemory){	//輸入正確性判斷
		cout<<"Enter error!"<<"\n請重新輸入作業大小(1~65536):";
		cin>>jobtable[i].length;
	}
	
	//輸入作業執行行所需打印機的數量
	cout<<"enter how many PRINTERS the job need(<=4)"<<endl;
	cin>>jobtable[i].printer;
	while(jobtable[i].printer>4){	//輸入正確性判斷
		cout<<"Enter error!"<<"\n請重新輸入作業需要的打印機數量(0~4臺):";
		cin>>jobtable[i].printer;
	}

	//輸入作業執行所需磁帶機的數量
	cout<<"enter how many TAPES the job need(<=2)"<<endl;
	cin>>jobtable[i].tape;
	while(jobtable[i].tape>2){		//輸入正確性判斷
		cout<<"Enter error!"<<"\n請重新輸入作業需要的磁盤帶數量(0~2臺):";
		cin>>jobtable[i].tape;
	}

	//輸入作業估計執行時間
	cout<<"enter the RUNTIME of the job"<<endl;
	cin>>jobtable[i].runtime;

	//輸入作業在系統中的等待時間
	cout<<"enter the WAITIME of the job during systems"<<endl;
	cin>>jobtable[i].waittime;
}

//選擇外存就緒隊列中響應比最高的作業調入內存
void selectHRjob()
{

	p=head;
	q=s=-1;
	//循環一輪:從隊列頭找到隊列尾
	while(p!=-1){	
			bool condition=jobtable[p].length<=sysmemory&&jobtable[p].printer<=sysprinter&&
							jobtable[p].tape<=systape;
			if(condition){	//系統可用資源滿足作業要求
				kp=jobtable[p].waittime/jobtable[p].runtime;
				if(0==p||kp>kq){	//p是第一個滿足條件的作業或作業p的響應比比作業q的響應比高
					q=p; t=s; kq=kp;
				}
			}
			
			//指針p后移(1,condition為假; 2condition為真&&0==p||kp>kq)
			s=p;
			p=jobtable[p].next;	
	}

	cout<<"一輪循環之后選擇的是作業"<<jobtable[q].name<<" 此時q="<<q<<endl;

}

//裝入,并修改系統資源
void loadin()
{
			//從作業隊列中摘取q
			if(q==head)	//q是作業隊列中的第一個
				head=jobtable[head].next;
			else	//一般情況
				jobtable[t].next=jobtable[q].next;

			//為作業q分配資源
			sysprinter-=jobtable[q].printer;
			systape-=jobtable[q].tape;
			
			//輸出作業名
			cout<<"輸出作業的作業名 \""<<jobtable[q].name<<"\" 代替裝入主存儲器"<<endl;
			sysmemory-=jobtable[q].length;
			//裝入內存的作業掛入內存就緒隊列中
			if((ready.head==ready.tail)&&-1==ready.head&&-1==ready.tail)//內存就緒隊列為空,則插入隊列頭
				ready.head=ready.tail=q; 					
			else{	//一般情況
				jobtable[ready.tail].next=q;
				ready.tail=q;
			}

			++jobcount;	//內存中作業數增加1			
}

//批處理內存就緒隊列中的作業
void batrun()
{
	
	while(jobcount!=0){	//內存中還有作業	
		//摘取內存就緒隊列中的第一個作業
		if(1==jobcount){	//內存中只有一個作業
			run=ready.head;
			ready.head=ready.tail=-1;	//內存就緒隊列清空
		}
		else{	//一般情況
				run=ready.head;
				ready.head=jobtable[ready.head].next;
		}

		//運行,批處理的作業統一運行3秒
		cout<<"現在批處理作業"<<jobtable[run].name<<" please wait 3 seconds……"<<endl;
		for(int tmp=1; tmp<=3; ++tmp){
			cout<<"1 second"<<endl;
			sleep(1);
		}

		++runcount;	//運行作業數加1
		--jobcount;	//內存就緒隊列中的作業數減1
		cout<<"The job "<<jobtable[run].name<<"run OVER!"<<endl;
		cout<<"Now, you haved batrun "<<runcount<<" jobs"<<endl;

		//修改系統資源
		sysmemory+=jobtable[run].length;
		sysprinter+=jobtable[run].printer;
		systape+=jobtable[run].tape;
	}

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频电影在线| 国产一区二区看久久| 午夜私人影院久久久久| 亚洲r级在线视频| 日本视频一区二区三区| 六月丁香婷婷久久| 粉嫩av亚洲一区二区图片| www.性欧美| 337p亚洲精品色噜噜狠狠| 日韩精品一区二区三区视频在线观看| 久久婷婷国产综合精品青草| 久久精品亚洲麻豆av一区二区| 最近中文字幕一区二区三区| 五月婷婷激情综合网| 国产福利一区在线| 日本高清免费不卡视频| 欧美一区二区日韩一区二区| 久久久精品国产99久久精品芒果| 亚洲国产精品成人综合| 国产精品影视网| 日韩欧美国产午夜精品| 亚洲国产精品一区二区www| 99亚偷拍自图区亚洲| 久久久精品蜜桃| 激情成人综合网| 日韩欧美国产wwwww| 久久激情综合网| 欧美优质美女网站| 国产精品久久夜| 成人永久aaa| 日韩亚洲欧美一区二区三区| 亚洲欧美日韩电影| 成人av网站在线观看| 一区二区三区自拍| 国产一区二区日韩精品| 日韩一区二区高清| 日韩激情在线观看| 日韩午夜在线播放| 国产精品一区二区三区网站| 精品99久久久久久| av电影在线观看一区| 一区在线播放视频| 色偷偷88欧美精品久久久| 亚洲午夜激情网页| 欧美一级搡bbbb搡bbbb| 蜜臀av一区二区在线观看| 精品国产免费久久 | 国产超碰在线一区| 国产精品天天摸av网| 99精品在线免费| 一区二区成人在线视频| 欧美影视一区在线| 日韩成人av影视| 国产女人aaa级久久久级| av成人免费在线观看| 亚洲影院在线观看| 久久久久国产精品麻豆ai换脸 | 久久九九国产精品| 国产成人在线网站| 亚洲天堂免费看| 69堂精品视频| 成人性生交大片免费看中文| 亚洲综合一二区| xf在线a精品一区二区视频网站| 国产主播一区二区三区| 欧美国产综合一区二区| 欧美精品自拍偷拍动漫精品| 国产做a爰片久久毛片 | 美国精品在线观看| 欧美国产国产综合| 欧美一区二区三区视频在线观看 | 911精品国产一区二区在线| 国产美女精品在线| 日本成人在线网站| 午夜精品爽啪视频| 精品国产区一区| 91精品国产日韩91久久久久久| 99久久精品免费| 精品一区二区免费在线观看| 亚洲一二三区不卡| 夜夜嗨av一区二区三区中文字幕 | 久久久精品天堂| 777亚洲妇女| 欧美理论电影在线| 在线精品视频一区二区三四| 色综合久久综合网欧美综合网| 国产精品12区| 高清beeg欧美| 99视频在线精品| 在线欧美日韩精品| 欧美午夜精品久久久久久超碰| 99久久久国产精品| 日本大香伊一区二区三区| 色综合久久久久综合| 日本精品一区二区三区四区的功能| 成熟亚洲日本毛茸茸凸凹| 成人在线综合网| 色综合婷婷久久| 欧美人与性动xxxx| 精品少妇一区二区三区免费观看 | 亚洲伊人色欲综合网| 亚洲一区二区三区精品在线| 午夜欧美2019年伦理| 老司机午夜精品99久久| 国产成人亚洲精品狼色在线| 国产91丝袜在线18| 色呦呦一区二区三区| 日韩欧美一二区| 国产精品午夜春色av| 亚洲午夜免费电影| 精品亚洲免费视频| av在线一区二区三区| 88在线观看91蜜桃国自产| 国产精品视频麻豆| 视频一区二区三区入口| 国产乱码精品一区二区三区忘忧草 | 国产剧情一区在线| 亚洲成人av福利| 亚洲一二三区在线观看| 国产在线不卡视频| 国产精品美女久久久久久久久久久| 亚洲综合久久久| 国产成人午夜精品影院观看视频| 在线精品观看国产| 国产三级一区二区| 奇米777欧美一区二区| 色综合久久久久久久久| 国产精品久久久久毛片软件| 日韩成人一区二区三区在线观看| 成人动漫中文字幕| 精品91自产拍在线观看一区| 亚洲午夜久久久久久久久久久| 大胆亚洲人体视频| 国产日本亚洲高清| 欧美卡1卡2卡| 一区二区三区中文字幕精品精品| 国产在线日韩欧美| 欧美xxxxxxxx| 精品一区在线看| 日韩欧美在线123| 天天色图综合网| 欧美一区二区视频免费观看| 亚洲国产va精品久久久不卡综合| 91视频国产资源| 亚洲综合激情小说| 欧美日韩一区国产| 午夜精品福利一区二区三区蜜桃| 91精品午夜视频| 麻豆一区二区三| 精品成人佐山爱一区二区| 国产精品夜夜嗨| 国产精品乱码一区二区三区软件 | 在线观看中文字幕不卡| 亚洲自拍偷拍综合| 欧美午夜理伦三级在线观看| 视频一区二区中文字幕| 日韩欧美国产综合| 东方欧美亚洲色图在线| 中文字幕一区在线观看视频| 色噜噜狠狠成人网p站| 婷婷亚洲久悠悠色悠在线播放| 日韩精品中文字幕在线不卡尤物| 国产在线观看一区二区| 日韩伦理av电影| 欧美一区三区四区| 成人爽a毛片一区二区免费| 亚洲精选视频在线| 日韩一级免费一区| 色94色欧美sute亚洲13| 三级影片在线观看欧美日韩一区二区 | 欧美电视剧免费观看| av电影在线不卡| 蜜臀av一区二区三区| 中文字幕人成不卡一区| 欧美一级二级在线观看| 不卡一区二区中文字幕| 久久国产视频网| 亚洲va欧美va国产va天堂影院| 欧美xxxxxxxx| 欧美日韩精品久久久| 播五月开心婷婷综合| 久久99精品久久久久久国产越南| 一区二区三区国产豹纹内裤在线| 日韩欧美亚洲国产另类 | 欧美在线999| 不卡在线观看av| 国产精品99精品久久免费| 久久精品国产亚洲aⅴ | 成人黄色av电影| 九九**精品视频免费播放| 天堂精品中文字幕在线| 亚洲一区二区黄色| 亚洲精品va在线观看| 中文字幕在线不卡一区| 欧美激情一区二区| 日本一区二区三区免费乱视频 | 日本二三区不卡| 99精品桃花视频在线观看| 免费视频一区二区| 午夜久久久久久|