广东工业大学课程设计任务书.docx

上传人:b****1 文档编号:3369785 上传时间:2023-05-05 格式:DOCX 页数:17 大小:488.30KB
下载 相关 举报
广东工业大学课程设计任务书.docx_第1页
第1页 / 共17页
广东工业大学课程设计任务书.docx_第2页
第2页 / 共17页
广东工业大学课程设计任务书.docx_第3页
第3页 / 共17页
广东工业大学课程设计任务书.docx_第4页
第4页 / 共17页
广东工业大学课程设计任务书.docx_第5页
第5页 / 共17页
广东工业大学课程设计任务书.docx_第6页
第6页 / 共17页
广东工业大学课程设计任务书.docx_第7页
第7页 / 共17页
广东工业大学课程设计任务书.docx_第8页
第8页 / 共17页
广东工业大学课程设计任务书.docx_第9页
第9页 / 共17页
广东工业大学课程设计任务书.docx_第10页
第10页 / 共17页
广东工业大学课程设计任务书.docx_第11页
第11页 / 共17页
广东工业大学课程设计任务书.docx_第12页
第12页 / 共17页
广东工业大学课程设计任务书.docx_第13页
第13页 / 共17页
广东工业大学课程设计任务书.docx_第14页
第14页 / 共17页
广东工业大学课程设计任务书.docx_第15页
第15页 / 共17页
广东工业大学课程设计任务书.docx_第16页
第16页 / 共17页
广东工业大学课程设计任务书.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

广东工业大学课程设计任务书.docx

《广东工业大学课程设计任务书.docx》由会员分享,可在线阅读,更多相关《广东工业大学课程设计任务书.docx(17页珍藏版)》请在冰点文库上搜索。

广东工业大学课程设计任务书.docx

广东工业大学课程设计任务书

广东工业大学课程设计任务书

题目名称

多道批处理系统两级调度的模拟

学生学院

计算机学院

专业班级

软件工程(4)班

姓名

陈天林

学号

3107006878

一、课程设计的内容

本课程设计要求模拟实现一个的多道批处理系统的两级调度。

通过具体的作业调度、进程调度、内存分配等功能的实现,加深对多道批处理系统的两级调度模型和实现过程的理解。

二、课程设计的要求与数据

1.要求作业从进入系统到最后完成,要经历两级调度:

作业调度和进程调度。

作业调度是高级调度,它的主要功能是根据一定的算法,从输入井中选中若干个作业,分配必要的资源,如主存、外设等,为它们建立初始状态为就绪的作业进程。

进程调度是低级调度,它的主要功能是根据一定的算法将CPU分派给就绪队列中的一个进程。

2.假定某系统可供用户使用的主存空间共100KB,并有4台磁带机。

主存分配采用可变分区分配方式且主存中信息不允许移动,对磁带机采用静态分配策略,作业调度分别采用先来先服务算法和最小作业优先算法,进程调度采用先来先服务和最短进程优先算法。

(能增加实现更多的调度算法则可以获得加分)。

3.假定“预输入”程序已经把一批作业的信息存放在输入井了,并为它们建立了相应作业表。

测试数据如下:

 

作业到达时间估计运行时间内存需要磁带机需要

JOB110:

0025分钟15K2台

JOB210:

2030分钟60K1台

JOB310:

3010分钟50K3台

JOB410:

3520分钟10K2台

JOB510:

4015分钟30K2台

4.分别在不同算法控制下运行设计的程序,依次显示被选中作业、内存空闲区和磁带机的情况。

比较不同算法作业的选中次序及作业平均周转时间。

5.选用程序设计语言:

C、C++等。

 

三、课程设计应完成的工作

1.充分理解设计的任务,完成设计的基本要求。

然后根据自己的基础和能力选择不同难度的算法和实现方式,以取得更高的分数。

2.独立完成系统的分析、设计、编码、测试工作。

3.完成设计报告的撰写。

4.以光盘(以班为单位刻录)方式提交已调试通过的完整的相关源程序和能够运行的执行文件;提交“课程设计报告”的书面和电子两种版本。

四、课程设计进程安排

序号

设计各阶段内容

地点

起止日期

1

查阅资料、分析题目、概要设计

分散

周一

2

详细设计、编码

分散

周二

3

调试

实验室

周三

4

撰写设计报告

分散

周四

5

运行、验收

实验室

周五

五、应收集的资料及主要参考文献

[1]计算机操作系统,汤小丹等,西安电子科技大学出版社

[2]操作系统实验指导书,傅秀芬,广东工业大学(自编)

[3]计算机操作系统教程(第二版),张尧学、史美林,清华大学出版社

[4]现代操作系统,A.S.Tanenbaum著,陈向群等译机械工业出版社

 

发出任务书日期:

2009年12月14日指导教师签名:

林穗

计划完成日期:

2010年1月9日基层教学单位责任人签章:

傅秀芬

课程设计

课程名称_____操作系统____

题目名称_多道批处理系统两级调度的模拟_

学生学院_____计算机学院_________

专业班级_____软件工程(4)班

学号_____3107006878

学生姓名_____陈天林

指导教师_______林穗_______________

 

2009年12月31日

 

(1)设计思想说明;

该课程设计综合了本学期操作系统实验的前三个的内容:

进程调度、作业调度、主存空间分配与回收。

因此,就在这三个实验的基础上进行了修改,协调好三个实验之间的先后、调用关系即完成。

(2)系统结构的说明;

基于第二个实验:

作业调度。

首先,初始化输入井作业队列Jdisk,作业队列按时间先后顺序进入输入井作业队列Jdisk。

当到达时刻达到,把Jdisk里符合条件的作业添加到后备队列Jwait,然后对Jwait实施作业调度算法调度作业。

当作业符合资源要求时,即主存分配到合适的内存分区并且磁带机足够,把Jwait里的作业插入到内存里,内存队列为Jexe,并建立内存分配信息表记录内存分配情况(对Qpart进行操作)。

然后,为内存里每个作业建立一个进程,按照进程调度算法建立好进程队列Al,同时更新Jexe作业的序列,令其对齐于进程队列相应的进程。

执行进程队列的第一个进程。

当进程完成,将它从进程队头删掉,并把Jexe的首作业删掉添加到完成队列Jdone中,同时在Qpart中找到被删掉的作业并删掉它释放主存。

对于进程调度,进程先来先务采用的是非剥夺式调度,即执行顺序时按进入内存的先后顺序;短进程优先则采用剥夺式调度,即当有新进程建立,且比正在运行的进程剩余执行时间还要短时,终止正在执行的进程,把新进程添加到进程队列Al首位置。

(3)数据结构的说明;

typedefintStatus;

/////////////////////

typedefstructjob//建立作业信息结构

{

charjname[10];//作业名

inthour;//到达时刻时钟数

intminute;//到达时刻分钟数

intrun;//运行时间

intmemory;//要求主存空间

intsign;//所要磁带机数

intfhour;//完成时刻时钟数

intfminute;//完成时刻分钟数

intenterhour;//进入内存时时刻时钟数

intenterminute;//进入内存时刻分钟数

booldone;//记录是否作业已完成,完成true,否则false

}job,JOB;

//////////////////////

typedefstructjcb//作业信息结构

{

intnum;//记录作业位于主存分区表的分区号

charname[10];//作业名

intrtime;//运行时间

intmemory;//申请主存空间

}jcb,JCB;

typedefstructspart//分区表信息结构

{

intnum;//分区序号

intsadd;//分区始址

intspace;//分区大小

charsitu[10];//分区状态

}spart,SPART;

/////////////////////////

typedefstructpcb

{/*定义进程控制块PCB*/

charname[10];//进程名

intntime;//所需要的运行时间

intstime;//剩余时间

}pcb,PCB;

 

typedefstructQBNode{

PCBbase;

structQBNode*next;

}QBNode,*QCB;

typedefstruct{

inttip;//就绪队列时间片

intnum;//就绪队列成员数

QCBfront;//队头指针

QCBrear;//队尾指针

}Queue;

//////////////////////

JOBJWORK[5]={//定义五个作业

{"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,false},

{"JOBD",10,35,20,10,2,0,0,0,0,false},

{"JOBE",10,40,15,30,2,0,0,0,0,false}

};

intdisk=4;//磁带机数5

intmemory=100;//系统可用主存100KB

inthour=9;//系统时间

intminute=55;//9:

55

QueueAl;//进程队列

vectorJexe;//主存作业队列

vectorJwait;//后备作业队列

vectorJdone;//完成作业队列

vectorJdisk;//输入井作业队列

vectorQjcb;//作业队列

vectorQproce;//位于主存的作业队列

vectorQpart;//分区表状态队列

vectorQfree;//空闲分区表项

vectorPronum;//完成作业的主存分区号

vector:

:

iteratorpnext;//记录空闲分区表分配主存后下一个空闲位置

intsystime=0;//系统时间,初始化为0

intsysmemory=100;//主存空间100KB

intpnadr=-1;//记录pnext所要指向的分区始址,-1表示无空闲分区

floatprogressflag=0;//进度条标志位

核心算法头文件:

operator.h:

运行操作

Sysmain.h:

全局变量及相关数据结构

 

(4)各主要模块的算法流程图;

(5)程序运行情况;

本次课程设计采用可视化界面,便于观察与操作。

.系统已预设好5个作业供模拟。

需要添加作业时,请按时间到达的先后添加,那相当于作业信息。

开始时可以设定开始时间、磁带机数和内存

运行速度滑动条设定模拟运行的CPU速度,时间间隔最快为0.1s,最慢为1.2s。

注意,调整速度时请先暂停运行。

 

.点击“开始”按钮开始运行

中途可以添加新作业。

 

运行途中可以设定调度算法。

当模拟完成,最好先暂停。

然后可以分析完成作业框里的信息。

 

单击“重置”按钮,重置信息。

单击清空,可以纯手工输入作业信息。

单击“开始”即可开始模拟。

 

(6)使用说明书(即用户手册)(内容包含如何登录、退出、读、写、等操作说明)

(1)系统默认输入五个作业信息,若要重设,单击“清空”按钮即可清空“输入井作业”信息,依提示按作业到达先后顺序添加作业到输入井。

(2)设定开始运行时间时,请设定到最早到达输入作业的时间之前。

运行途中,若要添加新作业,先按“暂停”按钮,添加的作业到达时刻应比输入井最晚到达的作业到达时刻要还要迟。

添加好后,点击“继续”按钮,模拟继续。

可手动设定磁带机台数,内存大小。

(3)“运行速度”滑动条设定模拟运行的速度,时间间隔为0.1秒至1.2秒之间,值越小,运行越快。

运行途中若要设定模拟速度时,请先按“暂停”按钮,设定好后,单击“继续”按钮即可继续运行。

(4)调度算法分两队搭配,支持随机选择,即在运行时也可以选择调度算法。

(5)模拟完成请按“暂停”按钮,便于分析“完成作业”框的信息。

分析完成可按“重置”按钮重新开始模拟。

(7)总结

有了前三次的操作系统实验的经验,本课程设计难度不大,因而就用vc++6.0做了个界面便于观测操作。

而在处理列表控件时泛起一点波澜。

列表控件是用来显示作业信息的,一开始,编译运行,模拟时,发现程序无反应,而CPU占用率却达到50%以上。

后来一想,应该是CPU运行速度太快,列表控件信息更新不过来导致的吧。

然后,我就把核心算法部分添加到定时器函数CMultSysDlg:

:

OnTimer(UINTnIDEvent),用SetTimer建立定时器,KillTimer销毁定时器,就解决了这个问题。

操作系统是一门非常重要的课程。

本次课程设计,促使我加深对操作系统的兴趣,希望能在这方面做点贡献。

参考文献:

[1]计算机操作系统(修订版),汤子瀛等,西安电子科技大学出版社,2001

[2]操作系统实验指导书,傅秀芬,广东工业大学(自编)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2