- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统进程调度设计性实验.
设
计
性
实
验
姓名:XXXX
学号:XXXXXXXXXX
学院:计算机与信息工程学院
专业:计算机科学与技术
班级:2011级计科2班
计算机与信息工程学院设计性实验报告
专业:计算机科学与技术 年级/班级:2011级2班 2013—2014学年第一学期
课程名称 操作系统 指导教师 XX 本组成员
学号姓名 XXXXX 实验地点 过街楼404 实验时间 11月12号、19号、26上午1-2节 项目名称 进程调度 实验类型 设计性 一、实验目的
通过模拟实现优先级调度算法和时间片轮转调度算法加深对进程概念和进程调度过程的理解。
二、实验仪器或设备
安装Red Hat Enterprise Linux 5操作系统的计算机一台。
三、总体设计(设计原理、设计方案及流程等)
3.1设计原理:
进程调度算法:采用多级反馈队列调度算法。其基本思想是:当一个新进程进入内在后,首先将它放入第一个队列的末尾,按FCFS原则排队等待高度。当轮到该进程执行时,如能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚为完成,调度程序便将该进程转入第二队列的末尾,再同样地按FCFS原则等待调度执行,以此类推。
3.2分析五个进程为:
id cputime needtime priority(count) state
0 0 2 48 ready
1 0 3 47 ready
2 0 6 44 ready
3 0 5 45 ready
4 0 4 46 ready
在两种调度算法中,考虑分别可以选择什么样的队列及如何实现进程的入队、出队操作。为了便于处理,优先权调度每次也仅让进程执行一个时间片,若在一个时间片内未运行结束,调整进程优先级将其插入就绪队列,进行新一轮调度。动态优先权调整原则:如进程每运行若干个时间单位,优先数减a;进程在就绪队列等待若干个时间单位,优先数加b。优先权调度中,对于遇到优先权一致的情况,可采用FCFS策略解决。由于是模拟进程调度,所以,对被选中的进程并不实际启动运行,而是修改进程控制块的相关信息来模拟进程的一次运行。
四、实验步骤(包括主要步骤、代码分析等)
4.1实验代码
#include stdio.h
#include stdlib.h
#define P_NUM 5
#define P_TIME 50
enum state{
ready,
execute,
block,
finish
};
struct pcbb{
char name[4];
int priority; //数越大优先级越高
int cputime; //已占用CPU的时间
int needtime; //执行时间
int count;
enum state process;
struct pcbb *next;
};
typedef struct pcbb pcb;
void display_menu(){
printf(CHOOSE THE ALGORITHM:\n);
printf(1 PRIORITY\n);
printf(2 ROUNDROBIN\n);
printf(3 EXIT\n);
}
pcb* get_process(){
pcb *q;
pcb *p; //头指针
pcb *t; //尾指针
int i = 0;
printf(input name and time\n);
while (i P_NUM){
q=(pcb *)malloc(sizeof(pcb));
scanf(%s,q-name);
scanf(%d,q-needtime);
q-cputime = 0;
q-priority = P_TIME - q-needtime;
q-process = ready;
q-next = NU
文档评论(0)