成 绩
操作系统课程设计
学生学院____ 计算机学院______ 专业班级 13级计科9 学 号 学生姓名 指导教师 李敏
2015 年 12 月 29 日
一、课程设计介绍
设计模拟一个实现多道批处理系统的两级调度。通过具体的作业调度、进程调度、内存分配等功能的实现,加深对多道批处理系统的两级调度模型和实现过程的理解。 作业从进入系统到最后完成,要经历两级调度:作业调度和进程调度。作业调度是高级调度,它的主要功能是根据一定的算法,从输入井中选中若干个作业,分配必要的资源,如主存、外设等,为它们建立初始状态为就绪的作业进程。进程调度是低级调度,它的主要功能是根据一定的算法将CPU分派给就绪队列中的一个进程。 在本次课程设计中假定系统可供用户使用的主存空间共100KB,并有4台磁带机。主存分配采用可变分区分配方式且主存中信息不允许移动,对磁带机采用静态分配策略,作业调度分别采用先来先服务算法和最小作业优先算法,进程调度则采用先来先服务和最短进程优先算法。
二、课程设计环境
1. 计算机及操作系统:PC机,WindowsXP系统 2. 程序设计使用工具:Microsoft VisualC++ 6.0 3. 程序设计语言:C语言
三、 课程设计思想
假定“预输入”程序已经把一批作业的信息存放在输入井了,并为它们建立了相应作业表。
测试数据如下:
作业 到达时间 估计运行时间 内存需要 磁带机需要 JOB1 10:00 25分钟 15K 2台 JOB2 10:20 30分钟 60K 1台 JOB3 10:30 10分钟 50K 3台 JOB4 10:35 20分钟 10K 2台 JOB5 10:40 15分钟 30K 2台
本次课程设计采用的是两个作业调度算法:先来先服务算法和短作业优先算法,两个进程调度算法:先来先服务算法,短进程优先算法。系统根据所选算法组合对输入系统的作业进行两级调度(作业调度,进程调度)。分别在不同算法控制下运行设计的程序,依次显示被选中作业、内存空闲区和磁带机的情况,输出不同算法作业的选中次序及作业平均周转时间。作业的数据初始化输入通过读取文件这种方式进行导入。系统运行是通过设置指针来循环运作。
四、 系统结构说明
系统的各个模块之间的关系如下:
五、 数据结构说明
1.定义一个显示时间的结构体,成员包括时、分
struct time { int hour; //时 int min; //分 };
2.建立作业控制块,具体成员如下所示: struct jcb {
char name[10]; //进程名 struct time arr_time; //到达时间
struct time ent_time; //进入内存时间 struct time sta_time; //开始时间 struct time fin_time; //结束时间 int run_time; //估计运行时间 int tr_time; //周转时间
int men; //主存需要 int mac; //磁带机 int sta; //状态位 struct jcb* next; };typedef struct jcb JCB;
3.进程的链接结构体,成员如下所示: struct link {
char name[10]; //进程名 struct time arr_time; //到达时间
struct time ent_time; //进入内存时间 struct time sta_time; //开始时间 struct time fin_time; //结束时间 int run_time; //估计运行时间 int tr_time; //周转时间 int addr; //起始地址 int len; //分区大小 int mac; //磁带机
int state; //状态位,0为空闲,1为被使用 struct link *f; //前指针 struct link *b; //后指针 } ;
六、 主要调度算法思想流程图
1.整体算法流程图
开始
选择两级调度的方式 JFCFS && PFCFS JFCFS && PSPF JSJF && PFCFS JSJF && PSPF 为作业建立链表 依据所选择的算法对链表进行排序 作业调度 依据所择算法进行进程调度
2.实现代码
详见CourseDesign.cpp
释放并合并内存 输出最终调度结果 结束 七、 运行测试
1. 测试数据(test.txt):
进程名 到达 运行 JOB1 10:00 25 15 JOB2 10:20 30 60 JOB3 10:30 10 50 JOB4 10:35 20 10 JOB5 10:40 15 30
2.程序界面
主存 2 1 3 2 2
磁带机
1) 算法组合:JFCFS&PFCFS
根据先来先服务,第一个进行调度的是JOB1,到达时间为10:00,运行时间为25分钟,周转时间为25分钟。为该作业分配内存和磁带机,磁带机由4->2,运行后得到如下图: