21 题目研究容预期达目标
(1)设计进程控制块
(2)设计进程队列
(3)设计进程(≥20)
(4)动态生成时间片执行时间优先级信息输出文件中
(5)设计基时间片优先级调度算法
(6)动态调度调度信息输出文件中
(7)理解进程调度相关理
(8)掌握时间片调度原理
(9)掌握高优先级调度原理
22 题目研究工作基础实验条件
(1)硬件环境:装Linux操作系统(虚拟机)计算机台
(2)软件环境:vim编辑器Visual C++
23 设计思想
(1)优先级
优先级体现进程重程度紧迫程度数现代操作系统中采优先级调度策略优先级(0127)0 优先级高127 低实验中求优先级08
(2)基时间片调度
绪进程先先服务原排成队列次调度时CPU分配队首进程令执行时间片时间片完时计时器发出时钟中断请求调度程序进程终止该进程放队尾
(3)高优先级调度
优先级高进程优先cpu等该进程执行完毕外进程执行
(4)基时间片高优先级调度
时间片优先级调度结合系统中优先级应绪队列绪队列采时间片调度高优先级进程队列调度完成转入更低优先级绪队列调度
(5)算法设计
绪进程先先服务原排成队列次调度时CPU分配队首进程令执行时间片时间片完时计时器发出时钟中断请求调度程序进程终止该进程放队尾优先级高进程优先cpu等该进程执行完毕外进程执行时间片优先级调度结合系统中优先级应绪队列绪队列采时间片调度高优先级进程队列调度完成转入更低优先级绪队列调度
24 流程图
开始
输入创建进程数
进程达?
较进程间优先级
运行完成
Time++
结束
N
Y
N
Y
Y
创建进程信息
优先级排出等序列
开始
执行等序列第
Time++
全部完毕?
结束
运行完毕?
优先级改变
重新排序
N
图21等序列排序流程图 图22进程运行流程图
25 程序代码
#include
#include
#include
using namespace std
#define NULL 0
typedef struct PCB定义进程结构体
{
char name进程名
struct PCB *next
double arrive_time达时间
double need_time需求运行时间
double worked_time已工作时间
int Pnumber优先数
char condition队列标识
}PCB*linkList
void creatPCB(linkList *aint n)
{
cout<<请输入进程名 达时间 求运行时间 优先数<
cin>>a[i]>name>>a[i]>arrive_time>>a[i]>need_time>>a[i]>Pnumber输入结构体匹配
a[i]>condition'd'表示未加入绪队列标志
a[i]>worked_time0worked_time初始值0
}
}
int judge(linkList *aint n)判断进程否结束
{
int flag_11
for(int i0i
if(a[i]>condition'f')
{
flag_10
break
}
}
return flag_1
}
void creat_Process(linkList *aint n)计算输出调度结果
{
double time0已运行总时间
linkList lpr定义象
l(linkList)malloc(sizeof(PCB))强制转换
l>next NULL l节点null
int flag_10标识
while(flag_11)
{
for( int i0i
int flag0
if (time>a[i]>arrive_time&&(a[i]>condition'd'||a[i]>condition'x'))判断进程否达否刚执行未加入两者执行
{ 目排出等序列
p(linkList)malloc(sizeof(PCB))
pa[i]
p>nextNULL
if(l>nextNULL)
{
l>nextp
p>condition'w'
}
else
{
rl
while(r>next){
if((r>next>Pnumber)>p>Pnumber)判断优先级
{交换
p>nextr>next
r>nextp
flag1
a[i]>condition'w'
break
}
else
{
rr>next
}
}
if(flag0)
{
r>nextp
a[i]>condition'w'
}
}
}
}
rl>next1
cout<<绪队列:
while(r)输出绪队列
{
cout<
rr>next
}
cout<
rl>next
cout<
r>worked_time++已运行程序工作时间+1
time++
r>condition'x'标识判断
if(r>worked_timer>need_time)
{
r>condition'f'表示已运行完标志
cout<
l>nextr>next进程移1
flag_1judge(an)判断进程否完成
}
}
int main()
{
int n
cout<<请输入进程数 N:
cin>>n
linkList *anew linkList[n]申请新链表a[i]
for(int i0i
a[i](linkList)malloc(sizeof(PCB))sizeof(PCB)进行强制转换(结构体类型)
}
creatPCB(an)输入函数
creat_Process(an)计算输出调度结果
}
26 运行结果分析
正运行:A
绪队列:D F J C L G B H K E I A
正运行:D
绪队列:O F J C L N G M B H K E I A D
正运行:O
绪队列:F J P Q C L N G M B H K E O I A D
正运行:F
绪队列:R S J P Q C L N G M B H K E O I A D F
正运行:R
绪队列:S J P Q T C L N G M B H K E O R I A D F
正运行:S
S已运行完成
绪队列:J P Q T C L N G M B H K E O R I A D F
正运行:J
绪队列:P Q T C L N G M B H K E O R I A D F J
正运行:P
绪队列:Q T C L N G M B H K E O R I A D F J P
正运行:Q
绪队列:T C L N G M B H K E O R I A D F J P Q
正运行:T
绪队列:C L N G M B H K E O R I A D F J P Q T
正运行:C
绪队列:L N G M B H K E O R I A D F J P Q T C
正运行:L
绪队列:N G M B H K E O R I A D F J P Q T C L
正运行:N
绪队列:G M B H K E O R I A D F J P Q T C L N
正运行:G
绪队列:M B H K E O R I A D F J P Q T C L N G
正运行:M
绪队列:B H K E O R I A D F J P Q T C L N G M
正运行:B
绪队列:H K E O R I A D F J P Q T C L N G M B
正运行:H
绪队列:K E O R I A D F J P Q T C L N G M B H
正运行:K
绪队列:E O R I A D F J P Q T C L N G M B H K
正运行:E
绪队列:O R I A D F J P Q T C L N G M B H K E
正运行:O
O已运行完成
绪队列:R I A D F J P Q T C L N G M B H K E
正运行:R
R已运行完成
绪队列:I A D F J P Q T C L N G M B H K E
正运行:I
绪队列:A D F J P Q T C L N G M B H K E I
正运行:A
绪队列:D F J P Q T C L N G M B H K E I A
正运行:D
绪队列:F J P Q T C L N G M B H K E I A D
正运行:F
F已运行完成
绪队列:J P Q T C L N G M B H K E I A D
正运行:J
绪队列:P Q T C L N G M B H K E I A D J
正运行:P
绪队列:Q T C L N G M B H K E I A D J P
正运行:Q
绪队列:T C L N G M B H K E I A D J P Q
正运行:T
绪队列:C L N G M B H K E I A D J P Q T
正运行:C
绪队列:L N G M B H K E I A D J P Q T C
正运行:L
绪队列:N G M B H K E I A D J P Q T C L
正运行:N
绪队列:G M B H K E I A D J P Q T C L N
正运行:G
绪队列:M B H K E I A D J P Q T C L N G
正运行:M
绪队列:B H K E I A D J P Q T C L N G M
正运行:B
绪队列:H K E I A D J P Q T C L N G M B
正运行:H
绪队列:K E I A D J P Q T C L N G M B H
正运行:K
绪队列:E I A D J P Q T C L N G M B H K
正运行:E
绪队列:I A D J P Q T C L N G M B H K E
正运行:I
绪队列:A D J P Q T C L N G M B H K E I
正运行:A
A已运行完成
绪队列:D J P Q T C L N G M B H K E I
正运行:D
绪队列:J P Q T C L N G M B H K E I D
正运行:J
绪队列:P Q T C L N G M B H K E I D J
正运行:P
P已运行完成
绪队列:Q T C L N G M B H K E I D J
正运行:Q
Q已运行完成
绪队列:T C L N G M B H K E I D J
正运行:T
绪队列:C L N G M B H K E I D J T
正运行:C
C已运行完成
绪队列:L N G M B H K E I D J T
正运行:L
绪队列:N G M B H K E I D J T L
正运行:N
绪队列:G M B H K E I D J T L N
正运行:G
绪队列:M B H K E I D J T L N G
正运行:M
绪队列:B H K E I D J T L N G M
正运行:B
绪队列:H K E I D J T L N G M B
正运行:H
绪队列:K E I D J T L N G M B H
正运行:K
K已运行完成
绪队列:E I D J T L N G M B H
正运行:E
绪队列:I D J T L N G M B H E
正运行:I
绪队列:D J T L N G M B H E I
正运行:D
D已运行完成
绪队列:J T L N G M B H E I
正运行:J
绪队列:T L N G M B H E I J
正运行:T
T已运行完成
绪队列:L N G M B H E I J
正运行:L
绪队列:N G M B H E I J L
正运行:N
绪队列:G M B H E I J L N
正运行:G
绪队列:M B H E I J L N G
正运行:M
绪队列:B H E I J L N G M
正运行:B
绪队列:H E I J L N G M B
正运行:H
H已运行完成
绪队列:E I J L N G M B
正运行:E
绪队列:I J L N G M B E
正运行:I
绪队列:J L N G M B E I
正运行:J
绪队列:L N G M B E I J
正运行:L
L已运行完成
绪队列:N G M B E I J
正运行:N
N已运行完成
绪队列:G M B E I J
正运行:G
绪队列:M B E I J G
正运行:M
M已运行完成
绪队列:B E I J G
正运行:B
B已运行完成
绪队列:E I J G
正运行:E
绪队列:I J G E
正运行:I
绪队列:J G E I
正运行:J
绪队列:G E I J
正运行:G
G已运行完成
绪队列:E I J
正运行:E
绪队列:I J E
正运行:I
绪队列:J E I
正运行:J
绪队列:E I J
正运行:E
绪队列:I J E
正运行:I
绪队列:J E I
正运行:J
绪队列:E I J
正运行:E
E已运行完成
绪队列:I J
正运行:I
绪队列:J I
正运行:J
绪队列:I J
正运行:I
绪队列:J I
正运行:J
绪队列:I J
正运行:I
绪队列:J I
正运行:J
J已运行完成
绪队列:I
正运行:I
绪队列:I
正运行:I
绪队列:I
正运行:I
绪队列:I
正运行:I
绪队列:I
正运行:I
绪队列:I
正运行:I
绪队列:I
正运行:I
绪队列:I
正运行:I
绪队列:I
正运行:I
I已运行完成
tang@ubuntu~osjinchengdiaodu
27 心体会
进程调度算法实现需实现功:设计进程控制块设计进程队列设计进程(≥20)设计基时间片优先级调度算法 进行动态调度
实现功需理解进程调度相关理掌握时间片调度原理掌握高优先级调度原理
通设计进程控制块数结构操作系统学知识实现次设计
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档