操作系统课程设计学生用表.docx
- 文档编号:9805632
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:24
- 大小:163.94KB
操作系统课程设计学生用表.docx
《操作系统课程设计学生用表.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计学生用表.docx(24页珍藏版)》请在冰点文库上搜索。
操作系统课程设计学生用表
西安文理学院
计算机科学系
课程设计报告
设计名称:
操作系统课程设计
设计题目:
作业调度模拟
学生学号:
14101080234
专业班级:
08级计科2班
学生姓名:
学生成绩:
指导教师(职称):
孙少波(讲师)
课题工作时间:
2010.5.31至2010.6.11
说明:
1、报告中的任务书、进度表由指导教师在课程设计开始前填写并发给每个学生;四、五两项(中英文摘要)由学生在完成综合设计后填写。
2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩。
3、指导教师评语一栏由指导教师就学生在整个设计期间的平时表现、设计完成情况、报告的质量及答辩情况,给出客观、全面的评价。
4、所有学生必须参加课程设计的答辩环节,凡不参加答辩者,其成绩一律按不及格处理。
答辩小组成员应由2人及以上教师组成。
5、报告正文字数一般应不少于3000字,也可由指导教师根据本门综合设计的情况另行规定。
6、平时表现成绩低于6分的学生,取消答辩资格,其本项综合设计成绩按不及格处理。
计算机科学系课程设计任务书
学生姓名
学号
专业
班级
设计题
目
作业调度模拟
内容概要:
通过对作业概念的理解,作业控制块的运用,以及理解批处理系统如何组织作业、管理作业、调度作业,采用短作业优先的作业调度算法,实现对作业调度的模拟。
文献资料:
计算机操作系统(第三版)汤小丹梁红兵哲凤屏汤子瀛编著西安电子科技大学出版社
计算机操作系统(第三版)费翔林骆斌谢立参编著高等教育出版社2003
操作系统实验指导任爱华李鹏刘方毅编著清华大学出版社
C++语言基础教程吕凤翥编著清华大学出版社
操作系统教程张坤姜立秋赵慧然大连理工大学出版社
操作系统(国外计算机科学经典教材)(美国)贾德博尔清华大学出版社
设计要求:
1.加深对作业概念地理解。
2.掌握短作业优先调度算法。
3.深入了解批处理系统如何组织作业、管理作业和调度作业。
4.了解作业控制块的作用,以及作业控制块的内容和组织方式。
工作期限:
设计工作自2010年5月31日至2010年6月11日止。
指导教师:
系主任:
日期:
2010年5月28日
计算机科学系课程设计进度安排表
专业:
姓名:
学号:
日期
内容
备注
5月31日~
6月1日
分析题目,查阅相关资料
6月2日~
6月3日
拟定整体方案,编写程序
6月4日~
6月6日
程序编写
6月7日~
6月8日
组内讨论
6月9日~
6月10日
调试程序
6月11日~
6月11日
上交报告
6月12日~
6月12日
完善报告
6月13日~
6月13日
完善报告
6月14日~
6月14日
完善报告
6月16日~
6月16日
完善报告
6月17日~
6月17日
完善报告
6月18日~6月19日
准备答辩
6月20日~6月20日
准备答辩
6月22日~6月22日
答应报告,进行答辩前的最后准备
6月23日~6月23日
进行答辩
指导教师签名:
年月日
指导教师评语
指导教师:
(签字)
日期:
年月日
答辩记录表
学生姓名:
学号:
班级:
答辩地点:
答辩内容记录:
答辩成绩
合计
分值
各项分值
评分标准
实际得分
合计得分
备注
25
10
在规定时间内能就所设计的内容进行阐述,言简意明,重点突出,论点正确,条理清晰。
15
在规定时间内能准确、完整、流利地回答教师所提出的问题。
答辩小组成员(签字):
2010年6月11日
成绩评定表
学生姓名:
学号:
班级:
类别
合计
分值
各项分值
评分标准
实际得分
合计得分
备注
平时表现
10
10
按时参加设计指导,无违反纪律情况。
完成情况
30
20
按设计任务书的要求完成了全部任务,能完整演示其设计内容,符合要求。
10
能对其设计内容进行详细、完整的介绍,并能就指导教师提出的问题进行正确的回答。
报告质量
35
10
报告文字通顺,内容翔实,论述充分、完整,立论正确,结构严谨合理;报告字数符合相关要求,工整规范,整齐划一。
5
课题背景介绍清楚,综述分析充分。
5
设计方案合理、可行,论证严谨,逻辑性强,具有说服力。
5
符号统一;图表完备、符合规范要求。
5
能对整个设计过程进行全面的总结,得出有价值的结论或结果。
5
参考文献数量在2篇以上,格式符合要求,在正文中正确引用。
答辩情况
25
10
在规定时间内能就所设计的内容进行阐述,言简意明,重点突出,论点正确,条理清晰。
15
在规定时间内能准确、完整、流利地回答教师所提出的问题。
总评成绩:
分
指导教师:
(签字)
日期:
2010年6月15日
摘要
本设计是为了加深对作业概念的理解,掌握短作业优先(SJF)算法,深入了解批处理系统如何组织作业、管理作业和调度作业,了解作业控制块的作用,以及作业控制块的内容和组织方式。
为了将系统中的作业组织起来,需要为每个进入系统的作业建立档案以记录和作业相关的信息,例如作业名、作业所需资源、作业执行时间、作业进入系统的时间、作业信息在存储器中的位置、指向下一个作业控制块的指针等信息。
这个记录作业相关信息的数据块称为作业控制块(JCB),并将系统中等待作业调度的作业控制块组织成一个队列,这个队列称为后备队列。
一个作业全部信息进入系统后,就为其建立作业控制块,并挂入后备队列。
当进行作业调度时,从后备队列中查找选择作业。
在从后备队列中查找选择作业是,先根据作业控制块中的信息,选中一个短作业,也就是执行时间最短的作业,将它们调入内存运行。
关键词:
作业;调度;SJF
Abstract
Thisdesignistodeepentheunderstandingoftheconceptofjobassignments,shortjobfirst(SJF)algorithmis,in-depthunderstandingofhowthesystemofbatchmanagementandorganization,scheduling,understandthejobassignments,aswellasthejobcontrolblocksofcontentandorganization.
Inordertoorganizetheassignmentsystemforeveryonetoenterthesystemtoestablisharchivesofjobassignmentsandrelatedinformationrecorded,forexample,jobassignments,resources,workintoexecutiontimeoftime,informationsysteminmemoryofjobassignments,pointingtoapositionjobcontrolblocketc.Therecordoftheinformationdatablockjobassignmentsjobcontrolblocks(called),andthesystemJCBwaitinginthejobassignmentsschedulingjobcontrolblockintoaqueue,thequeueasbackupqueue.Afullinformationintoasystemforitsestablishment,operationjobcontrolblock,andhungthebackupqueue.Whenschedulingproblem,fromthebacklogqueueforchoicefromthebacklogqueueforjobfirstchoice,accordingtotheinformationandjobcontrolblockashortassignment,andselecttheshortesttimeisexecuted,theywouldrunintomemory.
Keywords:
Job;Scheduling;SJF
目录
第一章课题概述……………………………………………………………………1
1.1目的及要求……………………………………………………………………1
1.2基本理论依据及实验内容…………………………………………………………1
第二章设计简介及设计方案论述…………………………………………………2
2.1设计简介……………………………………………………………………………2
2.2设计方案论述………………………………………………………………………2
第三章详细设计……………………………………………………………………3
3.1设计流程图…………………………………………………………………………3
第四章设计结果及分析……………………………………………………………4
4.1显示结果……………………………………………………………………………4
4.2结果分析……………………………………………………………………………5
附录……………………………………………………………………………………6
总结……………………………………………………………………………………12
致谢………………………………………………………………………………………13
参考文献……………………………………………………………………………………14
第一章课题概述
1.1目的及要求
1.1.1目的
加深对作业概念的理解;
深入了解批处理系统如何组织作业、管理作业和调度作业;
提高CPU的利用率和系统的吞吐量。
1.1.2设计要求
1.加深对作业概念地理解。
2.掌握短作业优先调度算法。
3.深入了解批处理系统如何组织作业、管理作业和调度作业。
4.了解作业控制块的作用,以及作业控制块的内容和组织方式。
1.2基本理论依据及实验内容
1.2.1基本理论依据
短作业优先调度算法,从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。
1.2.2前实验内容
编写程序完成批处理系统中的作业调度,要求采用短作业优先的作业调度算法。
实验具体包括:
首先确定作业控制块的内容,作业控制块的组成方式;然后完成作业调度;最后编写主函数对所作工作进程测试。
第二章设计简介及设计方案论述
2.1设计简介
将系统中的作业组织起来,为每个进入系统的作业建立档案以记录和作业相关的信息,按要求输入作业名、到达时间和服务时间,并为其建立作业控制块(JCB)挂入后备队列。
进行作业调度时,在其后计算出各个作业的开始执行时间、完成时间、周转时间和平均周转时间,利用短作业优先算法进行作业调度,并按照由小到大的顺序显示出来。
2.2设计方案论述
2.2.1创建JCB作业控制块
创建作业控制块JCB,定义为结构体,为进入系统的作业建立档案,其中定义了作业名,作业到达时间,作业服务时间,作业开始执行时间,作业完成时间,作业周转时间,作业平均周转时间。
2.2.2控制显示信息
输出文字提醒用户操作步骤,例如:
要求输入的作业调度数目,作业的到达时间、服务时间、开始执行时间、完成时间等等。
2.2.3实现短作业优先
短作业优先的调度算法是从后备队列中选择一个或若干个运行时间最短的作业,将它们调入内存中运行。
计算各作业的各个时间,并按各个作业完成时间由小到大排序。
在第一个程序运行完成之前选择运行时间最短的调入内存中使之运行。
第三章详细设计
3.1设计流程图
是
否
否
图3-1
第四章设计结果及分析
4.1显示结果
1.初始化界面
图4-1
2.输入要调度的作业数目
图4-2
3.输入作业名、到达时间、服务时间
图4-3
4.运行出的结果
图4-4
4.2结果分析
运行结果如表所示:
Name
作业名
Arrive
到达时间
Service
服务时间
Start
开始时间
Finish
完成时间
Zz
周转时间
Avezz
平均周转时间
a
5.00
10.00
5.00
15.00
10.00
1.00
c
15.00
5.00
15.00
20.00
5.00
1.00
b
10.00
20.00
20.00
40.00
30.00
1.50
分析可知:
短作业优先法由完成时间从小到大进行排序,先到作业不一定先服务,服务时间最短的也不一定先服务,一定是运行时间最短的优先运行。
附录
#include
#include
#include
#defineMAX100//最多能管理的作业数目
structjcb//作业控制块JCB,定义为结构体
{
charname[10];//作业名
floatarrivetime;//作业到达时间
floatservicetime;//作业服务时间
floatstarttime;//作业开始执行时间
floatfinishtime;//作业完成时间
floatzztime;//作业周转时间
floatavezztime;//作业平均周转时间
};
jcba[MAX];//用简单的数组数据结构来组织管理JCB
//定义为全局变量,做多能管理100个作业信息
voidinput(jcb*p,intN)
{
inti;
printf("请分别输入:
\n\t作业名,到达时间,服务时间(如:
JOB1510)\n\n");
for(i=0;i<=N-1;i++)
{
printf("请输入第%d个作业信息:
",i+1);
scanf("%s%f%f",&p[i].name,&p[i].arrivetime,&p[i].servicetime);
printf("\n");
}
}
voidPrint(jcb*p,floatarrivetime,floatservicetime,floatstarttime,floatfinishtime,floatzztime,floatavezztime,intN)
{
intk;
printf("调度顺序:
");
printf("%s",p[0].name);
for(k=1;k { printf("-->%s",p[k].name); } printf("\n\n"); printf("\t\t\t作业信息: \n"); printf("\nname\tarrive\tservice\tstart\tfinish\tzz\tavezz\n"); for(k=0;k<=N-1;k++) { printf("%s\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t\n",p[k].name,p[k].arrivetime,p[k].servicetime,p[k].starttime,p[k].finishtime,p[k].zztime,p[k].avezztime); } } //以到达时间从小到大排序 voidsort(jcb*p,intN) { for(inti=0;i<=N-1;i++) for(intj=0;j<=i;j++) if(p[i].arrivetime { jcbtemp; temp=p[i]; p[i]=p[j]; p[j]=temp; } } //运行阶段 voiddeal(jcb*p,floatarrivetime,floatservicetime,floatstarttime,floatfinishtime,float&zztime,float&avezztime,intN) { intk; for(k=0;k<=N-1;k++) { if(k==0) { p[k].starttime=p[k].arrivetime;//计算第一个到达的作业的开始时间 p[k].finishtime=p[k].arrivetime+p[k].servicetime;//计算第一个到达的作业的完成时间 } else { p[k].starttime=p[k-1].finishtime;//计算开始时间 p[k].finishtime=p[k-1].finishtime+p[k].servicetime;//计算完成时间 } } for(k=0;k<=N-1;k++) { p[k].zztime=p[k].finishtime-p[k].arrivetime;//计算作业的周转时间 p[k].avezztime=p[k].zztime/p[k].servicetime;//计算作业的平均周转时间 } } //jcb调度算法 voidjcbf(jcb*p,intN) { floatarrivetime=0,servicetime=0,starttime=0,finishtime=0,zztime=0,avezztime=0; sort(p,N);//以到达时间从小到大排序 for(intm=0;m { if(m==0) p[m].finishtime=p[m].arrivetime+p[m].servicetime; else p[m].finishtime=p[m-1].finishtime+p[m].servicetime; inti=0; for(intn=m+1;n<=N-1;n++) { if(p[n].arrivetime<=p[m].finishtime)//查找下标m+1以后的作业中: 服务时间<=p[m].finishtime的作业个数 i++; } floatmin=p[m+1].servicetime; intnext=m+1;//m+1=n for(intk=m+1;k { if(p[k+1].servicetime { min=p[k+1].servicetime; next=k+1; } } jcbtemp; temp=p[m+1]; p[m+1]=p[next]; p[next]=temp; }//循环结束后,安装jcb算法排好序了 deal(p,arrivetime,servicetime,starttime,finishtime,zztime,avezztime,N); Print(p,arrivetime,servicetime,starttime,finishtime,zztime,avezztime,N); } intmain() { while (1){ system("CLS"); intN; printf("\t\t\t------短作业优先调度算法------\n"); printf("请输入作业数目: "); scanf("%d",&N); charch; if(N>MAX){ printf("\t! ! 输入的作业数目太大,请输入不大于%d的整数\n",MAX); printf("按Q或者q退出程序,按其他任意键继续测试..."); ch=getch(); if(ch=='Q'||ch=='q'){ break; } elsecontinue; } input(a,N); jcb*b=a; jcbf(b,N); printf("按Q或者q退出程序,按其他任意键继续测试..."); ch=getch(); if(ch=='Q'||ch=='q'){ break; } } return0; } 总结 通过这次课程设计,我对操作系统中的作业调度模拟和短作业优先算法有了深刻的认识。 并且发现,只看课本上的知识远远不够,只一味学习也根本没用,必须要动手亲自实践,才能真正掌握所学的西。 一开始拿到题目时,实在不知道操作系统和c++如何联系在一起,经过翻阅资料、讨论,最后终于完成了本次课程设计。 在课程设计过程中,我对操作系统课程有了更进一步的了解 尤其是对作业调度的有关问题,进一步认识了作业在进程中的调度过程和执行过程。 而且,这次课程设计要求自己编写程序,通过这次训练,我知道了自己的弱点在哪里,为以后的学习打下基础,有了明确的方向。 这次课程设计,同学们在一起奋战,我们的团队意识加强了,更重要的是,加深了我们对操作系统基本原理和工作过程的理解,提高了我们独立分析问题、解决问题的能力,增强了我们的动手能力。 致谢 通过这次的程序设计让我进一度深入了解了短作业优先法,并且经过这次设计我从分认识到自主学习和自主设计的乐趣与成就感。 我非常感谢老师给了我这次机会,让我进一步了解了自我,并不是只有娱乐活动才能使人快乐,虽然制作的过程很辛苦,但是和完成以后的成就感与制作过程中大家互相帮助所增进的感情是无法比拟的。 再次感谢老师,并且非常感谢我的同学们给予我的充分帮助与鼓励。 参考文献 [1]汤小丹梁红兵哲凤屏等.计算机操作系统(第三版)[M].西安电子科技大学出版社,2007年出版.91-95页. [2]任爱华李鹏刘方毅操作系统实验指导[M].清华大学出版社,2004年出版.134-157页. [
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课程设计 学生