I/O
This presentation is the property of its rightful owner.
Sponsored Links
1 / 84

I/O 设备管理 PowerPoint PPT Presentation


  • 92 Views
  • Uploaded on
  • Presentation posted in: General

I/O 设备管理. 知识点: I/O 系统硬件 I/O 软件 磁盘调度. 7.1 I/O 系统硬件. 在计算机系统中,使用了许多 I/O 设备,它们的特点和操作方式不完全一样。但是,所有的 I/O 设备都是通过 设备管理程序 来管理的。 设备管理是计算机操作系统中最繁杂且与硬件紧密相关的部分。 要把 大量的 I/O 设备 精减 成一个 单一模块的 I/O 系统,必须全面地适应已有设备的需求,也必须考虑到未来的存储和输入 / 输出技术的发展。. I/O 设备. 计算机所管理的 I/O 外部设备按输入输出对象的不同可以分为以下 3 类:

Download Presentation

I/O 设备管理

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


I o

I/O设备管理

知识点:

  • I/O 系统硬件

  • I/O 软件

  • 磁盘调度


7 1 i o

7.1 I/O系统硬件

在计算机系统中,使用了许多I/O设备,它们的特点和操作方式不完全一样。但是,所有的I/O设备都是通过设备管理程序来管理的。

设备管理是计算机操作系统中最繁杂且与硬件紧密相关的部分。

要把大量的I/O设备精减成一个单一模块的I/O系统,必须全面地适应已有设备的需求,也必须考虑到未来的存储和输入/输出技术的发展。


I o

I/O设备

计算机所管理的I/O外部设备按输入输出对象的不同可以分为以下3类:

  • ① 用户可读设备,用于用户与计算机通信。

  • ② 机器可读设备,用于电子装置与计算机通信。

  • ③ 通信设备,用于与远程设备通信。


I o

I/O设备

所有这些设备其属性和类别有很大的区别,其主要的区别在于(P213-214):

  • ① 数据传输速度。

  • ② 应用。

  • ③ 控制的复杂性。

  • ④ 信息组织方式。

  • ⑤ 数据描述。

  • ⑥ 错误条件。


I o

设备控制器

  • I/O设备一般由机械和电子两部分组成,通常将这两部分分开处理,以提供更加模块化、更加通用的设计。

  • 电子部分称作设备控制器或适配器(Device Controller或Adapter)。

  • 机械部分就是设备本身,控制器通过电缆与设备内部相连。


I o

设备控制器

设备控制器的主要作用有:

  • ① 接收和识别CPU发来的多种不同命令;

  • ② 实现CPU与控制器之间、控制器和设备之间的数据交换;

  • ③ 记录和报告设备的状态。

  • ④ 地址识别。识别控制器控制的每个设备的地址。


I o

设备控制器

  • 每个 I/O 设备通过设备控制器 与计算机的数据总线和地址总线相连接。

  • 设备控制器是用于操作端口、总线或设备的一组电子器件。

  • 某些设备(如磁盘设备)有内置的控制器


I o

CPU

地址总线

数据总线

RAM

设备控制器

与设备

(总线由单独的线路组成)


I o

设备控制器

  • 处理器如何向控制器发送命令和数据以完成 I/O 传输呢?

  • 设备控制器有一个或多个用于数据和控制信号的寄存器。

  • 设备控制器可能包含有数据寄存器、状态寄存器、控制寄存器和存储器(这部分存储器称为硬件缓冲区)。

  • 处理器通过读写这些寄存器的位组合来与设备控制器通信。


I o

Address

A B

&

&

&

8

D

Write

Read

From data bus

To device 1

思考:

设备的地址?

工作原理?

&

&

&

1

&

.

.

&

8

D

From data bus

To device 3

&

&

&

&


I o

设备控制器中的寄存器

  • 状态寄存器:保存是否忙、任务是否完成、是否出错等信息。

  • 控制寄存器

    • 向设备发送命令或改变设备状态。

  • 数据寄存器(输入/出)

    • 数据被写入该设备数据寄存器,或

    • 从该设备数据寄存器读出数据供处理器使用。

  • Buffer

    • 数据从该设备读出后、处理器对它处理之前临时存放数据,或临时存放正等待写到该设备的数据。


I o

设备控制器中的寄存器

已完成

出错

… ...

控制寄存器

状态寄存器

数据寄存器 0

数据寄存器 1

数据寄存器 n-1

设备控制器


I o

内存映射 I/O

  • 传统上,CPU 用特殊的 I/O 指令和单独的 I/O 总线对每个设备读/写信息。

    • 例如,一个读/写命令必须指定设备地址

    • IN AX,80H

  • 用内存映射 I/O时,CPU 使用相同的指令和总线对内存和所有的输入/出设备进行通信。


I o

内存映射 I/O

  • I/O 设备被看作是主存映射图中的某个内存位置。

  • 没有专门的设备地址

  • 对每个设备寄存器有标准的内存地址。

  • 处理器通过标准数据传输指令来完成对设备控制器的读写。

    思考:我们学习过这样的方式吗?


I o

内存映射 I/O

设备地址

内存地址

device

one

device

two

device

three

RAM

(传统的方法)

内存地址

device

one

device

two

device

three

RAM

(内存映射 I/O)


I o

内存映射 I/O

  • 个人计算机(PC)使用特殊的 I/O 指令来控制一些设备,而使用内存映射 I/O指令来控制其他设备(如,图形控制器(视频卡))。

    • 图形控制器有一个较大的内存映射区域以保存屏幕内容。

    • 处理器通过对图形控制器的内存映射区写数据来向屏幕输出(例如一幅图片)。


I o

显卡影子内存设置


I o

设备控制器


I o

I/O技术

1. I/O技术简介

目前,操作系统中的I/O技术大致有以下3种:

  • (1) 程序I/O

  • (2) 中断驱动I/O

  • (3) 直接存储器存储(DMA)


I o

I/O技术

随着计算机系统的发展,单个部件也越来越复杂。最明显的例子就是I/O技术的发展。

  • ① 处理器直接控制边缘设备。

  • ② 增加一个控制器或I/O模块。

  • ③ 使用了如阶段②的设置,但增加了中断。

  • ④ I/O模块通过DMA直接控制内存。

  • ⑤ I/O模块由一个单独处理器处理,有专门用于I/O的指令集。

  • ⑥ I/O模块有本地存储器,事实上,有其自己的计算机。


I o

I/O技术

2. DMA

  • 对于需要做大量传输的设备(例如磁盘驱动器),如果用 CPU 按字节协调、在这类设备与主存之间传输数据那就太浪费了。

  • 作为代替,许多系统采用直接内存访问(DMA)控制器以减轻 CPU 的负担。

    • DMA 控制器可以直接从主存读信息或直接向主存写信息。

    • 在这期间,CPU 可以通过高速缓存工作;直到 DMA 控制器释放总线前,CPU 都不会访问主存。


I o

DMA

CPU

高速缓存

DMA

控制器

RAM

cpu 存储总线

系统总线

磁盘

控制器


I o

I/O技术

DMA是一种优于中断方式的I/O控制方式,其特点为:数据传输的基本单位是数据块,即CPU与I/O设备之间,每次至少传送一个数据块;所传送的数据是从设备直接送入内存的,或者相反;仅在传送一个或多个数据块的开始和结束时,向CPU发中断信号,请求CPU干预,整块数据的传送是在控制器的控制下完成的。


I o

I/O技术

  • DMA控制器组成 :


I o

I/O技术

3. I/O通道

计算机中设计了一个专门负责外设I/O的处理器,置于CPU和设备控制器之间,称这个I/O处理器为I/O通道。

设计目的是:

建立独立的I/O操作,使数据的传送独立于CPU,并尽量使有关I/O操作的组织、管理及结束也独立,以保证CPU有更多时间进行数据处理。


I o

I/O技术

  • I/O通道是DMA方式的发展,它的程序是由通道指令组成的,称为通道程序。I/O处理器和CPU共享主存储器。

  • 在微型计算机中,其I/O处理器并不完全具有前述I/O通道的所有功能,因此,就称为I/O处理器。


I o

I/O技术

  • 在大型计算机中常有多个I/O通道,而在一般的微型计算机中则可以配置1--2个I/O处理器(或更多)。

  • 这些I/O处理器和中央处理器共享主存储器和总线(微型机中采用总线结构),在大型机中就可能出现几条通道和中央处理器同时争相访问主存储器的情况。为此给通道和中央处理器规定了不同的优先次序。


I o

I/O技术

  • 通道通过执行通道程序,并与设备控制器一起共同实现对I/O设备的控制。

  • 通道程序是由一系列的通道指令(或称为通道命令)所构成。通道指令和一般的机器指令不同,在它的每条指令中通常包含下列信息:操作码,内存地址,计数,通道程序结束位P,记录结束标志R。


I o

I/O技术

一般I/O通道有3种类型:

  • (1) 字节多路通道—以字节为单位、多路(子通道)分时轮转

  • (2) 数组选择通道—以数组为单位、每次选择一路、高速传输

  • (3) 数组多路通道—以数组为单位、多路分时轮转、高速传输

    I/O 通道方式的发展,既可进一步减少CPU 的干预,又可实现 CPU、通道和 I/O 设备 3 者的并行工作,从而更有效地提高了整个系统的资源利用率。


I o

I/O软件

I/O软件的总体目标是,按分层的思想构造软件,较低层的软件要使较高层的软件独立于硬件,较高层的软件则要向用户提供一个友好、规范、清晰的界面。I/O软件设计的具体目标是(P222):

  • ① 设备独立性。

  • ② 统一命名。

  • ③ 同步/异步传输。

  • ④ 出错处理。

  • ⑤ 设备共享与独占。


7 2 i o

7.2 I/O软件

根据I/O软件的设计目标,将I/O软件组织成以下4个层次:

  • (1)中断处理程序

  • (2)设备驱动程序

  • (3)与设备无关的操作系统软件

  • (4)用户层软件


I o

中断处理程序

在现代计算机系统中,对I/O设备的控制,广泛采用中断驱动(Interrupt-driven)方式,即当某进程要启动某个I/O设备工作时,便由CPU向相应的设备控制器发出一条I/O命令,然后立即返回继续执行原来的任务。设备控制器便按照该命令的要求去控制I/O设备,此时,CPU与I/O设备并行操作。


I o

中断处理程序

无论是哪种I/O设备,其中断处理程序的处理基本相同,其步骤为:

  • ① 唤醒被阻塞的驱动进程。

  • ② 保护被中断进程的CPU环境。

  • ③ 分析中断原因,转入相应的中断处理程序。

  • ④ 进行中断处理。

  • ⑤ 恢复现场。


I o

向量中断

  • 更为先进的系统采用向量中断。

    • 要求中断的设备既发出中断请求信号也给出一个中断号。

    • 中断号作为中断服务程序(入口地址)表的偏移量。

    • 中断服务程序(入口地址)表称为中断向量。

    • 采用这种机制,要求中断的设备可以让 CPU 马上执行特定的中断处理程序。


Intel pentium cpu

Intel Pentium CPU 中断

向量号

0除出错

1调试异常

5边界范围异常

6非法操作码

7设备不可用

8两次出错

12堆栈出错

13通用保护

14页出错

16浮点错误

.

.

.

>=32可屏蔽中断

非(不可)屏蔽

中断

(可以被 CPU 屏蔽的中断)


I o

中断优先级

  • 中断号还可以用来定义中断优先级。

    • 先进的系统采用向量(中断)号作为优先级。

    • 如果系统正在处理一个低优先级的中断(中断号为 60),它可以被更高优先级的中断(中断号为 0-59)抢占。

    • 低优先级设备的中断(中断号大等于 60)必须等待直到当前中断服务程序执行完成,它才会被响应。


I o

中断

  • 现代操作系统可以与中断机制进行多种方式的交互。

  • 在系统启动时,操作系统探测硬件总线以发现哪些设备是存在的,而且将相应的中断处理程序安装到中断向量中。


I o

中断

  • 在 I/O 时,各种设备控制器如果准备好服务会触发(申请)中断。

  • 这些中断表示输入数据已有,或输出已完成,或已检测到错误。


I o

设备驱动程序

  • 由于 I/O 设备有很大的差异,所以对操作系统的设计造成某些问题。

    • 操作系统怎样才能以一种标准的、统一的方式对待 I/O 设备呢?

    • 操作系统怎样设计才能做到向计算机添加新设备(例如,添加新磁盘)而不需要重写操作系统代码呢?

    • 操作系统怎样才能对应用程序给出方便、统一的接口呢?


I o

设备驱动程序

  • 操作系统能够以统一的方式对待不同的I/O 设备,因为具体的差别被称为设备驱动程序 的内核模块所封装。


I o

设备驱动程序

  • 这些设备驱动程序一方面可以定制以适合各种设备,另一方面也对内核 I/O 子系统提供了一组标准接口。

  • 设备驱动程序层的作用是为内核 I/O 子系统隐藏设备控制器之间的差异。

  • 一个特定的设备可能带有多种设备驱动程序;例如,MS-DOS、Win98、Win2000、 Windows XP 和 Solaris 驱动程序。


I o

设备驱动程序

所有与设备相关的代码放在设备驱动程序中。它是I/O进程与设备控制器之间的通信程序,因为它常以进程的形式存在,故也可以称为设备驱动进程。由于驱动程序与设备硬件密切相关,故应为每一类设备配置一种驱动程序,或为一类密切相关的设备配置一个驱动程序。


I o

设备驱动程序

1.设备驱动程序的功能

  • ① 将接收到的来自它上一层的与设备无关的抽象请求转为具体请求。

  • ② 检查用户I/O请求的合法性,了解I/O设备的状态,传递有关参数、设置设备的工作方式。

  • ③ 发出I/O命令,启动分配到的I/O设备,完成指定的I/O操作。

  • ④ 及时响应控制器或通道发来的中断请求,并调用相应的中断处理程序处理。

  • ⑤ 对于有通道的计算机系统,驱动程序还应能根据用户I/O请求构成通道程序。


I o

设备驱动程序

2. 设备驱动程序的处理过程

  • 一般地说,设备驱动程序的任务是接收来自它上面一层的与设备无关软件的请求,并执行这个请求。

  • 一个典型的请求是“读第n块”,如果请求到来时驱动程序是空闲的,则立即开始执行该请求;若驱动程序正在执行一个请求,则将新到来的请求插到一个等待处理I/O请求队列中。


I o

与设备无关的I/O软件

  • 大部分I/O软件是与设备无关的,设备驱动程序与设备独立软件之间的确切界限依赖于具体系统,因为对于一些本来应按照设备独立方式实现的功能,出于效率和其他原因,实际上还是由设备驱动来实现的。

  • 与设备无关软件层通常应实现的功能为:设备驱动程序的统一接口、设备命名、提供一个与设备无关的块大小、缓冲、块设备的存储分配、分配和释放独占设备、错误报告等。


I o

与设备无关的I/O软件

  • 与设备无关的I/O软件系统称为I/O子系统。

  • I/O子系统执行着与设备无关的操作。

  • 同时I/O子系统为用户应用程序提供一个统一的接口。

    下面讨论I/O子系统所需完成的主要功能。


I o

OS 内核 I/O 子系统

鼠标驱动

程序

硬盘驱动

程序

键盘驱动

程序

… ...

软盘驱动

程序

键盘

控制器

鼠标

控制器

… ...

软盘

控制器

硬盘

控制器

键盘

鼠标

… ...

软盘

驱动器

硬盘

驱动器


I o

与设备无关的I/O软件

1. 设备命名

  • 与设备无关的软件(即I/O子系统)负责把设备的符号名映射到相应的设备驱动程序。

  • 设备命名后,所有设备的名字的集合称做设备的名字空间。

  • UNIX系列有3种不同的名字空间。

    • (1) 主、次设备号(hda、hdb等)

    • (2) 内部号(标识设备驱动程序)与外部号(标识用户可见的设备)

    • (3) 设备文件与路径名(如/dev/had、/devfd0等)


I o

与设备无关的I/O软件

2. 设备保护

  • 与设备命名机制密切相关的是设备保护。

  • 在大多数大型计算机系统中,用户进程对I/O设备的访问是完全禁止的。


I o

与设备无关的I/O软件

3. 与设备无关的块及存储设备的块分配

不同的磁盘可以采用不同的扇区尺寸,与设备无关软件的一个任务是向较高层软件屏蔽并给上一层提供大小统一的块尺寸 。


I o

与设备无关的I/O软件

4. 设备分配

一些设备,如磁盘驱动器,在任一时刻只能被单个进程使用。因此,操作系统需要对设备使用请求进行检查,并根据申请设备的可用状况决定是接收该请求还是拒绝该请求。


I o

与设备无关的I/O软件

5. 出错处理

出错处理是由设备驱动程序完成的。大多数错误是与设备密切相关的,因此,只有驱动程序知道应如何处理(是重试、忽略,还是报警)。


I o

用户空间的I/O软件

  • 虽然大部分I/O软件都包合在OS内核之中,但也有一小部分I/O软件是由与用户程序连接在一起的库过程构成,它们可能完全运行在OS之外。

  • 例如,下列一个C程序调用了write库过程,并包含在运行时的二进制程序代码中:

    count=write(fd, buffer, nbytes);

    显然,write库过程是I/O系统的组成部分。

  • 上面描述的是第一类用户空间I/O软件,第二类用户空间I/O软件为spooling(simultaneous peripheral operation on line)系统,即假脱机系统。spooling系统是多道程序设计系统中处理独占I/O设备的一种方法。


I o

用户空间的I/O软件

spooling系统的作用如下:

  • (1) 实现了虚拟设备功能

  • (2) 将独占型设备变成共享设备

  • (3) 提高了I/O效率


I o

缓冲技术

系统为达到如下目的需要使用缓冲技术:

  • (1) 缓和CPU与I/O设备间速度不匹配的矛盾

  • (2) 减少CPU的中断频率,放宽对中断响应的限制

  • (3) 提高CPU和I/O设备之间的并行性


I o

缓冲技术

  • 根据系统设置的缓冲区的个数,可以把缓冲技术分为单缓冲、双缓冲和循环缓冲以及缓冲池几种。

单缓冲


I o

缓冲技术

双缓冲

多缓冲


I o

缓冲技术

1.单缓冲

  • 单缓冲是OS提供的一种最简单的缓冲。当用户进程发出一个I/O请求时,OS便在主存中分配一个缓冲区。

  • 对于单缓冲,缓冲区属于临界资源,即不允许多个进程同时对一个缓冲区进行操作。因此,单缓冲虽然能匹配设备和CPU的处理速度,但无法实现设备与设备之间的并行操作。


I o

缓冲技术

2. 双缓冲

  • 双缓冲提供两个缓冲区。

  • 但双缓冲只是一种说明设备与设备、CPU与设备并行操作的简单模型,并不能用于实际系统中的并行操作。


I o

缓冲技术

3. 循环缓冲

  • 由于双缓冲并不能真正解决实际系统中的并行操作,于是引入了多缓冲。通过增加缓冲区的个数,可使并行程度得到明显提高。

  • 多缓冲是把多个缓冲区连接起来组成两部分:一部分专门用于输入;另一部分专门用于输出。循环缓冲包括以下两部分。

    • (1) 多个缓冲区

    • (2) 多个指针


I o

缓冲技术

4. 缓冲池

上述的循环缓冲区仅适用于某特定的I/O进程和计算进程,因而属于专用缓冲。为了提高缓冲区的利用率,目前广泛流行公用缓冲池,池中的缓冲区可供多个进程共享。

  • (1) 缓冲池的结构

    相同类型的缓冲区链成一个队列,于是可形成以下3个队列:

    • ① 空缓冲队列emq。

    • ② 输入队列inq。

    • ③ 输出队列outq。


I o

收容输入

提取输入

l

m

hin

缓冲区

Sin

缓冲区

I/O

设备

CPU

缓冲区

n

sout

缓冲区

k

hout

提取输出

收容输出

缓冲技术

缓冲池中的工作缓冲区 :


I o

缓冲技术

  • (2) 缓冲池的管理

    一般,管理缓冲池的步骤如下:

    • ① take-buf(type):从3种缓冲区队列中按一定的规则取出一个缓冲区。

    • ② add-buf(type, number):把缓冲区按一定的规则插入相应的缓冲队列。

    • ③ get-buf(type, number):申请缓冲区。

    • ④ put-buf(type, work-buf):将缓冲区放入相应缓冲区队列。

      其中,type为缓冲队列类型, number为缓冲区号,work-buf为工作缓冲区类型。


I o

磁盘结构

  • 现代磁盘驱动器可以看作一个一维的逻辑块的数组。

    • 通常每块为 512 字节。

  • 逻辑块被映射到磁盘上的扇区。

    • 转换机制要求将块号转换成柱面号、磁道号、扇区号。


I o

磁盘结构

面号

道号

扇区号


I o

磁盘结构

  • 转换比较复杂是因为:

    • 每道的扇区数并不是一个常量,最外部磁道的扇区数比最内磁道的扇区数多 40%。

    • 存在坏扇区,必须用磁盘上的其他空闲扇区来替代这些坏扇区。

  • 磁盘技术的改善

    • 每盘有几千个柱面。

    • 每道超过 100 个扇区(在磁盘外部磁道区)


I o

磁盘调度

  • 操作系统必须以较快的速度访问磁盘。

  • 访问磁盘数据存在两种延迟:

    • 寻道时间–磁臂将磁头移动到包含目标扇区的柱面所花的时间。

    • 旋转延迟(rotational latency)- 磁盘需要将目标扇区转动到磁头下的时间延迟。

  • 磁盘带宽是

    • 所传输的总字节数除以服务请求开始到最后传递结束时的总时间。


I o

磁盘调度

  • 可以通过使用好的访问顺序来调度磁盘 I/O 请求,提高访问速度和带宽。

  • 在多用户系统中,有多个进程的访盘请求

    • 请求被加到请求队列。

    • 操作系统必须从队列中选择一个请求来服务。


I o

磁盘调度

近30年来,处理器和主存速度的增加远远把磁盘抛在了后面。因为磁盘的相对低速,使得磁盘子系统的性能变得至关重要,许多人也在积极探索提高磁盘子系统性能的方法,改进调度策略,降低查找时间。


I o

调度策略

磁盘调度策略有很多,常见的有随机调度、先进先出、进程优先级、后进先出等。

1. 先来先服务策略(FCFS)

  • 顾名思义,它是将各进程对磁盘请求的等待队列按提出请求的时间进行排序,并按此次序给予服务的一种策略。

  • 这个策略对各进程是公平的,它不管进程优先级多高,只要是新来到的访问请求,都被排在队尾。


I o

FCFS 调度

  • 先来的先被服务

    • 请求序列–柱面号 98,183,37,122,14,124,65,67,磁头开始在53 柱面

cylinder

14

37

53

65

67

98

122

124

183

time


I o

FCFS调度

  • 在前面的例子中,采用FCFS 调度算法,磁头移动总数为640 柱面。

  • 采用不同的调度算法时,磁头移动总数可能大幅度地减少。

    • 当磁头在柱面 122 时(后面的柱面请求序列为 14,124,…),如果先服务 124 柱面一定会更好。


I o

SSTF调度

  • 最短寻道时间优先(SSTF)调度

    • 从当前磁头位置选择最短寻道时间的请求。

    • 请求序列 98,183,37,122, 14,124,65,67,磁头开始位于53 柱面。

14

37

53

65

67

98

122

124

183

time


I o

SSTF调度

  • 结果磁头移动总数仅仅为 236 柱面。

  • 类似于短作业优先(SJF)的 CPU 调度算法,可能导致某些请求饿死。

    • 如果相近一些的请求不断到达,且待处理请求队列比较长,那么位于远处的请求就会长时间得不到服务。

  • SSTF 算法与 FCFS 算法相比有了很大的改善,但并不是最佳。

    • 如果按顺序 53,37,14,65,67,98,122, 124,183 来访问,结果磁头移动总数仅仅为 208 柱面。


I o

SCAN调度

  • “电梯调度算法"

    • 磁头向某一个方向移动,服务该方向上的所有请求,然后、磁头改变方向,继续处理请求。

    • 请求序列 - 98, 183, 37, 122, 14, 124, 65, 67, 当前磁头在53 柱面,并刚刚处理完 60 柱面请求。

14

37

53

65

67

98

122

124

183

time


I o

SCAN调度

  • 不但需要知道磁头的当前位置,而且还需要知道磁头的移动方向。

  • 如果一个请求刚好在磁头之前加入到队列,那么它将几乎马上得到处理。

  • 但是如果一个请求刚好在磁头之后加入到队列,那么它必须等待磁头到达磁盘的另一端,掉转方向,并返回。


C scan

C-SCAN调度

  • 像 SCAN

    • 磁头只移动到一个方向上最远的请求为止,接着马上回头到另一端最远处的请求,回头期间不处理。

    • 在朝一个给定方向移动前会寻找是否有请求。如图当前磁头在 53 柱面,刚刚处理完 40 柱面的请求。

14

37

53

65

67

98

122

124

183

time


I o

调度策略

  • 磁盘调度策略很多,各有利弊。如何选择相应调度策略与磁盘的使用环境因素有关。

  • 磁盘调度的另一个趋势是使多个磁盘(磁盘阵列)一起工作,特别对高端系统很有用。廉价冗余磁盘陈列(Redundant Array of Inexpensive Disks,简称RAID) 的特点是:

    • ① RAID是一个物理磁盘集合,但被OS认为是一个逻辑盘。

    • ② 数据分布存放在不同磁盘上。

    • ③ 具有较强的纠错能力。


I o

磁盘高速缓存

  • Cache存储器是在主存和处理器之间插入的一个更快、更小但更昂贵的存储器,其作用是减少主存的平均存取时间。同样的原理也可应用到磁盘存储器。

  • 关于磁盘Cache,有几个设计问题值得说明。

    • (1) Cache中的数据传送

      当一个I/O请求能由Cache提供服务时,Cache中的数据必须传送到请求进程中。有两种方法传送数据:一是通过共享存储器将数据所在的指针传送到请求进程;二是传送Cache中的数据到用户进程的存储空间中。


I o

磁盘高速缓存

  • (2) Cache中数据的替换策略

    当一个新的扇区装入Cache中时,一个原先在Cache中的扇区数据必须替换出去。经常使用的算法是最近最少使用算法(Least Recently Used, LRU)。 Cache中没有被使用时间最长的那个块将被替换。

    替换Cache中最少被访问的块的算法是最少使用算法(Least Frequently Used, LFU)。


I o

磁盘高速缓存

有必要在考虑最近最久未使用这一原则的同时,注意到以下三点内容:

  • ① 访问频率。通常,联想存储器的访问频率远高于高速缓存的访问频率。

  • ② 可预见性。预见哪些内容在不久将来会再次被访问,哪些则可能很久都不再被访问。

  • ③ 数据一致性。必须保持高速缓存、内存和磁盘间数据的一致性。

    基于以上的考虑,提出了一个新的技术——基于频率的替换(Frequency- Based Replacement)。


I o

磁盘高速缓存

  • (3) Cache的失效率

    一般而言,在同样的替换策略下,Cache越大,失效率越少。因此,必须设计好Cache的大小和替换策略,减少失效率。


  • Login