《计算机操作系统》
课
程
设
计
报
告
学号:1367003270
班级:软技4班
姓名:张靖伟
目录
1 实验:进程调度算法——时间片轮转算法
2 实验:银行家算法
3 实验:分区分配算法——和
4 实验:页面置换算法——和
5 实验:磁盘调度算法——和
1实验:进程调度算法——时间片轮转算法1.实验设计说明
用时间片轮转算法模拟单处理机调度。
(1)建立一个进程控制块来代表。包括:进程名、到达时间、运行时间和进程后的状态。
进程状态分为就绪(R)和删除(C)。
(2)为每个进程任意确定一个要求运行时间和到达时间。
(3)按照进程到达的先后顺序排成一个队列。再设一个指针指向队首和队尾。(4)执行处理机调度时,开始选择对首的第一个进程运行。
(5)执行: a)输出当前运行进程的名字;
b)运行时间减去时间片的大小。
(6)进程执行一次后,若该进程的剩余运行时间为零,则删除队首,并将该进程的状态置为C;若不为空,则将向后找位置插入。继续在运行队首的进程。
(7)若进程队列不空,则重复上述的(5)和(6)步骤直到所有进程都运行完为止。
2.实验代码
/*****************时间片轮转调度算法*******************/
<>
<>
<>
N 10
0;
;
/*进程控制块定义*/
{
[N]; /*进程名*/
; /*服务时间*/
; /*到达时间*/
; /*进程状态*/
**连接指针*/
};
*后备队列定义*/
{
*,*;
};
*就绪队列定义*/
{
*,*;
};
*()/*创建*/
{
s[N];
("请输入进程名:\n");
("");
("请输入进程服务时间(/秒):\n");
t;
("");
*(*)(());
(>);
>;
("请输入进程到达时间(/秒):\n");
("");
>;
>'R';
>;
();
p;
}
*(*p)/*复制一个进程*/
{
()
;
*(*)(());
(>>);
>;
>>;
>>;
>>;
s;
}
*(**)/*得到队列中下一个进程*/ {
*>;
()
;
((>>))
>;
>;
}
(**S)/*释放申请的空间*/
{
*>>;
(p)
{
(>);
>;
}
>>;
();
(S);
}
*(*)/*创建后备队列*/
{
*();
(>)
>;
>>;
>;
;
}
(*s1)/*判断运行是否结束*/ {
(11->)
;
(s1->1->)
(s1->>'C')
;
;
*1->;
(1->(>'C'))
>;
(1->)
;
}
*(*s)/*在中运行*/ {
(>)
{
;
;
}
("\\t">);
>>;
;
(>><=0)
{
*>;
>>'C';
("\n">>);
>>;
(p);
(>)
{
>;
;
;
}
;
}
*>;
>>;
(>)
{
>;
;
}
>;
;
}
(**2**c)/*创建就绪队列*/ {
0;
(2->)
()
{
(c)
{
2->;
>;
2->;
1;
}
2->2->;
1;
}
(2->2->)
{
{
(2->>)
(0<2->>);
*;
1;
}
(c)
{
2->>;
2->;
}
}
{
(c)
{
(>)
{
;
1;
}
2->>;
2->;
}
}
()
{
2->>;
}
1;
}
()
{
*1=(*)(());
1->1->;
*2=(*)(());
2->2->;
;
0;
;
{
("要创建进程吗():");
((())'y''Y')
{
1(1);
;
}
('n''N')
;
1;
}(1);
*(1->);
*;
2->2->(1->);
("时刻\t进程名\t状态\n");