2015广工操作系统课程设计报告(文档最后含源码下载地址)剖析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学生学院____ 计算机学院______ 专业班级 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.整体算法流程图

2.实现代码

详见CourseDesign.cpp

七、运行测试

1.测试数据(test.txt):

进程名到达运行主存磁带机

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

2.程序界面

1)算法组合:JFCFS&PFCFS

根据先来先服务,第一个进行调度的是JOB1,到达时间为10:00,运行时间为25分钟,周转时间为25分钟。为该作业分配内存和磁带机,磁带机由4->2,运行后得到如下图:

实际程序运行所得并不止以上数据,除此以外还有显示内存情况的图表,这里只是为了分析清楚而把主要数据给出,具体数据可运行程序所得,下面分析和以上一样都做了简化。

第二个进行调度的是JOB2,到达时间为10:20,完成时间为10:55,周转时间为35分钟,分配内存和磁带机,如下图所示:

如此类推,最后得出所有作业的运行情况:

此时按回车键返回,重新选择新的算法组合,得到各算法组合的所有作业运行情况

2)算法组合:JFCFS&PSPF:

3)算法组合:JSJF&PFCFS:

相关文档
最新文档