实验目的
本实验分为五个小实验,实验一的目的是模拟在单处理器环境下的处理器调度,加深了解处理器调度的工作。实验二的目的是理解在不同的存储管理方式下应怎样进行存储空间的分配和回收。实验三的目的是掌握磁盘存储空间的分配和回收算法。实验四的目的是了解进程的创建过程,进一步理解进程的概念,明确进程和程序的区别。实验五的目的是了解死锁的避免,掌握银行家算法。
实验意义
通过完成本实验,深入了解操作系统的处理器调度,存储调度,进程线程调度,从而了解操作系统对各类资源的分配方式以及是如何利用各类算法提高系统对资源的利用率。
本实验有两个选题,我选择了第一题:设计一个按优先数调度算法实现处理器调度的程序。
实验原理
每个进程用一个 PCB 来代表,PCB 有进程名;要求运行时间:假设进程需要运行的单位时间数;优先数:赋予进程的优先数,调度时总是选取优先数大的进程先执行;状态:就绪和结束,用 R 表示就绪,用 E 表示结束。初始状态都为就绪状态。
实验方案
采用 Java 来完成本实验,设计了四个类分别为 Service, Main, PCB 及 PCBCreator. Main 类为输入输出相关的类。PCB 类定义了每个进程的数据结构,包含进程名,要求运行时间,优先级及状态,并且包含一个将进程信息打印出来的方法。PCBCreator 类是用来创建 PCB 对象的类。
Service 类包含一个用来表示就绪队列的存储 PCB 对象的链表,包含一个进程运行的方法,每次运行将就绪队列的第一个进程的优先级和要求运行时间减 1,再判断该进程的要求运行时间是否为 0,为零则从就绪队列删除。运行一次后调用排序方法根据优先级进行排序。
源码和文档都托管在了【WRITE-BUG数字空间】上面了,有需要的可自取~