本课程为广东工业大学2016年开设的操作系统课程设计项目,采用JavaScript进行教学与实践,旨在培养学生在Web环境下操作系统的理解和编程能力。
本次课程设计任务是模拟实现一个多道批处理系统的两级调度功能。通过作业调度、进程调度以及内存分配等功能的具体实现来加深对多道批处理系统及其两级调度机制的理解。
具体而言,一个作业从进入系统到完成需要经历两阶段的调度:首先是高级的作业调度,其次是低级的进程调度。在作业调度中,根据一定的算法选择输入井中的若干个作业,并为它们分配所需资源(如内存、外设等),同时建立初始状态为就绪态的作业进程;而在进程调度环节,则依据特定策略将CPU时间分派给处于就绪队列内的某个进程。
系统参数设定如下:
- 可供用户使用的主存空间总计100KB;
- 磁带机数量固定为4台;
- 内存分配采用可变分区方式,且不允许内存中信息的移动操作;
- 对磁带机资源采取静态分配策略。
针对作业调度与进程调度分别采用了最小作业优先算法及抢占式的最短剩余时间优先算法。
测试数据包括如下几个预输入到系统中的作业:
| 作业 | 到达时间 | 预估运行时长(分钟) | 内存需求量 (KB) | 磁带机需求数量 |
|------|------------|-------------------|--------------:|-------------:|
| JOB1 | 10:00 | 25 | 15 | 2 |
| JOB2 | 10:20 | 30 | 60 | 1 |
| JOB3 | 10:30 | 10 | 50 | 3 |
| JOB4 | 10:35 | 20 | 10 | 2 |
| JOB5 | 10:40 | 15 | 30 | 2 |
设计要求在不同的调度算法控制下运行程序,并依次展示被选中的作业、内存空闲区域及磁带机使用情况。此外,还需对比不同调度策略下的作业选择顺序以及平均周转时间。
编程语言可选用C或C++等实现上述功能。