⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iogate.java

📁 只是一个简单模拟操作系统
💻 JAVA
字号:
/* * IOGate.java * * Created on 2006年3月15日, 下午9:53 * *Each IODevice have a IOGate */package os.iodevice;/** * * @author Vernkin */import os.process.*;public class IOGate{        /**IOGate name**/        String name;    	/**For outer programe,whether the IO devides is busy or not**/	private boolean isFree = true;		/**For IODriver,whether finish the last task**/	private boolean isFinished = false;		/**The basic unit of data is int**/	private int data;                private int interrupt_num;		/**The MyProcess Object**/	private MyProcess mp;                        private static IOGate printer = new IOGate("Printer");        private static IOGate console = new IOGate("Console");			/**Empty Constructor**/	private IOGate(String name){            this.name = name;            isFree = true;            isFinished = false;	}                public static IOGate getInstance(String device_name){            if(device_name.equalsIgnoreCase("Printer"))                return printer;            else if(device_name.equalsIgnoreCase("Console"))                return console;            else{                System.out.println("Init IOGate : Unknown IO Device "+device_name);                System.exit(1);                return null;            }        }			/***************************************************************	******************* For Outer Program **************************                         	****************************************************************/			/**Print a message to certain io devide	 *	 *@param p determine that io device	 *	 *@return If operates succesfully,return true,else false	 *(Operates succesfully means change the ioGate status)	 ***/	public boolean managerOutput(MyProcess p,int data,int num){                interrupt_num = num;                mp = p;		this.data = data;		isFree = false;				return true;	}		public boolean managerReadyToUse(){		return isFree && !isFinished;	}			/**Whether the formal work is not responed**/	public boolean managerRemainWork(){		return isFinished;	}			public void managerResponseOK(){		isFinished = false;		System.out.println(name + " of manager response OK!");	}			/***************************************************************	*********************** For IODriver ***************************                         	****************************************************************/		/**Whether **/	public boolean driverHaveTask(){		return !isFree && !isFinished;	}					public void driverSetData(int data){		this.data = data;		driverFinishWork();	}			/**finish the work at last**/	public void driverFinishWork(){            isFree = true;            isFinished = true;            System.out.println(name+" finish work");	}                public String getIOGateName(){            return name;        }                public int getInterruptNum(){            return interrupt_num;        }                public MyProcess getProcess(){		return mp;	}               			public int getData(){		return data;		}                public void rest(int millsec){            if(millsec<5000)                millsec = 5000;            try{         //       System.out.println("IOGate Rest");                Thread.sleep(millsec);                      }catch(InterruptedException e){                System.out.println(e.getMessage());            }        }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -