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

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

?? mosp1.java

?? 一個用JAVA語言編寫的MOS多道程序操作系統
?? JAVA
字號:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.LinkedList;

//進程P1,主要實現將作業送至輸入井,同時啟動通道1和通道3;

public class MosP1{
	int job_end=0;							//批作業結束地址;
	byte job_count=0;						//批作業中的作業個數;
	byte job_tot_length=0;					//用戶作業的大小(以字為單位);
	int job_pro_start=0;					//用戶作業程序區開始地址;
	int job_pro_end=0;						//用戶作業程序區結束地址;
	int job_data_start=0;					//用戶作業數據區開始地址;
	int job_data_end=0;						//用戶作業數據區結束地址;
	int job_line_start=0;
	int job_line_end=0;
	int job_begin_start = 0;
	int p1_interrupt = 0;				//"0"為檢查是否還有作業;"1"為檢查通道1是否為忙;
//											"2"檢查通道1是否啟動完;"3"檢查通道3是否為忙;
//											"4"檢查通道3是否啟動完;"5"檢查是否還有下一頁;
	int page_size = 0;
	byte[] jcb_name = new byte[4];
	byte[] jcb_supposed_time = new byte[4];
	byte[] jcb_supposed_output = new byte[4];
	String tot_job_word="";					//用于保存從文件讀出的所有字符串;
	byte tom[]=new byte[25];				//用于保存逐次從文件讀出的字符;
	String s;								//用于保存逐次從文件讀出的字符串;
	byte page_tab[][][]=new byte[10][10][4];//每個作業最多10頁,每頁為10字,每字4個字節;
	int b;
	byte reg[]=new byte[40];
	MosMM mm = null;
	MosDisk disk = null;
	MosBlock mb = null;
	byte[] page_table = null;
	MosJCB mj = null;
	MosChannel1 chan1 = null;
	MosChannel3 chan3 = null;
	long chan1_time = 0;
	long chan3_time = 0;
	LinkedList que_jcb_ready = null;
	MosVar var = null;
	byte[] mm_data = new byte[4];
	byte[] disk_data = new byte[40];
	String s1 = "";
	int haddr = 0;
	
	public MosP1(MosMM mm,MosDisk disk,MosChannel1 chan1,MosChannel3 chan3,LinkedList que_jcb_ready,
			MosVar var) {
		this.mm = mm;
		this.disk = disk;
		this.chan1 = chan1;
		this.chan3 = chan3;
		this.que_jcb_ready = que_jcb_ready;
		this.var = var;
	}
	
	public String p1Read(String s1) {
//		讀取作業文件并將字符串保存于tot_job_word中;
		try {
			tot_job_word = "";
			File f=new File(s1);
			FileInputStream refi=new FileInputStream(f);
			while((b=refi.read(tom,0,25))!=-1){
				s=new String(tom,0,b);
				tot_job_word=tot_job_word+s;				
			}
			refi.close();
		} catch (IOException e) {
			// TODO: handle exception
		}
		//		將作業中字符串"$JOE"的首地址保存于job_end,以便檢測是否是批作業中的最后一個作業;
		job_end=tot_job_word.indexOf("$JOE");
		var.p1_switch = 1;
		return s;
	}
	
	public void p1Start() {
//		若有作業輸入,則執行P1;
		if(var.p1_switch != 0) {
//			若p1_interrupt為0,則檢查是否為最后一條作業;
			if(this.p1_interrupt == 0) {
		//		檢測條件為字符串"$JOE"與"$POE"或"$DOE"的首地址相差6個unicode字符;
					if((job_end!=(job_data_end+5))&&(job_end!=(job_pro_end+6))){		
							
			//		用戶作業程序大小(以字為單位);
					byte job_pro_length=0;		
							
			//		用戶作業數據大小(以字為單位);
					byte job_data_length=0;			
						
			//		對每個保存作業的數組進行初始化;
					for(int i=0;i<10;i++){
						for(int j=0;j<10;j++){
							for(int k=0;k<4;k++)
								page_tab[i][j][k]=-1;
						}
					}
							
			//		每個作業程序區從"$POB"開始,到"$POE"結束,每次檢測均以上一程序區結束首地址為檢測新程序區
			//		的起始地址
					job_pro_start=job_pro_end;
					job_pro_end=job_pro_end+1;				
							
					job_pro_start=tot_job_word.indexOf("$POB",job_pro_start);
					job_pro_end=tot_job_word.indexOf("$POE",job_pro_end);
							
			//		已測試;
					job_begin_start =tot_job_word.indexOf("$BEGIN",job_begin_start+1);
					for(int i = 0;i < 4;i++) {
						jcb_name[i] = (byte)tot_job_word.charAt(job_begin_start+i+7);
						jcb_supposed_time[i] = (byte)tot_job_word.charAt(job_begin_start+i+12);
						jcb_supposed_output[i] = (byte)tot_job_word.charAt(job_begin_start+i+17);
					}
							
					haddr = -1;		
			//		讀出每行的指令,用字節數組保存每一條指令
					job_line_end=job_line_start=job_pro_start;
					while(job_pro_end!=(job_line_start+7)){
						job_line_start=job_line_end;
						job_line_start=tot_job_word.indexOf(' ',job_line_start+1);
						job_line_end=tot_job_word.indexOf(' ',job_line_start+1)-2;
						char chartest =  tot_job_word.charAt(job_line_start+1);
						if(((byte)tot_job_word.charAt(job_line_start+1) != MosChar.H)&&((byte)tot_job_word.charAt(job_line_start+1) != MosChar.AT))
						{++haddr;}
						for(int i=0;i<4;i++){
							if((job_line_end-job_line_start-i-1)>0){
							    page_tab[job_pro_length/10][job_pro_length%10][i]=(byte)tot_job_word.charAt(job_line_start+i+1);
							}
							else{
								page_tab[job_pro_length/10][job_pro_length%10][i]=0;							
							}				
						}
							job_pro_length++;
						}
											
			//		作業數據區從"$DATA"開始,到"$DOE"結束,每次檢測均以上一數據區結束首地址為檢測新數據區的
			//		起始地址
					job_data_start=tot_job_word.indexOf("$DATA",job_data_start);
					job_data_end=tot_job_word.indexOf("$DOE",job_data_end);
							
			//		檢測當前作業是否有數據區,檢測條件為若存在數據區,則字符串"$POE"與"$DATA"的首地址相差6個
			//		unicode字符
						if(job_data_start==(job_pro_end+6)){
			//			保存數據區中的數據前加'*'以便識別程序中數據區的開始;
						page_tab[(job_pro_length)/10][(job_pro_length)%10][0]=(byte)'*';					
						for(int i=1;i<4;i++)
							page_tab[(job_pro_length)/10][(job_pro_length)%10][i]=0;
									
			//			若本作業有數據區,則應該讀入輸入井,每個作業的數據區從job_data_start開始至job_data_end
			//			結束,星號(*)前一個空格地址至"$DOE"首地址相差4個UNICODE字符,以此來判斷本數據區的數據是否
			//			讀完,數據包括'*'
						job_line_end=job_line_start=job_data_start;
						while(job_data_end!=(job_line_start+4)){
							job_line_start=job_line_end;
							job_line_start=tot_job_word.indexOf(' ',job_line_start);
							job_line_end=tot_job_word.indexOf(' ',job_line_start+1);
							for(int i=0;i<4;i++){	
								page_tab[(job_pro_length+job_data_length+1)/10][(job_pro_length+job_data_length+1)%10][i]=
									(byte)tot_job_word.charAt(job_line_start+i+1);
								if(((char)page_tab[(job_pro_length+job_data_length+1)/10][(job_pro_length+job_data_length+1)%10][0])=='*'){											//遇到"*"結束;并將其余三個字節置"0";
									page_tab[(job_pro_length+job_data_length+1)/10][(job_pro_length+job_data_length+1)%10][1]=
									page_tab[(job_pro_length+job_data_length+1)/10][(job_pro_length+job_data_length+1)%10][2]=
									page_tab[(job_pro_length+job_data_length+1)/10][(job_pro_length+job_data_length+1)%10][3]=0;
									break;		
								}					
							}
							job_data_length++;
						}
																									
						job_data_start=job_data_end;
						job_data_end=job_data_end+1;
									
//						System.out.println("data has come "+job_data_length);
					}
					else{
						job_data_length=0;
//						System.out.println("not data come "+job_data_length);
					}
							
					job_tot_length = (byte)(job_pro_length+job_data_length);
							
					
					this.p1_interrupt = 1;
					this.page_size = 0;
				}
				else {
					tot_job_word = "";
					var.p1_switch = 0;
					job_end=0;
					job_count=0;
					job_tot_length=0;
					job_pro_start=0;
					job_pro_end=0;
					job_data_start=0;
					job_data_end=0;	
					job_line_start=0;
					job_line_end=0;
					job_begin_start = 0;
					p1_interrupt = 0;
					page_size = 0;
				}
			}
//			當p1_interrupt為1時對輸入井進行檢查;
			if(this.p1_interrupt == 1) {
				this.page_table = disk.diskMalloc((byte)(job_tot_length/10+1), FinalVar.IN_BUFFER_ADDR);	
				if(this.page_table != null) {
					mb = new MosBlock(this.page_table);
					this.page_size = 0;
					this.p1_interrupt = 2;
				}				
			}
//			p1_interrupt為2時檢查通道1是否為忙;
			if(this.p1_interrupt == 2) {
				if(chan1.getMosChst() == FinalVar.CHST_STAT_FREE) {
					chan1.setMosChst(FinalVar.CHST_STAT_BUSY);
					for(int j=0;j<10;j++){	
						if(page_tab[this.page_size][j][0]==-1)
							break;					
						for(int k=0;k<4;k++){
							reg[j*4+k]=page_tab[this.page_size][j][k];
						}
					}
					this.chan1_time = var.getTime();
					this.p1_interrupt = 3;
				}
			}
//			p1_interrupt為3表示當本進程啟動通道1后,檢測是否三個時間片已到,若到達則傳送數據;
			if(this.p1_interrupt == 3) {
				if(var.getTime() >= (this.chan1_time + 3)) {
					chan1.startChannel1(reg);
					chan1.setMosChst(FinalVar.CHST_STAT_FREE);
					this.p1_interrupt = 4;
				}
			}
//			p1_interrupt為4表示檢查通道3是否為忙;
			if(this.p1_interrupt == 4) {
				if(chan3.getMosChst() == FinalVar.CHST_STAT_FREE) {
					chan3.setMosChst(FinalVar.CHST_STAT_BUSY);
					this.chan3_time = var.getTime();
					this.p1_interrupt = 5;
				}
			}
//			p1_interrupt為5表示當本進程啟動通道3后,檢測是否一個時間片已到,若到達則傳送數據;
			if(this.p1_interrupt == 5) {
				if(var.getTime() >= (this.chan3_time + 1)) {
					chan3.startChannel3(FinalVar.CHST3_READ, FinalVar.KB_BUFFER_ADDR, page_table[this.page_size]);
					this.page_size++;
					chan3.setMosChst(FinalVar.CHST_STAT_FREE);
					for(int l = 0;l < 40;l++) {
						reg[l] = 0;
					}
					this.p1_interrupt = 6;
				}
			}
//			p1_interrupt為6表示是否已傳送完一個作業到輸入井;
			if(this.p1_interrupt == 6) {
				if(this.page_size == (job_tot_length/10+1)) {
					mj = new MosJCB(job_count,jcb_name,jcb_supposed_time,jcb_supposed_output,mb);
					mj.setHaddr(haddr);
					que_jcb_ready.add(mj);
					job_count++;
					this.p1_interrupt = 0;
				}
				else {
					this.p1_interrupt = 2;
				}
			}
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美mv日韩mv国产网站app| 日韩丝袜情趣美女图片| 国内精品写真在线观看| 奇米影视一区二区三区| 无码av中文一区二区三区桃花岛| 亚洲综合色婷婷| 亚洲一二三四久久| 亚洲成a人片在线不卡一二三区| 亚洲综合色噜噜狠狠| 亚洲午夜视频在线观看| 亚洲午夜在线电影| 青青草97国产精品免费观看| 免费精品视频在线| 国产成人午夜99999| 99re视频精品| 欧美久久久久久久久久| 69精品人人人人| 精品久久久久久久久久久久久久久久久 | 欧美精品一区二区三区视频| 日韩免费看网站| 中文字幕不卡的av| 夜色激情一区二区| 精品一区二区三区在线观看 | 精品国产亚洲在线| 国产欧美精品日韩区二区麻豆天美| 国产日韩三级在线| 亚洲美女免费视频| 日韩国产高清在线| 国产99久久久国产精品免费看| 97国产精品videossex| 精品视频一区二区三区免费| 欧美电影免费观看高清完整版在线观看| 26uuu成人网一区二区三区| 欧美经典三级视频一区二区三区| 亚洲精品v日韩精品| 麻豆一区二区三| 粉嫩13p一区二区三区| 色婷婷久久久亚洲一区二区三区 | www.亚洲色图| 日韩一区二区三区四区| 中文字幕av一区二区三区| 午夜国产精品一区| 成人高清在线视频| 日韩欧美在线网站| 亚洲一级二级在线| 国产成人综合亚洲91猫咪| 欧美三级资源在线| 国产精品伦一区二区三级视频| 午夜精品久久久久久久蜜桃app| 国产成人精品免费网站| 欧美精品在欧美一区二区少妇| 欧美精品一区二区高清在线观看 | 亚洲午夜精品17c| 国产激情视频一区二区三区欧美| 欧洲色大大久久| 国产亚洲美州欧州综合国| 天天综合色天天| 欧美做爰猛烈大尺度电影无法无天| 久久免费的精品国产v∧| 手机精品视频在线观看| 在线观看三级视频欧美| 国产喷白浆一区二区三区| 久久精品国产99| 欧美一区二区视频网站| 香港成人在线视频| 4438x成人网最大色成网站| 亚洲综合无码一区二区| 色综合激情久久| 亚洲精品网站在线观看| 91小视频免费看| 亚洲视频在线一区| 91丝袜高跟美女视频| 国产精品久久久久久福利一牛影视| 国产精品系列在线播放| 亚洲精品一区二区三区在线观看 | 亚洲色欲色欲www| 国产suv精品一区二区三区| 久久久久久久综合色一本| 久久99精品国产.久久久久久| 日韩一区二区三| 久久精品国产精品亚洲精品| 欧美一卡2卡3卡4卡| 日本色综合中文字幕| 日韩久久精品一区| 国产高清亚洲一区| 国产精品久久久久久福利一牛影视 | 亚洲一区在线电影| 欧美日韩欧美一区二区| 亚洲激情欧美激情| 91精品国产综合久久香蕉的特点| 男人的天堂亚洲一区| 亚洲色大成网站www久久九九| www.日韩av| 夜夜亚洲天天久久| 日韩一二在线观看| 国产一区二区三区四区五区美女| 欧美韩日一区二区三区四区| 成人黄色大片在线观看| 亚洲综合男人的天堂| 日韩欧美黄色影院| 成人sese在线| 亚洲成a人v欧美综合天堂下载 | 91精品国产综合久久福利| 激情图区综合网| 国产精品不卡在线观看| 欧美视频在线播放| 国产一区欧美一区| 亚洲国产一区二区三区青草影视| 日韩精品一区二区三区视频在线观看| 狠狠色丁香久久婷婷综合_中| 18成人在线观看| 91精品国产综合久久精品图片| 国产一区二区三区香蕉| 亚洲一区日韩精品中文字幕| 精品国产麻豆免费人成网站| 99re6这里只有精品视频在线观看| 午夜精品影院在线观看| 国产亚洲成av人在线观看导航| 欧美网站一区二区| 成人av小说网| 久久激五月天综合精品| 一二三区精品视频| 国产精品福利在线播放| 日韩欧美国产1| 91论坛在线播放| 国产麻豆精品视频| 麻豆精品在线观看| 偷拍自拍另类欧美| 亚洲日本免费电影| 国产精品网友自拍| 久久久精品免费网站| 91精品国模一区二区三区| 色婷婷久久一区二区三区麻豆| 国产精品伊人色| 久久国产精品露脸对白| 亚洲成av人片| 一区二区三区四区五区视频在线观看 | 国产精品一二三区| 精品夜夜嗨av一区二区三区| 天堂蜜桃91精品| 一区二区三区中文字幕电影| 国产欧美精品区一区二区三区| 精品国产a毛片| 日韩一级免费一区| 日韩午夜精品电影| 欧美一级淫片007| 91精品国产91久久久久久一区二区 | 亚洲女同一区二区| 亚洲日本免费电影| 曰韩精品一区二区| 亚洲国产综合在线| 午夜精品福利一区二区三区蜜桃| 懂色av噜噜一区二区三区av| 国产一区二区三区观看| 精品一区二区三区不卡| 久久99精品久久久久久| 国内精品自线一区二区三区视频| 六月丁香综合在线视频| 另类欧美日韩国产在线| 精品一区二区免费在线观看| 久久66热偷产精品| 国产成人精品影院| 成人深夜视频在线观看| 91在线观看免费视频| 91免费版在线看| 欧美影视一区二区三区| 欧美日韩一区二区在线观看视频 | 色婷婷av一区二区三区gif| av电影在线观看一区| 91黄色免费网站| 欧美精品在线观看播放| 日韩一区二区三| 国产日产欧美一区二区三区| 国产精品不卡视频| 日韩专区欧美专区| 黄色资源网久久资源365| 成人黄色小视频| 欧美午夜片在线看| 久久久久久**毛片大全| 国产精品国产三级国产普通话99| 亚洲国产精品一区二区尤物区| 婷婷丁香久久五月婷婷| 国产精品99久久久久久久女警 | 色婷婷狠狠综合| 在线不卡免费av| 中文成人综合网| 丝瓜av网站精品一区二区| 国产成人亚洲综合a∨婷婷| 欧美伊人精品成人久久综合97| 日韩欧美区一区二| 亚洲欧美激情插| 国产真实乱对白精彩久久| 色成年激情久久综合| 久久午夜免费电影| 亚洲午夜羞羞片| 成人国产免费视频| 精品少妇一区二区三区日产乱码| 中文字幕在线观看一区| 麻豆精品在线播放| 欧美另类久久久品|