《操作系统》课程设计报告多道批处理调度的模拟

上传人:公**** 文档编号:552558125 上传时间:2022-07-18 格式:DOC 页数:22 大小:478.04KB
返回 下载 相关 举报
《操作系统》课程设计报告多道批处理调度的模拟_第1页
第1页 / 共22页
《操作系统》课程设计报告多道批处理调度的模拟_第2页
第2页 / 共22页
《操作系统》课程设计报告多道批处理调度的模拟_第3页
第3页 / 共22页
《操作系统》课程设计报告多道批处理调度的模拟_第4页
第4页 / 共22页
《操作系统》课程设计报告多道批处理调度的模拟_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《《操作系统》课程设计报告多道批处理调度的模拟》由会员分享,可在线阅读,更多相关《《操作系统》课程设计报告多道批处理调度的模拟(22页珍藏版)》请在金锄头文库上搜索。

1、课 程 设 计 课程名称 操作系统 _ 题目名称 多道批处理调度的模拟学生学院 计算机学院 专业班级 2007 级计科(5)班 2010年 07月 03日广东工业大学课程设计任务书一、课程设计的内容本课程设计要求模拟实现一个的多道批处理系统的两级调度。通过具体的作业调度、进程调度、内存分配等功能的实现,加深对多道批处理系统的两级调度模型和实现过程的理解。 二、课程设计的要求与数据1 要求作业从进入系统到最后完成,要经历两级调度:作业调度和进程调度。作业调度是高级调度,它的主要功能是根据一定的算法,从输入井中选中若干个作业,分配必要的资源,如主存、外设等,为它们建立初始状态为就绪的作业进程。进程

2、调度是低级调度,它的主要功能是根据一定的算法将CPU分派给就绪队列中的一个进程。2 假定某系统可供用户使用的主存空间共100KB,并有4台磁带机。主存分配采用可变分区分配方式且主存中信息不允许移动,对磁带机采用静态分配策略,作业调度分别采用先来先服务算法和最小作业优先算法,进程调度采用先来先服务和最短进程优先算法。(能增加实现更多的调度算法则可以获得加分)。3 假定“预输入”程序已经把一批作业的信息存放在输入井了,并为它们建立了相应作业表。测试数据如下:作业 到达时间 估计运行时间 内存需要 磁带机需要JOB1 10:00 25分钟 15K 2台JOB2 10:20 30分钟 60K 1台JO

3、B3 10:30 10分钟 50K 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撰写设计报告分散周四5运行、验收实验室周五五、应收集的资料及主要参考文献1 计算机操作系统, 汤小丹等 ,西安电子科技大学出版社2 操作系统实验指导书,傅秀芬,广东工业大学(自编)3 计算机操作系统教程 ( 第二版 ), 张尧学、 史美林,清华大学出版社4 现代操作系统,A.S.Tanenbaum 著,陈向群等译机械工业出版社发出任务书日期:2010年6月27日 指导教师签名:林穗计划完成日期: 2010年7月3日 基层教学单位责任人签章

5、:傅秀芬一 设计背景本次课程设计的目的是模拟实现一个多道批处理系统的两级调度。在这之前,我们的操作系统课程已经做过了四次实验,分别是进程调度,作业调度,主存空间的分配和回收,文件系统。而此次多道批处理系统的两级调度将在采用前三次实验(即进程调度,作业调度,主存空间的分配和回收)成果的基础上,对他们进行整合,完成一个完整的模拟多道批处理系统两级调度的系统程序。本课程设计将按要求规定的步骤进行:设计背景(查询资料和分析题目),概要设计,详细设计,编码,调试和测试,总结和撰写报告。二 概要设计1.要求作业从进入系统到最后完成,要经历两级调度:作业调度和进程调度。作业调度是高级调度,它的主要功能是根据

6、一定的算法,从输入井中选中若干个作业,分配必要的资源,如主存、外设等,为它们建立初始状态为就绪的作业进程。进程调度是低级调度,它的主要功能是根据一定的算法将CPU分派给就绪队列中的一个进程。2假定“预输入”程序已经把一批作业的信息存放在输入井了,并为它们建立了相应作业表。测试数据如下:作业 到达时间 估计运行时间 内存需要 磁带机需要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台3使用visual c+设计如下各功能界面。

7、放在输入井的作业列表:内存分配的情况:已经进入内存并存在的作业:已经完成的作业列表:程序设置区:包括开始时间,磁带机和内存初始值,调度算法的选择作业添加区,可以输入作业及它的各个参数。程序运行状态区。如开始,暂停,继续和重置等个人信息的显示:三 详细设计。1 相关数据结构的设计。typedef struct job/建立作业信息结构char jname10; /作业名int hour; /到达时刻时钟数int minute; /到达时刻分钟数int run; /运行时间int memory; /要求主存空间int sign; /所要磁带机数int fhour; /完成时刻时钟数int fmin

8、ute; /完成时刻分钟数int enterhour;/进入内存时时刻时钟数int enterminute;/进入内存时刻分钟数bool done;/记录是否作业已完成,完成true,否则falsejob,JOB;typedef struct jcb/作业信息结构Intnu/记录作业位于主存分区表的分区号char name10;/作业名int rtime;/运行时间int memory;/申请主存空间jcb,JCB;typedef struct spart/分区表信息结构int num;/分区序号int sadd;/分区始址int space;/分区大小char situ10;/分区状态spa

9、rt,SPART;typedef struct pcb /* 定义进程控制块PCB */ char name10; / 进程名 int ntime; / 所需要的运行时间 int stime; /剩余时间pcb,PCB;typedef struct QBNode PCB base; struct QBNode *next;QBNode,*QCB;typedef struct int tip; / 就绪队列时间片 int num; / 就绪队列成员数 QCB front; / 队头指针 QCB rear; / 队尾指针 QueueJOB JWORK5=/定义五个作业JOBA,10, 0,25,1

10、5,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,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;/磁带机数5int memory=100;/系统可用主存100KBint hour=9;/系统时间int minute=55;/9:55vector Jexe;/主存作业队列vector Jwait; /后备作业队列vector Jdone;/完成作业队列vector Jdis

11、k;/输入井作业队列vectorQjcb;/作业队列vectorQproce;/位于主存的作业队列vectorQpart;/分区表状态队列vectorQfree;/空闲分区表项vectorPronum;/完成作业的主存分区号vector:iterator pnext;/记录空闲分区表分配主存后下一个空闲位置intsystime = 0;/系统时间,初始化为0intsysmemory = 100;/主存空间100KBintpnadr = -1;/记录pnext所要指向的分区始址,-1表示无空闲分区float progressflag = 0;/进度条标志位Status InitQueue(Que

12、ue &Q)/* 构造空队列Q */ Q.front=(QCB)malloc(sizeof(QBNode); Q.rear=Q.front; if(!Q.front)return -2;Q.num=0;Q.tip=0; Q.front-next=NULL; return 1;Status EnQueue(Queue &Q,PCB &e)/* 插入元素e为Q的新的队尾元素 */ QCB p; p=(QCB)malloc(sizeof(QBNode); if(!p)return -2; p-base=e; p-next=NULL; Q.rear-next=p;Q.rear=p; return 1;Status DeQueue(Queue &Q,PCB &e)/* 若队列非空,则删除Q的队头元素,用e返回其值 */ QCB p; if(Q.front=Q.rear)return 0;/* 空队列 */ p=Q.front-next; e=p-bas

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号