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

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

?? memory.java.svn-base

?? java寫的一個模擬cpu程序
?? SVN-BASE
字號:
/**
 * Memory.java
 * 
 * 
 * @author 詹道楠
 * @date 2008-5-6
 */

package execute;

import java.io.*;

public class Memory implements Parameters {
	
	private MemCell memory[] = new MemCell[MEM_SIZE];
	private int numOfProcess = 0;
	private int dap = PCB_SIZE * MAX_PROCESS_NUM;	// Data Area Pointer
	private int das = 0;	// Data Area Size
	private SynchronizedQueue readyQueue;
	private SynchronizedQueue inputQueue;
	private SynchronizedQueue printQueue;
	
	private UI ui;
	
	/**
	 * Return the ui.
	 */
	
	public UI getUi() {
	
		return ui;
	
	}

	/**
	 * Reset the ui.
	 */
	
	public void setUi(UI ui) {
	
		this.ui = ui;
	
	}
	
	public Memory(SynchronizedQueue readyQueue, SynchronizedQueue inputQueue, SynchronizedQueue printQueue) {
		
		for(int i = 0; i < memory.length; i++)
			memory[i] = new MemCell();
		this.readyQueue = readyQueue;
		this.inputQueue = inputQueue;
		this.printQueue = printQueue;
		
	}
	
	public synchronized void setMem(int i, String s) {
		System.out.println("setmem : i " + i + " " + s);
		memory[i].setContent(s);
		
	}
	
	public synchronized String getMem(int i) {

		return memory[i].getContent();
		
	}
	
	public synchronized void setProcessData(int id, int offset, String s) {
		
		int i = id * PCB_SIZE;
		if(offset < Integer.parseInt((memory[i + DBS_OFFSET].getContent())))
			memory[Integer.parseInt((memory[i + DATAPOINTER_OFFSET].getContent())) 
			       + offset].setContent(s);
		
	}
	
	public synchronized String getProcessData(int id, int offset) {
		
		int i = id * PCB_SIZE;
		if(offset < Integer.parseInt((memory[i + DBS_OFFSET].getContent())))
			return memory[Integer.parseInt((memory[i + DATAPOINTER_OFFSET].getContent())) 
			       + offset].getContent();
		else {
			System.out.println("Out of data block.");
			return null;
		}
		
	}
	
	public synchronized boolean addProcess(BufferedReader input) {
		
		if(numOfProcess >= 10) {
			ui.display("There are too many processes.");
			return false;
		}
		
		int i = das + dap;
		int j;
		
		String s;
		
		try {
			
			do {
				s = input.readLine();
				if(s == null) {
					ui.display("Not enough memory.");
				return false;
				}
			} while(s.compareToIgnoreCase("data") != 0);

			do {
				s = input.readLine();
				if((s == null) || (i >= MEM_SIZE)) {
					ui.display("Not enough memory.");
					return false;
				}
				if(s.charAt(0) == '#')
					memory[i++].setContent(s);
			} while(s.compareToIgnoreCase("enddata") != 0);
			
			j = i;

			do {
				s = input.readLine();
				if(s == null) {
					ui.display("Not enough memory.");
				return false;
				}
			} while(s.compareToIgnoreCase("begin") != 0);

			do {
				s = input.readLine();
				if((s == null) || (j >= MEM_SIZE)) {
					ui.display("Not enough memory.");
					return false;
				}
				if(s.compareToIgnoreCase("end") != 0) {
					memory[j++].setContent(s);
				}
				else
					break;
			} while(true);
			
			int k = numOfProcess * PCB_SIZE;
			memory[k++].setContent((new Integer(numOfProcess)).toString());
			memory[k++].setContent((new Integer(dap + das)).toString());
			memory[k++].setContent((new Integer(i - dap - das)).toString());
			memory[k++].setContent((new Integer(i)).toString());
			memory[k++].setContent((new Integer(j - i)).toString());
			memory[k++].setContent("#" + (new Integer(i)).toString());
			memory[k++].setContent("0");
			for(int m = 0; m < REGISTERS_SIZE - 2; m++)
				memory[k++].setContent("#0");
			
			readyQueue.inqueue(numOfProcess);
			numOfProcess++;
			das = j - dap;
			
		}
		
		catch (IOException e) {
			e.printStackTrace();
		}
		
		return true;
		
	}
	
	public synchronized boolean removeProcess(int id) {
		
		int i = id * PCB_SIZE;
		synchronized (inputQueue) {

			synchronized (printQueue) {

				synchronized (readyQueue) {

					inputQueue.update(id);
					printQueue.update(id);
					readyQueue.update(id);
					
					
					if(id < 0) {
						System.out.println("Invalid id.");
						return false;
					}
					
					else if(id >= numOfProcess) {
						System.out.println("process " + id + " is not exist.");
						return false;
					}
					
					else if(id == numOfProcess - 1) {
						das = das - Integer.parseInt(memory[i + DBS_OFFSET].getContent()) 
							- Integer.parseInt(memory[i + IBS_OFFSET].getContent());
						for(int j = i; j < i + PCB_SIZE; j++)
							memory[j].setContent(null);
					}
					
					else if(id < numOfProcess - 1) {
						int x = Integer.parseInt(memory[i + DATAPOINTER_OFFSET].getContent());
						int y = Integer.parseInt(memory[i + PCB_SIZE + DATAPOINTER_OFFSET].getContent());
						int count = das + dap - y;
						
						for(; count > 0; count--)
							memory[x++].setContent(memory[y++].getContent());
						
						count = numOfProcess - id - 1;
						int z = Integer.parseInt(memory[i + DBS_OFFSET].getContent()) 
							+ Integer.parseInt(memory[i + IBS_OFFSET].getContent());
						DataCell dc = new DataCell();
						for(int j = i + PCB_SIZE; count > 0; count--, j += PCB_SIZE) {
							memory[j].setContent((new Integer(
									Integer.parseInt(memory[j].getContent()) - 1)).toString());
							memory[j + DATAPOINTER_OFFSET].setContent((new Integer(
									Integer.parseInt(memory[j + DATAPOINTER_OFFSET].getContent()) - z)).toString());
							memory[j + INSTRUMENT_OFFSET].setContent((new Integer(
									Integer.parseInt(memory[j + INSTRUMENT_OFFSET].getContent()) - z)).toString());
							dc.setContent((memory[j + PC_OFFSET].getContent()));
							dc.setContent(dc.getContent() - z);
							memory[j + PC_OFFSET].setContent(dc.toString());
						}
						
						x = i + PCB_SIZE;
						count = (numOfProcess - id - 1) * PCB_SIZE;
						for(;count > 0; count--)
							memory[i++].setContent(memory[x++].getContent());
						
						y = (numOfProcess - 1) * PCB_SIZE;
						count = PCB_SIZE;
						for(;count > 0; count--)
							memory[y++].setContent(null);
							
					}
					
					numOfProcess--;

				}

			}

		}
		
		return true;
		
	}
	
	public synchronized boolean loadPCB(int processID, PCB pcb) {
		
		if(processID >= numOfProcess)
			return false;
		
		int i = processID * PCB_SIZE;
		
		pcb.setProcessID(Integer.parseInt(memory[i++].getContent()));
		pcb.setDataPointer(Integer.parseInt(memory[i++].getContent()));
		pcb.setDbs(Integer.parseInt(memory[i++].getContent()));
		pcb.setInstrumentPointer(Integer.parseInt(memory[i++].getContent()));
		pcb.setIbs(Integer.parseInt(memory[i++].getContent()));
		
		Registers rs = pcb.getRegisters();
		rs.getPc().setContent(memory[i++].getContent());
		rs.getPsw().setState(memory[i++].getContent());
		rs.getIr().setContent(memory[i++].getContent());
		rs.getAc().setContent(memory[i++].getContent());
		for(int j = 0; j < 8; j++)
			rs.getRn(j).setContent(memory[i++].getContent());
		
		return true;
		
	}
	
	public synchronized boolean savePCB(PCB pcb) {
		
		int i = pcb.getProcessID();
		if(i >= numOfProcess)
			return false;
		
		i = i * PCB_SIZE + 1;
		
		memory[i++].setContent((new Integer(pcb.getDataPointer())).toString());
		memory[i++].setContent((new Integer(pcb.getDbs())).toString());
		memory[i++].setContent((new Integer(pcb.getInstrumentPointer())).toString());
		memory[i++].setContent((new Integer(pcb.getIbs())).toString());
		
		Registers rs = pcb.getRegisters();
		memory[i++].setContent(rs.getPc().toString());
		memory[i++].setContent(rs.getPsw().toString());
		memory[i++].setContent(rs.getIr().toString());
		memory[i++].setContent(rs.getAc().toString());
		for(int j = 0; j < 8; j++)
			memory[i++].setContent(rs.getRn(j).toString());
		
		return true;
		
	}
	
	public String toString() {
		
		StringBuffer sb = new StringBuffer(2048);
		
		for(int i = 0; i < memory.length; i++)
			sb.append("" + i + " " + memory[i] + '\n');
		
		sb.append("numOfProcess " + numOfProcess + '\n');
		sb.append("dap " + dap + '\n');
		sb.append("das " + das + '\n');
		
		return sb.toString();
		
	}

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲精品资源在线26u| 欧美一二区视频| 91.麻豆视频| 久久综合丝袜日本网| 亚洲最大成人综合| 成人免费观看av| 欧美电影免费观看完整版| 亚洲欧美日韩精品久久久久| 精彩视频一区二区| 欧美久久久久久久久久| 亚洲激情自拍视频| 成人av在线一区二区三区| 欧美成人欧美edvon| 肉肉av福利一精品导航| 91福利视频网站| 亚洲欧洲在线观看av| 国产精品 欧美精品| 精品欧美一区二区在线观看| 奇米影视一区二区三区| 在线精品视频小说1| 亚洲欧美日韩系列| 91在线国产福利| 国产精品乱码人人做人人爱 | 国产成人免费在线观看不卡| 日韩三级av在线播放| 午夜精品一区二区三区电影天堂| 日本久久电影网| 亚洲另类在线视频| 波多野结衣欧美| 亚洲人成在线观看一区二区| 成人国产视频在线观看 | 日韩欧美中文字幕精品| 日韩专区一卡二卡| 日韩免费视频一区二区| 久久99久久精品| 国产日韩亚洲欧美综合| 国产成人精品一区二区三区四区 | 中文字幕一区二| av成人动漫在线观看| 成人欧美一区二区三区1314| 91蜜桃网址入口| 亚洲最大的成人av| 久久精品免视看| 国产suv精品一区二区三区| 中文字幕电影一区| 91麻豆自制传媒国产之光| 亚洲资源在线观看| 91精品国产一区二区三区| 精品一二线国产| 中文字幕中文字幕在线一区| 91九色最新地址| 日产精品久久久久久久性色| 久久久久久久网| 97aⅴ精品视频一二三区| 午夜精品123| 久久久亚洲综合| 在线影视一区二区三区| 日本欧美大码aⅴ在线播放| 久久久久久99久久久精品网站| eeuss鲁一区二区三区| 亚洲高清久久久| 精品国产乱码久久久久久1区2区| 成人综合婷婷国产精品久久| 一个色妞综合视频在线观看| 日韩欧美一级片| 91日韩在线专区| 男男视频亚洲欧美| 综合在线观看色| 678五月天丁香亚洲综合网| 粉嫩嫩av羞羞动漫久久久| 亚洲国产一区二区三区| 国产网红主播福利一区二区| 在线欧美日韩精品| 国产精品资源站在线| 亚洲成在线观看| 国产精品毛片大码女人| 国产精品你懂的在线欣赏| 欧美中文字幕一二三区视频| 国产一区二区三区在线观看精品| 亚洲影院在线观看| 日韩女优制服丝袜电影| 91福利视频久久久久| 国产成人精品亚洲777人妖 | 国产精品夜夜嗨| 日韩精彩视频在线观看| 亚洲欧洲国产日本综合| ww久久中文字幕| 欧美一区二区三区白人| 在线观看日韩毛片| 99久久精品一区| 成人午夜精品在线| 久久成人久久鬼色| 日日嗨av一区二区三区四区| 亚洲乱码国产乱码精品精小说| 国产欧美日韩精品在线| 久久在线免费观看| 日韩丝袜情趣美女图片| 欧美电影一区二区| 欧美亚洲国产怡红院影院| 91在线视频免费观看| 国产不卡免费视频| 福利91精品一区二区三区| 国精产品一区一区三区mba视频| 日本不卡一区二区| 日韩黄色免费电影| 亚洲v日本v欧美v久久精品| 亚洲综合一二三区| 亚洲在线视频网站| 亚洲品质自拍视频| 日韩久久一区二区| 亚洲男人的天堂网| 一区二区三区美女视频| 一区二区三区鲁丝不卡| 久久国产成人午夜av影院| 蜜桃91丨九色丨蝌蚪91桃色| 日本欧美加勒比视频| 久久国产精品第一页| 国模套图日韩精品一区二区| 国产精品18久久久久久久网站| 国产高清在线观看免费不卡| 国产91精品精华液一区二区三区| 国产高清精品在线| 91在线精品秘密一区二区| 色香蕉久久蜜桃| 欧美人伦禁忌dvd放荡欲情| 欧美精品欧美精品系列| 欧美成人激情免费网| 国产亚洲欧美日韩俺去了| 亚洲欧洲韩国日本视频| 亚洲小说欧美激情另类| 日韩精品1区2区3区| 国产在线国偷精品产拍免费yy| 国产高清亚洲一区| 色综合久久99| 日韩一区二区三区免费看 | 日本成人超碰在线观看| 国内精品免费**视频| 成人性生交大片免费看中文| 日本丶国产丶欧美色综合| 91精品国产品国语在线不卡| 久久久久久黄色| 夜夜精品浪潮av一区二区三区| 天天综合日日夜夜精品| 国产精品69毛片高清亚洲| 日韩三级在线观看| 国产精品乱码久久久久久| 亚洲成在人线在线播放| 国产剧情一区在线| 91黄视频在线观看| 欧美成人乱码一区二区三区| 中文字幕在线观看不卡| 日本午夜一本久久久综合| 成人美女在线观看| 欧美日韩精品系列| 国产精品久久综合| 日韩电影在线观看电影| 99久久伊人精品| 欧美一区二区三区四区视频| 亚洲天堂免费看| 久久er99热精品一区二区| 色猫猫国产区一区二在线视频| 欧美大片拔萝卜| 一区二区三区欧美激情| 国产精品正在播放| 56国语精品自产拍在线观看| 最新欧美精品一区二区三区| 麻豆精品在线观看| 欧美无砖专区一中文字| 国产精品天天看| 激情国产一区二区| 制服丝袜中文字幕亚洲| 亚洲欧洲中文日韩久久av乱码| 国产精品羞羞答答xxdd| 91精品国产综合久久精品性色| 中文字幕中文字幕一区| 国产成人啪免费观看软件| 日韩视频中午一区| 丝袜美腿一区二区三区| 在线视频中文字幕一区二区| 国产精品免费观看视频| 国产一区二区调教| 精品精品国产高清a毛片牛牛| 无吗不卡中文字幕| 欧美三级午夜理伦三级中视频| 中文字幕一区二区三区在线不卡| 国产精品69久久久久水密桃| 精品国产一区二区精华| 裸体健美xxxx欧美裸体表演| 91精品免费在线| 免费成人深夜小野草| 在线播放日韩导航| 日韩高清一区在线| 欧美日韩一区二区三区不卡| 国产精品伊人色| 精品久久久久久久久久久久久久久 | 国产成人免费av在线| 日韩欧美你懂的| 精品中文字幕一区二区小辣椒| 日韩午夜激情免费电影| 美女视频免费一区|