电子科技大学---操作系统课程实验(二)

本文介绍了作者使用Java实现操作系统进程管理的实验,包括PCB进程控制块的设计、进程状态管理、资源分配及回收,以及时间片切换等核心功能。通过Main.java、PCB.java、Log.java和TestShell.java四个主要类完成实验,详细解析了代码实现过程。
摘要由CSDN通过智能技术生成

前一篇文章贴出的是基本的实验思路以及要求,接下来我们用代码具体实现整个进程管理过程。 由于本人比较喜欢用java开发,并且java写起来比c快多了,于是就写了一个java版的。思想都是一样的,语言不重要

系统目录:

整个系统主要是三个java代码文件:

![这里写图片描述](https://img-blog.csdn.net/20170514183939198?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3ByaW5nY29kZXI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

代码分析

1.Main.java

public class Main {
    private static Scanner scanner =new Scanner(System.in);
    private static String command=null;
    public static void main(String args[]){
        command=scanner.nextLine();
        command=command.trim();
        while(command!=""){
            TestShell.exeCommand(command);
            command=scanner.nextLine();
            command=command.trim();


        }
    }
}

主函数中没有什么,就是对控制面板输入的命令进行处理

2.PCB.java

PCB(process control block),进程控制块,是我们学习操作系统后遇到的第一个数据结构描述,它是对系统的进程进行管理的重要依据,和进程管理相关的操作无一不用到PCB中的内容。一般情况下,PCB中包含以下内容:
(1)进程标识符(内部,外部)
(2)处理机的信息(通用寄存器,指令计数器,PSW,用户的栈指针)。
(3)进程调度信息(进程状态,进程的优先级,进程调度所需的其它信息,事件)
(4)进程控制信息(程序的数据的地址,资源清单,进程同步和通信机制,链接指针)

由于这个试验中用不到这么多信息,所以我们的代码中也就没有写这么多。主要包括:进程名,进程ID,父进程,优先级,子进程等的一些简要信息

    private int pid;//正在运行的process id
    private int prioirty;
    private String name;
    private String childName=null;
    private Map<String ,Integer> requestRes=new HashMap<>();
    private int parentId;
    private int childId;
    private int state;

其中requestRes表示进程请求的资源,初始化的时候都是0,表示进程刚刚创建,还没有请求资源

此外我们在定义几个表示进程状态的常量:

    public static final int STATE_RUNNING=0;
    public static final int STATE_BLOCKED=1;
    public static final int STATE_READY=2;
    public static final int STATE_DESTORYED=3;

3.Log.java
由于需要输出一些文字,包括一些必要的进程信息,还有命令处理的出错信息,其实就是嫌弃System.out.println(“”)太长了,这里我们写一个工具类,便于开发

public class Log {
    public 
  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值