第七章 操作系统驱动调度.pdfVIP

  • 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)

1亿VIP精品文档

相关文档