-1

我的 OS 类作业的一部分要求我在 Java 中创建一个具有各种字段的 Process Control Block 类。我已经创建了包含所有不同字段的类,例如名称、状态、到达时间等。但是当被要求这样做时,我被卡住了:

  • 寄存器设置值(“RegisterSet”类的对象,包含以下字段:XAR、XDI、XDO、PC、IR、EMIT、RR、PSW、R0、R1、R2、R3、R4、R5、R6、R7)。

似乎我必须创建另一个名为 RegisterSet 的类,其中包含所有这些不同的字段,但是我一直坚持我应该如何做到这一点,然后是如何在我的 PCB 类中创建设置值......

任何帮助将不胜感激。

这就是我所拥有的。我有 RegisterSet 类,每个 Register 都有 setter 和 getter,然后在我的 PCB 类中,我有一个 setValues 函数,如下所示:

public void setValues(String XAR,
                        String XDO, String PC, String IR,
                        String EMIT, String RR, String PSW,
                        String R0, String R1, String R2,
                        String R3, String R4, String R5, String R6,
                        String R7){
    RegisterSet reg = new RegisterSet();
    reg.setXAR(XAR);
    reg.setXDO(XDO);
    reg.setPC(PC);
    reg.setIR(IR);
    reg.setEMIT(EMIT);
    reg.setRR(RR);
    reg.setPSW(PSW);
    reg.setR0(R0);
    reg.setR1(R1);
    reg.setR2(R2);
    reg.setR3(R3);
    reg.setR4(R4);
    reg.setR5(R5);
    reg.setR6(R6);
    reg.setR7(R7);
}

然后我有运行我在 RegisterSet 类中创建的 ToString() 的 getValues 方法:

public String getValues(){
    RegisterSet reg = new RegisterSet();
    return reg.ToString();
}

最后,这是我试图在我的 sim 中运行的内容:

//Remaining are Registers
String xar = st.nextToken();
String xdi = st.nextToken();
String xdo = st.nextToken();
String pc = st.nextToken();
String ir = st.nextToken();
String emit = st.nextToken();
String rr = st.nextToken();
String psw = st.nextToken();
String r0 = st.nextToken();
String r1 = st.nextToken();
String r2 = st.nextToken();
String r3 = st.nextToken();
String r4 = st.nextToken();
String r5 = st.nextToken();
String r6 = st.nextToken();
String r7 = st.nextToken();
PCB.setValues(xar, xdi, xdo, pc, ir, emit, rr, psw,
        r0, r1, r2, r3, r4, r5, r6, r7);

我尝试编译时得到的错误是这样的:

 required:     String,String,String,String,String,String,String,String,String,String,String,String,String,String,String
 found: String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String
 reason: actual and formal argument lists differ in length

基本上,我从许多进程中读取不同的细节,将数据填充到 PCB 中,然后将 PCB 添加到进程表中,这实际上只是一个 ArrayList。之后,我遍历 ArrayList,并打印出每个进程。

4

1 回答 1

0

您是否尝试过类似的方法:

class PCB {
    ...
    RegisterSet registerSet = new RegisterSet();

    public RegisterSet getRegisterSet() { return this.registerSet; }
    public void setRegisterSet(RegisterSet rs) { this.registerSet = rs; }
    ...
}

这回答了您的直接问题,但不知何故,我不确定您要问的是什么。

于 2012-09-18T00:28:37.773 回答