操作系统课程设计 进程调度模拟设计--先来先服务,优先级法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学号:
课程设计
课程名字系统软件开发实训A
题目进程调度模拟设计——先来先服务、优先级法
学院计算机科学与技术学院
专业计算机科学与技术专业
班级
姓名
指导教师李玉强
2014 年01 月13 日
课程设计任务书
学生姓名:专业班级:
指导教师:李玉强工作单位:计算机科学与技术学院
题目: 进程调度模拟设计——先来先服务、优先级法
初始条件:
1.预备内容:阅读操作系统的处理机管理章节内容,对进程调度的功能以及进程调度算法有深入的理解。
2.实践准备:掌握一种计算机高级语言的使用。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1.模拟进程调度,能够处理以下的情形:
⑴能够选择不同的调度算法(要求中给出的调度算法);
⑵能够输入进程的基本信息,如进程名、优先级、到达时间和运行时间等;
⑶根据选择的调度算法显示进程调度队列;
⑷根据选择的调度算法计算平均周转时间和平均带权周转时间。
2.设计报告内容应说明:
⑴课程设计目的与功能;
⑵需求分析,数据结构或模块说明(功能与框图);
⑶源程序的主要部分;
⑷测试用例,运行结果与运行情况分析;
⑸自我评价与总结。
时间安排:
设计安排3周:
查阅、分析资料 1天
系统软件的分析与建模 4天
系统软件的设计 5天
系统软件的实现 3天
撰写文档 1天
课程设计验收答辩 1天
设计验收安排:设计周的第三周的指定时间到实验室进行上机验收。
设计报告书收取时间:课程设计验收答辩完结时。
(注意事项:严禁抄袭,一旦发现,抄与被抄的一律按0分记)
指导教师签名: 2013 年 12 月 10日
系主任(或责任教师)签名: 2013 年 12 月 10日
课程设计报告书
1.需求分析
1.1设计目的
(1)阅读操作系统的处理机管理章节内容,对进程调度的功能以及进程调度算法有深入的理解。
(2)掌握一种计算机高级语言的使用。
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 1.2程序流程图
1.3设计要求
(1)能够选择不同的调度算法(要求中给出的调度算法);
(2)能够输入进程的基本信息,如进程名、优先级、到达时间和运行时间等;
(3)根据选择的调度算法显示进程调度队列;
(4)根据选择的调度算法计算平均周转时间和平均带权周转时间。
2.功能设计
2.1数据结构
1.进程的结构定义:
struct process
{
char name[10]; //进程名
int no; //进程序号
double arrivetime; //进程达到时间
double needtime; //进程运行时间
double starttime; //进程开始时间
double endtime; //进程结束时间
int state; //进程状态,0表示未执行,1表示已执行
int priority; //进程优先级
process *next;
process *head=Null;
int count;
};
2.使用链表存储进程并按照到达时间排序
、
void insert(process *current)
{
if (head!=Null)
{
if(head->next==Null)
//如果只有一个节点
{
if(current->arrivetime
{
current->next=head;
head=current;
}
else
{
current->next=Null;
head->next=current;
}
}
else
//如果至少两个节点
{
process *p1=head;
if(head->arrivetime >current->arrivetime )
{
current->next=head;
head=current;
}
else
{
int flag=1;
while(p1->next!=Null) //当head后面不为空时一直做
{
//如果在两个节点间
if(p1->arrivetime < current->arrivetime && p1->next->arrivetime > current->arrivetime)
{
current->next=p1->next;
p1->next=current;
flag=0;
break;
}
else p1=p1->next;
}
//如果到达时间最大,则插到链尾
if (flag=1)
{
p1->next=current;
current->next=Null;
}
}
}
}
else head=current;
}
2.2先来先服务算法设计