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

📄 mospcb.java

📁 本程序是在软件模拟的计算机系统上设计一个多道程序的操作系统MOS
💻 JAVA
字号:

public class MosPCB{
	byte pcb_id;								//进程ID,0-4为保留标识;
	byte[] pcb_cpu_r={48,48,48,48};	//通用寄存器,4个字节表示,用于存放机器指令,初值为0,表示尚没有指令;
	byte[] pcb_cpu_pc={48,48};		//指令计数器,2个字节表示,用于存放下一条机器指令地址,初值为0;
	char pcb_cpu_c = FinalVar.CPU_F;							//条件码寄存器,用'T'和'F'两个值指示是否转移;
	byte pcb_cpu_mode;					//CPU工作模式,分为用户态,核心态;
	MosPage pcb_cpu_ptr;				//引用页表MosPage类;
	byte pcb_state;							//进程三种状态,运行,就绪,阻塞;
	byte pcb_io_times = 0;				//记录该进程用I/O的次数;
	byte pcb_run_time = 0;				//记录该进程运行时占用CPU运行的时间;
	byte[] temp_wl = null;
	
//	tang's add
	private int haddr = 0;
	private String thename = null;
	//tang's add
	
	//每新建一个进程均要初始化进程的PCB中的ID号,CPU工作模式,页表转换表,进程状态;
	public MosPCB(byte pcb_id,byte pcb_cpu_mode,MosPage pcb_cpu_ptr,byte pcb_state){
		this.pcb_id=pcb_id;
		this.pcb_cpu_mode=pcb_cpu_mode;
		this.pcb_cpu_ptr=pcb_cpu_ptr;
		this.pcb_state=pcb_state;
		this.temp_wl = new byte[0];
	}
	
	//进程被调度时用于留现场;
	public void setPcbCpuR(byte[] pcb_cpu_r){
		for(int i=0;i<4;i++)
			this.pcb_cpu_r[i]=pcb_cpu_r[i];
	}
	
	public void setPcbCpuPc(byte[] pcb_cpu_pc){
		this.pcb_cpu_pc[0]=pcb_cpu_pc[0];
		this.pcb_cpu_pc[1]=pcb_cpu_pc[1];
	}
	
	public void setPcbCpuC(char pcb_cpu_c){
		this.pcb_cpu_c=pcb_cpu_c;
	}
	
	public void setPcbCpuMode(byte pcb_cpu_mode){
		this.pcb_cpu_mode=pcb_cpu_mode;
	}
	
	public void setPcbCpuPtr(MosPage pcb_cpu_ptr){
		this.pcb_cpu_ptr=pcb_cpu_ptr;
	}
	
	public void setPcbState(byte pcb_state){
		this.pcb_state=pcb_state;
	}
	
	public void setPcbIoTimes(){
		pcb_io_times++;
	}
	
	public void setPcbRunTime(){
		pcb_run_time++;
	}
	
	public void setTempWl(byte[] tempwl) {
		byte[] t = new byte[temp_wl.length + tempwl.length];
		int i = 0;
		for(;i < temp_wl.length;i++)
		{
			t[i] = temp_wl[i];
		}
		for(int j = 0;j < tempwl.length;j++)
		{
			t[i+j] = tempwl[j];
		}
		temp_wl = t;
	}
	
	public byte getPcbId(){
		return pcb_id;
	}
	
	public byte[] getPcbCpuR(){
		return pcb_cpu_r;
	}
	
	public byte[] getPcbCpuPc(){
		return pcb_cpu_pc;
	}
	
	public char getPcbCpuC(){
		return pcb_cpu_c;
	}
	
	public byte getPcbCpuMode(){
		return pcb_cpu_mode;
	}
	
	public MosPage getPcbCpuPtr(){
		return pcb_cpu_ptr;
	}
	
	public byte getPcbState(){
		return pcb_state;
	}
	
	public byte getPcbIoTimes(){
		return pcb_io_times;
	}
	
	public byte getPcbRunTime(){
		return pcb_run_time;
	}
	
	public byte[] getTempWl() {
		return temp_wl;
	}
	
//	tang's add
	public void setTheName(String s)
	{
		this.thename = s;
	}
	
	public String getTheName()
	{
		return this.thename;
	}
	
	public void setHaddr(int temp)
	{
		this.haddr = temp;
	}
	
	public int getHaddr()
	{
		return this.haddr;
	}
	//tang's add
	
	/*public static void main(String[] args){
		MosPCB pcb=new MosPCB();
		byte[] ty=new byte[4];
		ty=pcb.getpcb_cpu_r();
		for(int i=0;i<4;i++){
			System.out.println(ty[i]);
		}
	}*/
}

⌨️ 快捷键说明

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