《操作系统课程设计任务书与报告.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计任务书与报告.docx(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、操作系统课程设计任务书与报告 广东工业大学课程设计任务书 题目名称多道批处理系统两级调度的模拟 学生学院计算机学院 专业班级 姓名 学号 一、课程设计的内容 本课程设计要求模拟实现一个的多道批处理系统的两级调度。通过具体的作业调度、进程调度、内存分配等功能的实现,加深对多道批处理系统的两级调度模型和实现过程的理解。 二、课程设计的要求与数据 1要求作业从进入系统到最后完成,要经历两级调度:作业调度和进程调度。 作业调度是高级调度,它的主要功能是根据一定的算法,从输入井中选中若干个作业,分配必要的资源,如主存、外设等,为它们建立初始状态为就绪的作业进程。进程调度是低级调度,它的主要功能是根据一定
2、的算法将CPU 分派给就绪队列中的一个进程。 2假定某系统可供用户使用的主存空间共100KB,并有4台磁带机。主存分配采用可变分区分配方式且主存中信息不允许移动,对磁带机采用静态分配策略,作业调度分别采用先来先服务算法和最小作业优先算法,进程调度采用先来先服务和最短进程优先算法。(能增加实现更多的调度算法则可以获得加分)。 3假定“预输入”程序已经把一批作业的信息存放在输入井了,并为它们建立了相应作业表。测试数据如下: 作业到达时间估计运行时间内存需要磁带机需要 JOB1 10:00 25分钟15K 2台 JOB2 10:20 30分钟60K 1台 JOB3 10:30 10分钟50K 3台
3、JOB4 10:35 20分钟10K 2台 JOB5 10:40 15分钟30K 2台 4分别在不同算法控制下运行设计的程序,依次显示被选中作业、内存空闲区和磁带机的情况。比较不同算法作业的选中次序及作业平均周转时间。 5选用程序设计语言:C、C等。 三、课程设计应完成的工作 1充分理解设计的任务,完成设计的基本要求。然后根据自己的基础和能力选择不同难度的算法和实现方式,以取得更高的分数。 2. 独立完成系统的分析、设计、编码、测试工作。 3完成设计报告的撰写。 4以光盘(以班为单位刻录)方式提交已调试通过的完整的相关源程序和能够运行的执行文件;提交“课程设计报告”的书面和电子两种版本。 四、
4、课程设计进程安排 五、应收集的资料及主要参考文献 1计算机操作系统,汤小丹等,西安电子科技大学出版社 2操作系统实验指导书,傅秀芬,广东工业大学(自编) 3 计算机操作系统教程( 第二版),张尧学、史美林,清华大学出版社 4 现代操作系统,A.S.Tanenbaum 著,陈向群等译机械工业出版社 发出任务书日期:2022年12月14日指导教师签名:林穗 计划完成日期: 2022年1月9日基层教学单位责任人签章:傅秀芬 课程设计 课程名称_操作系统_ 题目名称_多道批处理系统两级调度的模拟_ 学生学院_计算机学院_ 专业班级_ 学号_ 学生姓名_ 指导教师_林穗_ 2022年12月 31日 (1
5、)设计思想说明; 该课程设计综合了本学期操作系统实验的前三个的内容:进程调度、作业调度、主存空间分配与回收。因此,就在这三个实验的基础上进行了修改,协调好三个实验之间的先后、调用关系即完成。 (2)系统结构的说明; 基于第二个实验:作业调度。 首先,初始化输入井作业队列Jdisk,作业队列按时间先后顺序进入输入井作业队列Jdisk。当到达时刻达到,把Jdisk里符合条件的作业添加到后备队列Jwait,然后对Jwait实施作业调度算法调度作业。当作业符合资源要求时,即主存分配到合适的内存分区并且磁带机足够,把Jwait里的作业插入到内存里,内存队列为Jexe,并建立内存分配信息表记录内存分配情况
6、(对Qpart进行操作)。然后,为内存里每个作业建立一个进程,按照进程调度算法建立好进程队列Al,同时更新Jexe作业的序列,令其对齐于进程队列相应的进程。执行进程队列的第一个进程。当进程完成,将它从进程队头删掉,并把Jexe的首作业删掉添加到完成队列Jdone中,同时在Qpart中找到被删掉的作业并删掉它释放主存。 对于进程调度,进程先来先务采用的是非剥夺式调度,即执行顺序时按进入内存的先后顺序;短进程优先则采用剥夺式调度,即当有新进程建立,且比正在运行的进程剩余执行时间还要短时,终止正在执行的进程,把新进程添加到进程队列Al首位置。 (3)数据结构的说明; typedef int Stat
7、us; / typedef struct job /建立作业信息结构 char jname10; /作业名 int hour; /到达时刻时钟数 int minute; /到达时刻分钟数 int run; /运行时间 int memory; /要求主存空间 int sign; /所要磁带机数 int fhour; /完成时刻时钟数 int fminute; /完成时刻分钟数 int enterhour; /进入内存时时刻时钟数 int enterminute; /进入内存时刻分钟数 bool done; /记录是否作业已完成,完成true,否则false job,JOB; / typedef
8、struct jcb /作业信息结构 int num; /记录作业位于主存分区表的分区号char name10; /作业名 int rtime; /运行时间 int memory; /申请主存空间 jcb,JCB; typedef struct spart /分区表信息结构 int num; /分区序号 int sadd; /分区始址 int space; /分区大小 char situ10; /分区状态 spart,SPART; / typedef struct pcb /* 定义进程控制块PCB */ char name10; / 进程名 int ntime; / 所需要的运行时间 int
9、 stime; /剩余时间 pcb,PCB; typedef struct QBNode PCB base; struct QBNode *next; QBNode,*QCB; typedef struct int tip; / 就绪队列时间片 int num; / 就绪队列成员数 QCB front; / 队头指针 QCB rear; / 队尾指针 Queue; / JOB JWORK5= /定义五个作业 JOBA,10, 0,25,15,2,0,0,0,0,false, JOBB,10,20,30,60,1,0,0,0,0,false, JOBC,10,30,10,50,3,0,0,0,0
10、,false, JOBD,10,35,20,10,2,0,0,0,0,false, JOBE,10,40,15,30,2,0,0,0,0,false ; int disk=4; /磁带机数5 int memory=100; /系统可用主存100KB int hour=9; /系统时间 int minute=55; /9:55 Queue Al; /进程队列 vector Jexe; /主存作业队列 vector Jwait; /后备作业队列 vector Jdone; /完成作业队列 vector Jdisk; /输入井作业队列 vector Qjcb; /作业队列 vector Qproce
11、; /位于主存的作业队列 vector Qpart; /分区表状态队列 vector Qfree; /空闲分区表项 vector Pronum; /完成作业的主存分区号 vector:iterator pnext; /记录空闲分区表分配主存后下一个空闲位置 int systime = 0; /系统时间,初始化为0 int sysmemory = 100; /主存空间100KB int pnadr = -1; /记录pnext所要指向的分区始址,-1表示无空闲分区float progressflag = 0; /进度条标志位 核心算法头文件: operator.h:运行操作 Sysmain.h:全局变量及相关数据结构 (4)各主要模块的算法流程图; (5)程序运行情况; 本次课程设计采用可视化界面,便于观察与操作。 .系统已预设好5个作业供模拟。需要添加作业时,请按时间到达的先后添加,那相当于作业信息。开始时可以设定开始时间、磁带机数和内存 运行速度滑动条设定模拟运行的CPU速度,时间间隔最快为0.1s,最慢为1.2s。注意,调整速度时请先暂停运行。 .点击“开始”按钮开始运行 中途可以添加新作业。
限制150内