磁盘调度算法

合集下载

磁盘调度算法

磁盘调度算法

实验六磁盘调度算法【实验目的】通过这次实验,加深对磁盘调度算法的理解,进一步掌握先来先服务FCFS、最短寻道时间优先SSTF、SCAN和循环SCAN算法的实现方法。

【实验内容】问题描述:设计程序模拟先来先服务FCFS、最短寻道时间优先SSTF、SCAN 和循环SCAN算法的工作过程。

假设有n个磁道号所组成的磁道访问序列,给定开始磁道号m和磁头移动的方向(正向或者反向),分别利用不同的磁盘调度算法访问磁道序列,给出每一次访问的磁头移动距离,计算每种算法的平均寻道长度。

程序要求:1)利用先来先服务FCFS、最短寻道时间优先SSTF、SCAN和循环SCAN算法模拟磁道访问过程。

2)模拟四种算法的磁道访问过程,给出每个磁道访问的磁头移动距离。

3)输入:磁道个数n和磁道访问序列,开始磁道号m和磁头移动方向(对SCAN和循环SCAN算法有效),算法选择1-FCFS,2-SSTF,3-SCAN,4-循环SCAN。

4)输出:每种算法的平均寻道长度。

实现提示:用C++语言实现提示:1)程序中变量定义参考(根据需要可添加)如下:const int MaxNumber=100;int TrackOrder[MaxNumber];int MoveDistance[MaxNumber];double AverageDistance;bool direction;2)页面置换的实现过程如下:变量初始化;接收用户输入磁道个数n和磁盘访问序列,选择算法1-FCFS,2-SSTF,3-SCAN,4-循环SCAN,输入开始磁盘号m和磁头移动方向;根据用户选择的算法进行磁道访问,输出磁盘调度算法的模拟过程;计算选择每次移动的磁头移动距离和算法的平均寻道长度;输出选择算法的平均寻道长度。

实验要求:1)上机前认真复习磁盘调度算法,熟悉FCFS、SSTF、SCAN 和循环SCAN算法的过程;2)上机时独立编程、调试程序;3)根据具体实验要求,完成好实验报告(包括实验的目的、内容、要求、源程序、实例运行结果截图、发现的问题以及解决方法)。

操作系统磁盘调度算法实验报告及代码

操作系统磁盘调度算法实验报告及代码

操作系统磁盘调度算法实验报告及代码一、实验目的通过实验掌握磁盘调度算法的实现过程,了解各种不同磁盘调度算法的特点和优缺点,并比较它们的性能差异。

二、实验原理磁盘调度是操作系统中的重要内容,其主要目的是提高磁盘的利用率和系统的响应速度。

常见的磁盘调度算法有:FCFS(先来先服务)、SSTF (最短寻道时间)、SCAN(扫描)、C-SCAN(循环扫描)等。

三、实验过程1.编写代码实现磁盘调度算法首先,我们需要定义一个磁盘请求队列,其中存放所有的IO请求。

然后,根据所选的磁盘调度算法,实现对磁盘请求队列的处理和IO请求的调度。

最后,展示运行结果。

以FCFS算法为例,伪代码如下所示:```diskQueue = new DiskQueue(; // 创建磁盘请求队列while (!diskQueue.isEmpty()request = diskQueue.dequeue(; // 取出队列头的IO请求//处理IO请求displayResult(; // 展示运行结果```2.运行实验并记录数据为了验证各种磁盘调度算法的性能差异,我们可以模拟不同的场景,例如,随机生成一批磁盘IO请求,并使用不同的磁盘调度算法进行处理。

记录每种算法的平均响应时间、平均等待时间等指标。

3.撰写实验报告根据实验数据和结果,撰写实验报告。

实验报告通常包括以下内容:引言、实验目的、实验原理、实验步骤、实验结果、实验分析、结论等。

四、实验结果与分析使用不同的磁盘调度算法对磁盘IO请求进行处理,得到不同的实验结果。

通过对比这些结果,我们可以看出不同算法对磁盘IO性能的影响。

例如,FCFS算法对于请求队列中的请求没有排序,可能会导致一些请求等待时间过长。

而SSTF算法通过选择离当前磁道最近的请求进行处理,能够减少平均寻道时间,提高磁盘性能。

五、实验总结通过本次实验,我们学习了操作系统中磁盘调度算法的原理和实现过程。

不同的磁盘调度算法具有不同的优缺点,我们需要根据实际情况选择合适的算法。

磁盘调度算法

磁盘调度算法
引言
文件系统的物理基础是磁盘存储设备。所以, 文件系统的物理基础是磁盘存储设备。所以, 磁盘存储器的服务效率很重要, 磁盘存储器的服务效率很重要,为了提高文件 系统的性能,我们必须对磁盘进行合理的管理 系统的性能, 、调度,对磁盘调度算法进行优化。 调度,对磁盘调度算法进行优化。
第五章 磁盘存储器管理
第五章 磁盘存储器管理
2012-5-2
17
总结: 总结:
1. 先来先服务 . 2. 最短寻道时间优先 最短寻道时间优先(SSF) 3. 扫描算法(电梯算法) 扫描算法(电梯算法) 4 .循环扫描调度算法 循环扫描调度算法
5. N-Step-SCAN和FSCAN调度算法 了解 和 调度算法(了解 调度算法 了解)
第五章 磁盘存储器管理 2012-5-2 4
1. 先来先服务 .
按访问请求到达的先后次序服务 优点:简单,公平; 优点:简单,公平; 缺点:效率不高, 缺点:效率不高,相邻两次请求可 能会造成最内到最外的柱面寻道, 能会造成最内到最外的柱面寻道,使 磁头反复移动,增加了服务时间, 磁头反复移动,增加了服务时间,对 机械也不利
第五章 磁盘存储器管理 2012-5-2 5

假设磁盘访问序列: , 假设磁盘访问序列:98,183,37,122, , , , 14,124,65,67。移动臂的运动方向:沿 , , , 。移动臂的运动方向: 磁道号递减的方向移动。 磁道号递减的方向移动。 读写头起始位置: 读写头起始位置:53 1) (1)安排磁头服务序列 (2)计算磁头移动总距离(道数) )计算磁头移动总距离(道数)
课后任务: 课后任务:为了更好的掌握本节课所学的内 请大家完成书后习题6的第 小题。 的第12小题 容。请大家完成书后习题 的第 小题。

磁盘调度算法-电脑资料.

磁盘调度算法-电脑资料.

磁盘调度算法 -电脑资料2019-01-01磁盘优点容量很大每位的价格非常低当关掉电源后存储信息不丢失物理特性磁盘表面覆盖着磁性物质,信息记录在磁表面上,。

固定头磁盘的每个磁道单独有一个磁头,这样就能使得计算机可以很快地从一个磁道转换到另一个磁道。

但是这需要大量的头,设备成本很高。

更通用的方式是每个盘面只有一个头,让它从一道移向另一道。

这种动头设备需要硬件设备移动头。

磁盘一般用于文件存储,设计原则是:成本低、容量大、速度高。

扩大存储容量:a.增加每英寸磁道数目; b. 双面记录。

存取盘块中的信息一般要有三部分时间:系统首先要把磁头移到相应的道上或柱面上,这个时间叫做寻道时间;一旦磁头到达指定磁道,必须等待所需要的扇区转到读/写头下,这个延迟时间叫做旋转延迟时间;最后,信息实际在磁盘和内存之间进行传送也要花费时间,这部分时间叫做传送时间。

一次磁盘服务的总时间就是这三者之和。

要使磁盘服务尽可能地快,操作系统要提供合适的调度算法,改善磁盘服务的平均时间。

进程需要和磁盘交换信息时必须要操作系统发出系统调用,对磁盘的请求一般要有下述几部分内容:1. 输入和输出;2. 磁盘地址(驱动器、柱面、面号、扇区);3. 内存地址;4. 传送长度。

磁盘调度算法1、先来先服务调度(FCFS)FCFS 算法是优先为最先到达的请求服务。

例如,有如下请求磁盘服务队列,要访问的磁道数分别是:98,183,37,122,14,124,65,67排在前面的是先到达的请求,假设磁头目前停留在53磁道上,按照先来先服务的算法,接下来磁头的移动顺序依次是:53—>98—>183—>37—>122—>14—>124—>65—>67这个过程总共移动了(98-53)+(183-98)+(183-37)+(122-37)+(122-14)+(124-14)+(124-65)+(67-65)=640个磁道这种调度法产生的磁头移动服务太大,磁头频繁的大幅度移动,容易产生机械振动和误差,对使用寿命有损害。

磁盘调度算法

磁盘调度算法

磁盘调度算法As a person, we must have independent thoughts and personality.操作系统实验报告哈尔滨工程大学计算机科学与技术学院一、实验概述1. 实验名称磁盘调度算法2.实验目的(1)通过学习EOS实现磁盘调度算法的机制,掌握磁盘调度算法执行的条件和时机。

(2)观察EOS实现的FCFS、SSTF和 SCAN磁盘调度算法,了解常用的磁盘调度算法。

(3)编写CSCAN和N-Step-SCAN磁盘调度算法,加深对各种扫描算法的理解。

3. 实验类型验证,设计4. 实验内容(1)准备实验(2)验证先来先服务(FCFS)磁盘调度算法(3)验证最短寻道时间优先(SSTF)磁盘调度算法(4)验证SSTF算法造成的线程“饥饿”现象()验证扫描(SCAN)磁盘调度算法()验证SCAN 算法能够解决“饥饿”现象(6)改写SCAN调度算法二、实验环境EOS操作系统与IDE环境组成的“操作系统集成实验环境OS Lab”。

三、实验过程(一)实验问题及解答1.实验指导验证先来先服务(FCFS)磁盘调度算法,要求请给出在“输出”窗口中的结果。

答:输出结果复制如下:制作软盘镜像...正在启动 Virtual PC...开始调试...****** Disk schedule start working ******Start Cylinder: 10TID: 31 Cylinder: 8 Offset: 2 -TID: 32 Cylinder: 21 Offset: 13 +TID: 33 Cylinder: 9 Offset: 12 -TID: 34 Cylinder: 78 Offset: 69 +TID: 35 Cylinder: 0 Offset: 78 -TID: 36 Cylinder: 41 Offset: 41 +TID: 37 Cylinder: 10 Offset: 31 -TID: 39 Cylinder: 12 Offset: 55 -TID: 40 Cylinder: 10 Offset: 2 -Total offset: 360 Transfer times: 10 Average offset: 362.实验指导验证验证最短寻道时间优先(SSTF)磁盘调度算法,要求请给出在“输出”窗口中的结果。

操作系统中的磁盘调度

操作系统中的磁盘调度

操作系统中的磁盘调度在计算机系统中,磁盘是一种存储设备,用于保存大量的数据和信息。

然而,由于磁盘的读写速度较慢,为了使系统更快地响应用户请求,操作系统必须对磁盘进行有效的调度和管理,以最大化磁盘的读写效率和响应速度。

磁盘调度是指操作系统通过算法和策略,对不同的磁盘访问请求进行排队和调度,以实现尽快地读取和写入数据。

在操作系统中,有多种磁盘调度算法可供选择,每种算法都有其优缺点,需要根据具体的应用场景和需求进行选择和配置。

常见的磁盘调度算法有以下几种:先来先服务(FCFS)调度算法先来先服务调度算法是最简单的磁盘调度算法,也是最容易实现的一种。

该算法按照磁盘访问请求的到达时间进行排队,先到达的请求先被处理。

然而,这种算法存在“早期请求被占用磁道”的问题,即如果较远的磁道请求先到达,则后续较近磁道的请求需要较长时间等待,影响了系统响应速度。

最短寻道时间优先(SSTF)调度算法最短寻道时间优先调度算法是一种基于当前磁头位置的决策算法。

该算法选择最短路径到达下一个磁道,然后依此处理下一个请求。

该算法通常比FCFS算法更快,因为它能够同时考虑到时间和空间的因素。

然而,该算法可能会导致较远的请求长时间等待,称为“饿死”。

电梯调度算法电梯调度算法是一种非常流行的磁盘调度算法,也是一种比较高效的算法。

该算法是基于电梯的上下运动来模拟磁盘寻道,当磁头从某一端开始找到另一端时,该算法按照一个方向对请求进行排序。

在电梯运行的方向上的请求优先处理,直到到达另一个方向的尽头,然后更改方向继续处理请求。

由于该算法考虑了请求的位置和时间,因此可以实现快速响应和高效利用磁盘。

最佳(SCAN)调度算法最佳调度算法是一种类似于电梯调度算法的算法,也是一种基于电梯寻道模型的算法。

该算法沿着磁盘表面进行扫描,按照磁头运动的方向对请求进行排序,并在到达尽头时更改方向。

该算法在大多数情况下比FCFS算法和SSTF算法更快,但也有可能因为某些操作导致请求长时间等待。

磁盘驱动调度算法

磁盘驱动调度算法

磁盘驱动调度算法磁盘驱动调度算法是操作系统中的一种重要机制,用于决定磁盘上的数据访问顺序,提高磁盘的读写效率。

在计算机系统中,磁盘是一种主要的存储介质,而磁盘驱动调度算法则是决定计算机系统如何合理地利用磁盘资源的关键。

磁盘驱动调度算法的目标是通过合理地安排磁盘上的数据访问顺序,最大限度地提高磁盘的读写效率。

在实际应用中,磁盘上的数据往往是分散存储的,即不同的文件、目录等数据被存储在不同的磁盘块中。

因此,当系统需要读取或写入某个文件时,需要将磁头移动到相应的磁道上,然后再进行数据的读取或写入操作。

而磁盘驱动调度算法的任务就是决定磁头的移动顺序,从而提高磁盘的访问效率。

常见的磁盘驱动调度算法有先来先服务(FCFS)、最短寻道时间优先(SSTF)、电梯调度算法(SCAN)、循环扫描算法(C-SCAN)等。

下面将逐一介绍这些算法的特点和应用场景。

1. 先来先服务(FCFS)算法:该算法按照磁盘请求的先后顺序进行调度,即先到达磁盘的请求先被服务。

这种算法简单直接,但由于没有考虑磁盘的物理结构和磁头的移动距离等因素,可能会导致磁盘的平均寻道时间较长。

2. 最短寻道时间优先(SSTF)算法:该算法会选择离当前磁道最近的请求进行服务,从而减少磁头的移动距离,提高磁盘的读写效率。

然而,这种算法可能会出现饥饿现象,即某些请求长时间得不到服务。

3. 电梯调度算法(SCAN):该算法模拟了电梯的运行过程,磁头按照一个方向移动,直到到达磁盘的边界,然后改变方向继续移动。

这种算法能够有效地减少磁头的移动次数,提高磁盘的读写效率。

但由于磁头只能按照一个方向移动,可能会导致某些请求长时间得不到服务。

4. 循环扫描算法(C-SCAN):该算法是电梯调度算法的一种改进,磁头按照一个方向移动,直到到达磁盘的边界,然后立即返回到起始位置,继续移动。

这种算法能够有效地减少磁头的移动距离,提高磁盘的读写效率。

不同的磁盘驱动调度算法适用于不同的应用场景。

第五章_磁盘移臂调度算法

第五章_磁盘移臂调度算法
( 0) ( 4) (24) ( 8) (8) (72) ( 4)
共移动120柱面
(0+4+24+8+8+72+4)*3=120*3=360 ms
(3)电梯调度算法: 由于未指明开始移动的方向,分成两种情形: OUT:
40 → 40 → 20 → 12 → 4 → 44 ) (40) (32) (4)
其中进程是按其发出 进程号 磁道号 移动距离(磁道数) 请求的先后顺序排列的。 4 19 81 9 376 357 采用的是FCFS调度策略。 23 205 171 完成这组I/O操作需移动 7 134 71 磁头的总距离为1604磁道。 34 18 116 22 56 38 优点: 公平、简单,且 14 192 136 每个进程的请求都能依次 3 396 204 32 29 367 得到处理,不会出现某进 17 3 26 程的请求长期得不到满足 12 19 16 29 40 21 的情况。 磁头移动的总距离=1604 (磁道) 缺点:与后面讲的几种 调度算法相比,其平均寻道距离较大。故此算法仅 适用于请求磁盘上的进程数较少的场合。
2 FSCAN算法 FSCAN算法实质上是N-Step-SCAN算法 的简化。它只将磁盘请求访问队列分成两个 子队列。 一是当前所有请求磁盘I/O的进程形成的 队列,由磁盘调度按SCAN算法进行处理。 另一个队列则是在扫描期间,新出现的 所有请求磁盘I/O进程的队列,把它们排入另 一个等待处理的请求队列。 这样,所有的新请求都将被推迟到下一 次扫描时处理。
一、先来先服务FCFS
(First-Come, First-Served)
这是一种最简单的磁盘调度算法。它根 据进程请求访问磁盘的先后次序进行调度。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在临界区 中完成对 临界资源 (块设 备)的访 问

读取数据?

从缓存中读取 指定的字节
修改缓存中 指定的字节 调用设备驱动程序的Write功能 函数,将缓存写回扇区 线程退出临界区时,会将设 备互斥信号量等待队列中的 第一个线程唤醒,使之进入 临界区。
释放设备互斥信号量 (退出临界区) IopReadWriteSector 函数结束
PsWaitForMutex(&DiskScheduleMutex, INFINITE);
if (IsDeviceBusy) { PsResetEvent(&pRequest->Event); } else { IsDeviceBusy = TRUE; } ListInsertTail(&RequestListHead, &pRequest->ListEntry); PsReleaseMutex(&DiskScheduleMutex); PsWaitForEvent(&pRequest->Event, INFINITE); return pRequest; }
执行的条件、执行的时机、操作的对象
条件:多个线程并发访问同一个磁盘设备 才会触发磁盘调度算法。单个线程访问磁 盘不会触发磁盘调度算法。 时机:将阻塞线程唤醒时执行调度,而不 是将线程阻塞时执行调度。 对象:由于并发访问同一个磁盘设备而被 阻塞的多个线程。
EOS中实现的磁盘调度算法
目前EOS只管理了一个块设备——软盘驱动器, 为了尽量简单,EOS只考虑对这个唯一的块设备 进行磁盘调度。 为每个访问磁盘的线程创建一个对应的请求,并 将这些请求放入一个请求队列中。 在块设备读写函数IopReadWriteSector中依次处 理请求队列中的请求,各个请求被处理的顺序由 磁盘调度算法决定。 在函数IopDiskSchedule中实现各种磁盘调度算法。 控制台命令“ds”专门用来测试磁盘调度算法。
if (ListIsEmpty(&RequestListHead)) { IsDeviceBusy = FALSE; } else { pNextRequest = IopDiskSchedule(); PsSetEvent(&pNextRequest->Event); }
PsReleaseMutex(&DiskScheduleMutex); } // 退出临界区


磁盘调度算法
实验目的
通过学习EOS实现磁盘调度算法的机制, 掌握磁盘调度算法执行的条件和时机。 观察EOS实现的FCFS、SSTF和SCAN磁 盘调度算法,了解常用的磁盘调度算法。 编写CSCAN和N-Step-SCAN磁盘调度算法, 加深对各种扫描算法的理解。
多线程并发访问软盘
从用户的角度看( 宏观上),三个线 程是在同时访问软 盘上的数据。 从线程的角度看(微 观上),三个线程是 在交替的访问软盘上 的单个扇区。 从软盘驱动器的角度看, 它甚至根本不知道线程的 存在,只是根据请求来访 问软盘上的各个扇区。
IopProcessNextRequest(pCurrentRequest);
}
IopReceiveRequest函数
PREQUEST IopReceiveRequest( IN ULONG SectorNumber ) { PREQUEST pRequest; pRequest = (PREQUEST)MmAllocateSystemPool( sizeof(REQUEST) ); pRequest->Cylinder = SectorNumber / 18 / 2; PsInitializeEvent(&pRequest->Event, TRUE, TRUE);
请求B
访问磁道21 链表项 事件有效
请求C
访问磁道9 链表项 事件无效 阻塞 链表头
访问磁道21 链表项 事件无效 阻塞

线程 B (4)
线程 C

访问
线程 B (5)
线程 C
空闲
(6)
专门用来测试磁盘调度算法的控制台命令“ds”
该控制台命令是在ke/sysproc.c文件中的 ConsoleCmdDiskSchedule函数内实现的。在该 函数执行的过程中,首先让当前线程访问一次磁 盘上的某个磁道,从而设置磁头的初始位置,然 后将磁盘设备的状态设置为忙,并创建多个访问 不同磁道的线程。由于磁盘设备忙,这些线程的 请求都会被放入请求队列中,直到被磁盘调度算 法选中后才会被处理。最后触发磁盘调度算法, 按照调度策略依次处理请求队列中的所有请求。 优点:
请求A
链表头 链表头 访问磁道8 链表项 事件有效 链表头
请求A
访问磁道8 链表项 事件有效
请求B
访问磁道21 链表项 事件无效 阻塞
请求C
访问磁道9 链表项 事件无效 阻塞
空闲

访问
线程 A

访问
线程 A (3)
线程 B
线程 C
(1) 请求B
链表头
(2) 请求C
访问磁道9 链表项 事件无效 阻塞 链表头
读105扇区
磁盘调度算法在EOS中的位置
ReadFile()
用户态 核心态 应用程序 应用程序 应用程序
……
用户态 核心态
FatReadFile()
FAT12 文件系统
FAT32 文件系统
ISO-9660 文件系统
……
可以在块设备 层中加入磁盘 调度算法和读 写缓冲区管理 功能。
IopReadWriteSector()
实现了FCFS算法的IopDiskSchedule函数
PREQUEST IopDiskSchedule( VOID ) { PLIST_ENTRY pListEntry; PREQUEST pNextRequest;
pListEntry = RequestListHead.Next; pNextRequest = CONTAINING_RECORD(pListEntry, REQUEST, ListEntry); return pNextRequest;
}
CBA
IopReceiveRequest 函数开始
创建一个请求 (分配内存) 初始化新创建的请求 (记录线程访问的磁道号) 等待磁盘调度互斥信号量 (进入临界区)
IopReadWriteSector 函数开始
IopProcessNextRequest 函数开始
等待磁盘调度互斥信号量 (进入临界区) 记录当前磁头 所在的磁道号 将已处理完毕的请求从 请求队列中移除 销毁已处理完毕的请求 (释放内存)
软盘驱动器 及驱动程序
块设备
FloppyRead()
硬盘驱动器 及驱动程序
光盘驱动器 及驱动程序
……
(a)
(b)
磁盘调度算法 执行的条件、执行的时机、操作的对象
当多个线程并发访问磁盘时,只能有一个线 程访问磁盘(独占磁盘),而其它的线程会被阻 塞,待独占磁盘的线程结束访问操作后,才能唤 醒一个阻塞的线程,令其继续独占访问磁盘。 这里提到的唤醒一个阻塞的线程的过程,就 是磁盘调度算法工作的过程。可能会有多个线程 由于并发访问磁盘而被阻塞,磁盘调度算法就是 根据不同的策略,从中选择一个合适的线程来唤 醒。 准确的说,磁盘调度算法操作的对象是—— 由于并发访问同一个磁盘设备而被阻塞的多个线 程。
文件io/block.c中的磁盘调度算法函数 IopDiskSchedule
PREQUEST IopDiskSchedule( VOID )
可以实现多种磁盘调度算法,包括FCFS、SSTF、SCAN、 CSCAN、N-Step-SCAN等,目前仅实现了最简单的FCFS 算法。 当前磁头所在的磁道保存在全局变量 CurrentCylinder 中。 请求队列中各个请求的 Cylinder 域保存了对应线程要访问 的磁道号。 注意,该函数只是从请求队列中选择下一个要被处理的请 求,而不需要将选中的请求从请求队列中移除,也不需要 将请求对应的线程唤醒。
// 进入临界区
// 退出临界区
IopProcessNextRequest函数
VOID IopProcessNextRequest( IN PREQUEST pCurrentRequest ) { PREQUEST pNextRequest; PsWaitForMutex(&DiskScheduleMutex, INFINITE); CurrentCylinder = pCurrentRequest->Cylinder; ListRemoveEntry(&pCurrentRequest->ListEntry); MmFreeSystemPool(pCurrentRequest); // 进入临界区
等待设备互斥信号量 (进入临界区) 调用设备驱动程序的Read功能 函数,将整个扇区读入缓存

读取数据?


磁盘设备忙?
否 从缓存中读取 指定的字节 修改缓存中 指定的字节 调用设备驱动程序的Write功能 函数,将缓存写回扇区
设置请求中 的事件无效
设置磁盘 设备忙
是请求队列 变为空?否将请求插入到 请求队列的末尾 释放磁盘调度互斥信号量 (退出临界区) 当前线程等待其对应请 求中的事件 释放设备互斥信号量 (退出临界区)
用户
线程1 访问文件A
读89扇区
阻塞
线程2 访问文件B
阻塞
线程3 访问文件C
阻塞
软盘驱动器
读89扇区 写100扇区 读103扇区 读90扇区 写101扇区 写104扇区 读91扇区 写106扇区 读105扇区
写100扇区
阻塞
相关文档
最新文档