操作系统课程设计.docx
- 文档编号:4083818
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:11
- 大小:94.41KB
操作系统课程设计.docx
《操作系统课程设计.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计.docx(11页珍藏版)》请在冰豆网上搜索。
操作系统课程设计
枣庄学院
信息科学与工程学院课程设计任务书
题目:
先来先服务进程调度算法模拟
学生1:
桂文学(201212110106)
学生2:
赵尊强(201212110136)
学生3:
刘永清(201212110115)
专业:
计算机科学与技术
课程:
操作系统
指导教师:
王艳秋职称:
讲师
完成时间:
2014年5月----2014年6月
枣庄学院信息科学与工程学院制
2014年6月20日
课程设计任务书及成绩评定
课程设计的任务和具体要求
任务:
综合运用操作系统所学的知识,完成先来先服务的程序,掌握操作系统中先来先服务的相应的算法,并用学到的程序求解先来先服务的具体算法,并用liux编程实现。
具体要求:
(1)按照解题思路、程序实现、程序设计与分析的思路完成程序;
(2)课程设计题目自拟题目。
可以多人合作完成(每组最多3人),合作完成的必须在报告中明确指出每个人的具体任务,上交课程设计报告。
(3)设计小结:
总结课程设计的过程、体会及建议。
(4)其他:
参考文献等。
指导教师签字:
日期:
指导教师评语
成绩:
指导教师签字:
日期:
课程设计所需软件、硬件等
硬件设备:
PC机一台
软件环境:
安装Windows操作系统或者Linux操作系统,并安装相关的程序开发
环境,如C\C++\Java等编程语言环境。
课程设计进度计划
起至日期
工作内容
备注
2014.5.13-2014.5.20
2014.5.20-2014.5.25
2014.5.25-2014.5.30
2014.5.30-2014.6.2
熟悉相关知识,查阅资料;
分析实验要求,确定解决方案;
详细分析,编写代码及调试运行;
课程总结并打印课程设计;
通过对操作系统的学习及liux的应用,加深对算法的理解及扩展。
参考文献、资料索引
序号
文献、资料名称
编著者
出版单位
[1]汤子瀛,哲凤屏,汤小丹.计算机操作系统.陕西:
西安电子科技大学出版社,2001.8
[2]张尧学,史美林.计算机操作系统教程(第2版).北京:
清华大学出版社,2000.8
[3]刘海燕,邵立嵩,荆涛.Linux系统应用与开发教程.北京:
机械工业出版社,2008.1
[4]华清远建嵌入式培训中心.嵌入式LinuxC语言应用程序设计.北京:
人民邮电出版社.2007.8
[5]罗苑棠,杨宗德.嵌入式Linux应用系统开发实例精讲.北京:
电子工业出版社.2007.3
目录
1引言4
2正文4
2.1创建进程4
2.2设计要求4
3常用基本命令介绍4
4进程调度程序的设计5
4.1进程调度的基本算法程序5
4.2实验设计说明6
4.3实验代码7
4.4.实验结果10
5对算法的优缺点进行分析11
6实验总结11
1引言
进程是操作系统中最重要的概念,也是学习现代操作系统的关键。
通过本次课程设计,要求理解进程的实质和进程管理的机制。
掌握进程调度的工作流程以及进程调度的算法。
2正文
2.1创建进程:
手动创建几个进程,或者随即创建几个进程,都在界面上完成;要求包括进程的名称(不能重复)、创建时间、执行时间等。
在此因为某时刻仅一个进程在运行,需要申请的资源都能申请到。
.完成先来先服务、最短作业优先以及最高响应比优先调度算法。
2.2设计要求:
要求在屏幕上输出各进程不同调度算法的演示过程、对周转时间、平均周转时间和平均带权周转时间进行计算,并对比各算法的优劣。
3常用基本命令介绍
本次实验采用C语言模拟对N个进程采用先来先服务进程调度算法调度。
每个用来标识进程的进程控制块PCB用结构来描述,包括以下字段:
进程标识数ID[3]、进程名name[10]、进程状态state、进程到达时间arrivetime、进程开始执行时间starttime、进程执行结束时间finishtime、服务时间servicetime、周转时间turnaroundtime、带权周转时间weightedturnaroundtime、队列指针next用来将PCB排成队列。
4进程调度程序的设计
4.1进程调度的基本算法程序
(1)用C语言(或其它语言,如Java)实现对N个进程采用某种进程调度算法)(如动态优先权调度)的调度。
(2)每个用来标识进程的进程控制块PCB可用结构来描述,包括以下字段:
✧进程标识数ID。
✧进程优先数PRIORITY,并规定优先数越大的进程,其优先权越高。
✧进程已占用CPU时间CPUTIME。
✧进程还需占用的CPU时间ALLTIME。
当进程运行完毕时,ALLTIME变为0。
✧进程的阻塞时间STARTBLOCK,表示当进程再运行STARTBLOCK个时间片
后,进程将进入阻塞状态。
✧进程被阻塞的时间BLOCKTIME,表示已阻塞的进程再等待BLOCKTIME个
时间片后,将转换成就绪状态。
✧进程状态STATE。
✧队列指针NEXT,用来将PCB排成队列。
(3)优先数改变的原则:
✧进程在就绪队列中呆一个时间片,优先数增加1。
进程每运行一个时间片,优先数减3。
(4)为了清楚地观察每个进程的调度过程,程序应将每个时间片内的进程的情况显示出来,包括正在运行的进程,处于就绪队列中的进程和处于阻塞队列中的进程。
(5)分析程序运行的结果,谈一下自己的认识。
通过这次实验结果让我们对操作系统有了更进一步的认识,有了更高的思想去解决实际问题。
4.2实验设计说明
主要程序流程图(进程的执行过程):
如下图,
4.3实验代码
#include"stdio.h"
#include"stdlib.h"
typedefstructPCB//定义进程控制块
{
charID[3];//进程号
charname[10];//进程名
charstate;//运行状态
intarrivetime;//到达时间
intstarttime;//进程开始时间
intfinishtime;//进程结束时间
intservicetime;//服务时间
floatturnaroundtime;//周转时间
floatweightedturnaroundtime;//带权周转时间
structPCB*next;//指向下个进程
}pcb;
inttime;//计时器
intn;//进程个数
pcb*head=NULL,*p,*q;//进程链表指针
voidrun_fcfs(pcb*p1)//运行未完成的进程
{
time=p1->arrivetime>time?
p1->arrivetime:
time;
p1->starttime=time;
printf("\n现在时间是%d,开始运行作业%s\n",time,p1->name);
time+=p1->servicetime;
p1->state='T';
p1->finishtime=time;
p1->turnaroundtime=p1->finishtime-p1->arrivetime;
p1->weightedturnaroundtime=p1->turnaroundtime/p1->servicetime;
printf("ID到达时间开始时间服务时间完成时间周转时间带权周转时间\n");
printf(""%s%6d%10d%10d%8d%10.1f%10.2f\n"",
p1->ID,p1->arrivetime,p1->starttime,p1->servicetime,p1->finishtime,
p1->turnaroundtime,p1->weightedturnaroundtime);
}
voidfcfs()//找到当前未完成的进程
{
inti,j;
p=head;
for(i=0;i { if(p->state=='F') { q=p;//标记当前未完成的进程 run_fcfs(q); } p=p->next; } } voidgetInfo()//获得进程信息并创建进程 { intnum; printf("\n作业个数: "); scanf("%d",&n); for(num=0;num { p=(pcb*)malloc(sizeof(pcb)); printf("依次输入: \nID进程名到达时间服务时间\n"); scanf("%s\t%s\t%d\t%d",&p->ID,&p->name,&p->arrivetime,&p->servicetime); if(head==NULL){head=p;q=p;time=p->arrivetime;} if(p->arrivetime q->next=p; p->starttime=0; p->finishtime=0; p->turnaroundtime=0; p->weightedturnaroundtime=0; p->next=NULL; p->state='F'; q=p; } } voidmain() { printf("先来先服务算法模拟"); getInfo(); p=head; fcfs(); } 4.4.实验结果 测试用例 进程名 到达时间 服务时间 A 0 1 B 1 100 C 2 1 D 3 100 5对算法的优缺点进行分析 先来先服务算法顾名思义先到的先参与调度,本利中按照A、B、C、D的顺序。 因为只有非抢占方式,所以先到的进程必须执行完来才能执行下一个进程,下一个进程的开始时间也就取决于到达时间和上一个进程的结束时间中较晚的一个,如C进程的到达时间是2,但是B进程的完成时间是101,所以C进程的开始时间为101。 由实验结果可以看出,短作业C的带权周转时间竟高达100,而长作业D的带权周转时间仅为1.99,据此可知,FCFS算法有利于CPU繁忙的作业,而不利于I/O繁忙型的作业(进程)。 6实验总结 本次实验设应用链表结构进行存储并排序,条理清晰,易于理解,程序编写完成以后,实现类预期对结果。 界面设计比较清晰明了,易于阅读。 本程序中灵活地设计调用函数和函数嵌套来简化程序,例如在查找未执行进程和对未执行进程执行时分别设计了voidfcfs()和voidrun_fcfs(),多个进程运行时均要调用这两个函数,简化了代码。 另外,在编写程序之前,由于先画来流程图,对应流程图的顺序来实现程序,能对程序有个全局的把握,提高了编写速度,减少了错误。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课程设计