- 8
- 0
- 约 20页
- 2017-07-08 发布于湖北
- 举报
操作系统实习报告
姓名 学号 日期
实验室 指导教师 设备编号
实习题目 实习九 驱动调度
一、实习内容
模拟电梯调度算法,实现对磁盘的驱动调度。
二、实习目的
磁盘是一种高速、大容量、旋转型、可直接存取的存储设备。它作为计算机系统的辅
助存储器,担负着繁重的输入输出任务、在多道程序设计系统中,往往同时会有若干个要
求访问磁盘的输入输出请求等待处理。系统可采用一种策略,尽可能按最佳次序执行要求
访问磁盘的诸输入输出请求。这就叫驱动调度,使用的算法称为驱动调度算法。驱动调度
能降低为若干个输入输出请求服务所需的总时间,从而提高系统效率。本实验要求学生模
拟设计一个驱动调度程序,观察驱动调度程序的动态运行过程。通过实验使学生理解和掌
握驱动调度的职能。
三、实习过程
1. 数据结构设计
#define M 20
typedef struct PCB
{
char proc[M];//进程名
int cylinder_num;//柱面号
int track_num;//磁道号
int phy_num;//物理记录号
struct PCB *next;
}PCB;
2 .算法设计
(1) 主函数框图 如图 1.
1)主函数要求用户选择
大于 0.5 电梯调度
小于 0.5 接受请求
2 )进入模拟程序调用函数对输入值进行判定。
3 )输入值大于0.5 初始化数组。
调用 lift( )函数。
调用电梯调度算法。
调用输出函数 output 。
4 )输入值小于0.5 调用接受请求函数。
接受进程输入请求,写入链表。
调用输出函数 output 。
5 )要求用户选择是否继续
Y .继续
N .退出
(2) 电梯调度算法lift() 如图 3.
1) 查 I/O 请求表,若等待进程表中有进程,则继续。否则返回。
2) 若有与当前运行的进程的柱面号相同的进程访问,则选择能使旋转距离最短的访问
者,并登记当前位置。否则继续判断当前移臂方向。
3) 若当前移臂方向向里,则判断是否有比当前柱面号大的访问请求;否则判断是否有比
当前柱面号小的访问请求。
4) 若有比当前柱面号大的访问请求,则从大于当前柱面号的访问请求中选择一个最小
者,然后登记当前位置。否则置当前移臂方向为向外移,并从小于当前柱面号的访问请
求中选择一个最小者,再登记当前位置;
若有比当前柱面号小的访问请求,则从小于当前柱面号的访问请求中选择一个最小者,
然后登记当前位置。否则置当前移臂方向为向里移,并从大于当前柱面号的访问请求中
选择一个最小者,再登记当前位置。
5) 在登记的当前位置处启动磁盘。
6) 执行完成后,被选中的进程退出 I/O 请求表。
7) 返回
(3) 接受请求模块 Receive_requests() 如图 2.
1) 判断是否接受请求,接受则继续。否则返回。
2) 显示当前正在运行的进程的信息,并列出目前的等待进程表。
3) 依次输入要接受的进程的信息,并排入等待队列。
(3 )流程图
主函数流程图
开始
初始化
输入在[0 ,1]
区间内的一个
是 否
原创力文档

文档评论(0)