- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
五邑大学实验报告
操作系统课程
2016~2017年度 第1学期
实验题目:进程调度
院系: 计算机学院
班级: 140801
学号: 3114002472
姓名: 黄凯鑫
任课教师: 白明 成绩评定:
实验二题目:进程调度
完成日期:2016年 12 月 11 日
1、实验目的
(1)设计一个有n个进程工行的进程调度程序。每个进程由一个进程控制块(PCB)表示。进程控制块通常应包含下述信息:进程名、进程优先数、进程需要运行的时间、占用CPU的时间以及进程的状态等,且可按调度算法的不同而增删。
(2)调度程序应包含2~3种不同的调度算法,运行时可任意选一种,以利于各种算法的分析比较。
(3)系统应能显示或打印各进程状态和参数的变化情况,便于观察诸进程的调度过程
2、实验内容
(1)编制和调试示例给出的进程调度程序,并使其投入运行。
(2)自行设计或改写一个进程调度程序,在相应机器上调试和运行该程序,其功能应该不亚于示例。
(3)直观地评测各种调度算法的性能。
3、算法设计
算法:
(1) 优先数法。
进程就绪链按优先数大小从高到低排列,链首进程首先投入运行。每过一个时间片,运行进程所需运行的时间片数减1,说明它已运行了一个时间片,优先数也减3,理由是该进程如果在一个时间片中完成不了,优先级应该降低一级。接着比较现行进程和就绪链链首进程的优先数,如果仍是现行进程高或者相同,就让现行进程继续进行,否则,调度就绪链链首进程投入运行。原运行进程再按其优先数大小插入就绪链,且改变它们对应的进程状态,直至所有进程都运行完各自的时间片数。
(2) 简单轮转法。
进程就绪链按各进程进入的先后次序排列,进程每次占用处理机的轮转时间按其重要程度登入进程控制块中的轮转时间片数记录项(相当于优先数法的优先数记录项位置)。每过一个时间片,运行进程占用处理机的时间片数加1,然后比较占用处理机的时间片数是否与该进程的轮转时间片数相等,若相等说明已到达轮转时间,应将现运行进程排到就绪链末尾,调度链首进程占用处理机,且改变它们的进程状态,直至所有进程完成各自的时间片。
实验源代码:
#include stdio.h
#include dos.h
#include stdlib.h
#include conio.h
#include iostream.h
#include time.h
enum state //进程的状态
{
Ready,
Working,
Finish
};
struct pcb //PCB数据结构
{
int pid;
int priority;
int cputime;
int needtime;
int round;
state process;
pcb *next;
};
int timepiece;
pcb *get_process(){ //优先数算法--输入进程个数
int proc;
pcb *q;
pcb *t;
pcb *p;
int i=0;
cout Input Process Number(1-10): ;
cin proc;
while (proc1 || proc10)
{
cout endl Illegal Input! endl endl Input Process Number(1-10): ;
cinproc;
}
//cout endl endl Start Scheduling!!!\n\n;
getch();
srand((unsigned)time(NULL)); //初始化随机数种子发生器
while (iproc)
{
q=(struct pcb *)malloc(sizeof(pcb));
q-pid=rand()%10000;
q-needtime=rand()%10+1;
q-cputime=0;
q-priority=rand()%100;
q-process=Ready;
q-next=NULL; //利用随机数生成进程信息
if (i==0)
{
p=q;
t=q;
}
else
{
t-next=q;
t=q;
} //尾插法建立PCB节点
i++;
} //while
return p;
}
void display(pcb *p)
{ //优先数算法结果输出
coutProcessID Cputime Need
您可能关注的文档
- 表达式求值c++ 数据结构课设报告.pdf
- 表达式求值程序设计 说明书.docx
- 表达式求值课程设计(数据结构C语言版).docx
- 宾馆住宿管理系统课程设计(详细完整,附代码).pdf
- 斌按键式彩灯控制器课程设计.docx
- 丙氨酸异丙酯磷酸化合物的合成与拆分(有机化学优秀毕业论文).doc
- 丙酮-水化工原理课程设计.docx
- 丙酮水化工原理课程设计.pdf
- 丙酮与水连续精馏塔课程设计.doc
- 并合双星系统的引力波理论模型_蔡荣根.pdf
- 2025届广西壮族自治区邕衡教育名校联盟高三下学期新高考5月全真模拟联合测试历史试题.doc
- 2025届天津市河西区高三下学期总复习质量调查(三)历史试题.doc
- 2024-2025学年辽宁省重点中学协作校高一下学期期中大联考历史试题.doc
- 2024-2025学年黑龙江省龙西北名校联盟高一下学期期中考试历史试题.doc
- 2025届广东省广州市第六中学高三三模历史试题.doc
- 2025届广东省高三下学期学业水平选择性考试(适应性训练)历史试题.doc
- 2025届山西省部分学校高三下学期5月押题考试历史试题.doc
- 2025届山东省德州市高三第一次模拟考试考前练习历史试题.doc
- 2025届山东省潍坊市高三下学期二模历史试题.doc
- 2024-2025学年辽宁省锦州市渤海大学附属高级中心高一下学期期中考试历史试题.doc
文档评论(0)