📄 mospcb.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 + -