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

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

?? os1.cpp

?? 這是上完操作系統課時
?? CPP
字號:
//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<<"\nCongratulations! "<<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一区二区三区免费野_久草精品视频
午夜精品福利视频网站| 国内外成人在线| 国产精品狼人久久影院观看方式| 欧美精品在线观看播放| 一本大道久久精品懂色aⅴ| 成人黄色免费短视频| 国产福利一区在线观看| 欧美巨大另类极品videosbest | 亚洲色欲色欲www| 国产精品久久久99| 亚洲欧美欧美一区二区三区| 亚洲欧美日韩中文字幕一区二区三区| 亚洲欧洲精品天堂一级| 亚洲精品久久7777| 午夜婷婷国产麻豆精品| 免费高清不卡av| 韩国一区二区三区| 高潮精品一区videoshd| 99视频有精品| www.66久久| 中文字幕一区二区日韩精品绯色| 亚洲国产成人在线| 亚洲国产精品影院| 另类小说欧美激情| 99这里只有精品| 欧美日韩亚洲丝袜制服| 亚洲精品在线网站| 亚洲视频每日更新| 午夜成人在线视频| 看片的网站亚洲| 91尤物视频在线观看| 欧美人牲a欧美精品| 黄页网站大全一区二区| 色综合久久99| 日韩精品一区国产麻豆| 一区在线观看免费| 亚洲综合成人网| 国产呦萝稀缺另类资源| 91黄色免费网站| 精品国精品国产| 一区二区三区在线视频免费| 午夜亚洲国产au精品一区二区| 国产剧情在线观看一区二区| 一区二区久久久| 国产成人综合在线播放| 欧美日韩成人综合| 久久久精品一品道一区| 婷婷中文字幕一区三区| av亚洲精华国产精华精华| 日韩午夜精品视频| 亚洲成人久久影院| 93久久精品日日躁夜夜躁欧美| 精品国产三级电影在线观看| 亚洲已满18点击进入久久| 成人丝袜18视频在线观看| 日本欧美加勒比视频| 97久久久精品综合88久久| 久久网站最新地址| 六月丁香婷婷久久| 777奇米成人网| 亚洲一级不卡视频| 91福利小视频| 亚洲免费观看高清完整版在线| 国产成人在线色| 精品欧美一区二区在线观看| 欧美日韩你懂的| 亚洲影视在线播放| 欧美亚洲免费在线一区| 国产精品国产三级国产a| 国产在线播精品第三| 欧美日韩国产一级片| 亚洲最新在线观看| 欧美综合色免费| 亚洲综合图片区| 欧洲精品一区二区三区在线观看| 亚洲欧美一区二区三区孕妇| 99re这里都是精品| 一区二区三区日韩欧美精品| 色噜噜狠狠色综合欧洲selulu| gogogo免费视频观看亚洲一| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 一区二区三区精品视频| 91在线码无精品| 一个色妞综合视频在线观看| 欧美日韩一区二区三区免费看| 亚洲成人中文在线| 日韩欧美在线综合网| 亚洲精品在线免费观看视频| 国内精品久久久久影院薰衣草 | 国产精品美女视频| eeuss国产一区二区三区| 成人免费在线视频观看| 在线视频一区二区三区| 天天亚洲美女在线视频| 久久久精品影视| 日本久久电影网| 青青草97国产精品免费观看无弹窗版 | 亚洲特黄一级片| 欧美精品色综合| 国产精品影视天天线| 中文字幕在线不卡国产视频| 欧美视频在线播放| 久久国产乱子精品免费女| 成人午夜又粗又硬又大| 一区二区三区中文在线观看| 欧美日韩成人激情| 国产精品影视网| 亚洲国产欧美日韩另类综合| 欧美精品一区二区久久婷婷 | 亚洲欧洲日本在线| 欧美日韩一二三| 成人免费毛片app| 日韩中文字幕一区二区三区| 国产欧美日本一区视频| 欧美麻豆精品久久久久久| 成人一级片在线观看| 丝袜亚洲另类欧美| 综合色中文字幕| 久久综合网色—综合色88| 91成人免费在线| 国产一区二区视频在线| 亚洲影院久久精品| 国产精品盗摄一区二区三区| 日韩一区二区电影在线| 91福利小视频| 9久草视频在线视频精品| 国精品**一区二区三区在线蜜桃| 亚洲乱码国产乱码精品精的特点| 久久奇米777| 日韩三级在线免费观看| 欧美亚洲综合在线| 97se亚洲国产综合自在线| 狠狠色综合播放一区二区| 色综合久久久久久久久| 国内精品自线一区二区三区视频| 午夜激情综合网| 亚洲国产精品久久久男人的天堂| 中文字幕精品一区二区三区精品| 精品欧美一区二区三区精品久久| 欧美日韩午夜在线| 色屁屁一区二区| 一本久道久久综合中文字幕| 成人av在线电影| www.欧美亚洲| 中文字幕在线观看一区| 国产精品少妇自拍| 国产日韩三级在线| 日本一区二区三区免费乱视频| 精品三级在线看| 精品成人在线观看| 久久毛片高清国产| 日韩一级完整毛片| 国产成人自拍网| 国产.欧美.日韩| 成人av在线一区二区三区| 成人晚上爱看视频| 91美女在线观看| 欧美性做爰猛烈叫床潮| 在线精品视频免费播放| 欧美日韩一区二区三区免费看| 欧美在线播放高清精品| 7777精品伊人久久久大香线蕉完整版| 欧美亚洲图片小说| 91精品国产91综合久久蜜臀| 91精品国产一区二区三区| 亚洲精品一区二区三区影院| 国产三级三级三级精品8ⅰ区| 国产欧美精品一区二区色综合朱莉| 国产欧美日韩视频在线观看| 中文字幕欧美一区| 天堂蜜桃一区二区三区| 狠狠狠色丁香婷婷综合久久五月| 国产成人一区在线| 日本精品一区二区三区四区的功能| 欧美日韩久久久一区| 日韩精品一区二区三区老鸭窝| 欧美国产日本韩| 午夜亚洲福利老司机| 国产精品主播直播| 在线区一区二视频| 欧美大胆人体bbbb| 亚洲人成网站色在线观看| 免费在线观看一区二区三区| 激情综合色播五月| 99久久精品国产一区| 欧美精品xxxxbbbb| 欧美激情中文字幕| 丝袜诱惑制服诱惑色一区在线观看 | 亚洲激情综合网| 久久国产精品72免费观看| 成人免费av资源| 91精品久久久久久蜜臀| 国产精品对白交换视频| 免费亚洲电影在线| 一本久道中文字幕精品亚洲嫩| 欧美精品一区二区在线播放| 一二三区精品视频| 粉嫩欧美一区二区三区高清影视 | 五月天婷婷综合| 国产麻豆视频精品|