M0rtzz.com

June 16, 2024Last Updated: July 6, 2024

操作系统期末复习笔记(五)

LinuxOS6.9 min to read

第五章-设备管理

1.I/O硬件系统

(1)设备类别

①从数据交换单位来分

1)块设备

块设备将信息存储在固定大小的块中,并且每个块都有地址,因此可独立寻址。

所有传输以一个或多个完整的块为单位。

硬盘、CD-ROM和USB盘是最常见的块设备。

2)字符设备

字符设备以字节为单位发送或接收一个字符流,且不可寻址。

键盘、打印机、鼠标、网络接口,以及大多数与磁盘不同的设备都可以看做字符设备。

②从设备访问方式来分

1)顺序设备

顺序设备上数据的逻辑顺序与物理存储顺序保持一致。

2)随机设备

随机设备上数据的逻辑顺序与物理存储顺序可以不一致。

(2)设备硬件组成

I/O设备一般由以下部件组成:

①机械部件

机械部件及设备本身。

②电子部件

电子部件称为设备控制器或适配器。一般为芯片形式或印刷电路板的形式。

控制器可以操作2、4个甚至8个相同的设备。

控制器是设备的直接控制者,操作系统通过控制器间接控制设备。

(3)设备控制器

①概念

设备控制器或适配器指I/O设备的电子部件。

②功能

设备控制器的主要功能:

  1. 接收和识别CPU或通道发来的命令;
  2. 实现数据交换,包括设备和控制器间的数据传输;
  3. 发现和记录设备及自身的状态信息,供CPU处理使用;
  4. 设备地址识别。

③寄存器

设备控制器中的四种寄存器:

  1. 状态寄存器
  2. 控制寄存器
  3. 数据输入寄存器
  4. 数据输出寄存器
1)状态寄存器

包含CPU可读取的设备状态信息。

状态信息指示当前任务是否完成,数据输入寄存器中数据是否可以读取,是否出现设备故障等。

2)控制寄存器

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

3)数据输入寄存器

存放设备从外界获取的数据供CPU读取。

4)数据输出寄存器

存放供设备向外界输出的数据。

(4)I/O控制器

主机通过控制器对设备输入、输出进行控制的方式有四种:

  1. 轮询
  2. 中断
  3. DMA
  4. 通道

①轮询

轮询也称为忙等待,CPU向设备下达操作命令后,不断查询设备操作完成状态。

在轮询控制方式下,CPU与设备的工作完全是串行(顺序)的,而不是并发的。

轮询方式使得CPU将大量时间消耗在设备状态的查询上,而不是用于执行其它计算任务。

20240616152121

②中断

在中断控制方式下,CPU向设备发出读写命令后,不再查询设备执行状态,转而执行其它计算任务。

设备控制器完成读写操作后以中断的方式主动向CPU报告完成情况。

CPU响应中断执行一个中断处理程序,将设备从外界获得的数据取走放到内存或者相反。

CPU对设备的控制和干预仅在启动和设备操作结束时进行。

image-20240616152553421

③DMA

DMA(直接存储器访问)方式允许I/O设备与内存之间直接交换一个连续的信息块,在传输期间无需CPU的干预,而是由专用处理器——DMA控制器完成具体传输控制操作。

在开始DMA传输时,CPU对DMA芯片进行设置,说明需要传送的字节数、有关的设备和内存地址以及操作方向,接着启动DMA。

当DMA芯片完成设备I/O时,引发一个中断。

image-20240616152851817

④通道

通道也叫输入输出处理器,是独立于CPU专门负责数据输入/输出传输工作的处理机,能执行自己的指令程序,代替CPU完成复杂的输入/输出操作,完成主存和外围设备间的信息传送,与CPU并行操作。

1)与CPU区别

I/O通道与CPU的主要区别:

通道指令类型单一,主要局限于与I/O操作有关的指令。

通道所执行的通道程序是放在主机内存中的,因此,通道与CPU共享内存。这样,通道与CPU对内存的使用是分时的。

2)通道控制方式

在通道方式下,当进程需要执行I/O操作时,CPU只需启动通道,即可返回执行其它进程,通道则执行通道程序,对I/O操作进行控制。

3)主机、通道、控制器、设备之间的连接关系

一个CPU可以连接若干通道,一个通道可以连接若干控制器,一个控制器可以连接若干台设备。

image-20240616153204433

外围设备和CPU能实现并行操作;

通道和通道之间能实现并行操作;

各通道上的外围设备也能实现并行操作,充分提高系统效率。

同一个控制器与多个通道连接,同一个设备与多个控制器连接,存在无故障连接通路,系统仍可正常工作。

⑤四种控制方式包含的控制层级

image-20240616153351347

(5)磁盘

①物理地址和逻辑地址

1)物理地址

访问磁盘上的数据时需要给出物理块(扇区)的地址,该地址是三维的,采用(柱面号,磁头号,扇区号)表示。

2)逻辑地址

磁盘物理块(扇区)的逻辑地址是一维线性的,称为逻辑块号(扇区号)。

所有扇区依次排列,从0开始连续编号。扇区编排顺序是自外向里对各个柱面内的扇区排序,同一柱面内的各个扇区先按磁道顺序、再按磁道内扇区顺序排列。

②磁盘调度算法

image-20240616162713809

image-20240616163202603

1)先来先服务算法(First Come First Server Algorithm,FCFS)

image-20240616163334532

2)最短查找时间优先算法(Shortest Seek Time First Algorithm,SSTF)

image-20240616164027441

3)电梯算法

caution

考试大纲中的电梯算法的英语有多种版本,费翔林版本叫LOOK,王道考研叫SCAN。故在此不讨论英语缩写。

对于先后到达的磁盘访问请求,电梯调度算法首先选择移臂方向,磁臂在该方向上移动的过程中依次处理途经的各个访问请求,直到该方向上再无请求时,改变移臂方向,依次处理相反方向上遇到的各个请求。如果同一柱面上有多个请求,还需进行旋转优化。

image-20240616165212954

4)循环扫描算法(Circular SCAN Algorithm,C-SCAN)

磁头仅在一个移动方向上提供访问服务。磁臂从磁盘开始端柱面至结束端柱面移动的过程中依次处理途经请求,然后,直接返回开始端柱面重复进行,归途中并不响应请求。开始端与结束端柱面构成了一个循环。

20240616165428

5)N步扫描算法(N - Steps SCAN Algorithm,N-Step-SCAN)

N步扫描算法将磁盘请求队列分成若干个长度为N的子队列,磁盘调度按先来先服务算法依次处理这些队列。

当正在处理某子队列时,如果又出现新的磁盘I/O请求,便将新请求放入其它队列。

image-20240616170334117

image-20240616170350356

③Linux磁盘调度算法

1)Linus电梯调度算法
  1. 如果新请求与队列中等待请求的数据处于同一磁盘扇区或者相邻扇区,则两者合并成一个请求;
  2. 如果队列中的请求已经存在很长时间,则新请求将被插入到队列尾部;
  3. 如果存在合适的位置,则新请求将按顺序插入到队列中;如果没有合适的位置,则新的请求将被插入到队列尾部。
2)时限调度算法

在Linus电梯调度的基础上考虑请求为读还是写,异步还是同步,请求等待的时间长短,根据这些因素修正I/O请求的调度次序,避免饥饿。

3)预期调度算法

对时限调度算法的补充,它预测已经发出读请求的进程很可能会在将来不久再次发出访问上次所读磁道附近的请求,于是不急于执行下一个请求,而是延迟若干毫秒,在延期内若有符合预测的新请求则满足之,没有再执行下一个请求。


2.I/O软件系统

(1)设计目标和原则

①I/O软件总体设计目标

1)高效率

确保I/O设备和CPU并行执行,提高资源利用率。

2)通用性

提供简单抽象、清晰统一的接口,采用统一标准的方法管理所有的设备和I/O操作。

②达到目标的方法

对硬件设备进行分层抽象,将I/O软件组织成层次结构,低层软件屏蔽硬件细节,高层软件提供简洁、友好的界面。

③I/O软件总体设计要考虑的问题

1)设备无关性

屏蔽设备的具体细节,向高层提供抽象的逻辑设备,并完成逻辑设备和具体物理设备的映射。

2)出错处理

尽可能在接近硬件的层面处理错误。低层软件能够处理的硬件I/O错误不要让高层软件感知。

3)同步(阻塞)/异步(中断驱动)传输

进程在启动设备执行I/O操作后可继续执行其它工作,直至中断到达,称为异步传输;

如果进程在启动设备后便被挂起,称为同步传输。

4)缓冲技术

建立数据缓冲区使数据的到达率和离去率相匹配。

(2)I/O软件的四个层次

  1. I/O中断处理程序
  2. 设备驱动程序
  3. 与设备无关的操作系统I/O软件
  4. 用户层I/O软件

①I/O中断处理程序

通常是设备驱动程序的重要组成部分,与硬件设备密切相关的软件,与系统其余部分尽可能少发生联系。

进程请求I/O操作时被阻塞,直到数据传输结束并产生I/O中断请求时,操作系统接管CPU后执行中断处理程序。

工作

②设备驱动程序

设备驱动程序包括与设备相关的代码。

1)概念

每类设备控制器都是不同的,需要不同的软件进行控制。专门与控制器对话,发出命令并接收响应的软件称为设备驱动程序。

2)工作
3)功能实质

从独立于设备的软件中接收并执行I/O请求。

4)主要功能

③与设备无关的操作系统I/O软件

功能
1)设备命名与保护
2)提供与设备无关的块尺寸
3)缓冲技术
4)设备分配和状态跟踪
5)错误处理和报告

④用户空间的I/O软件

1)与用户程序链接在一起的库例程(库函数)

在高级语言中,与设备I/O相关的系统调用通常封装在库函数中。

库函数与用户程序链接在一起,但是系统调用处理程序仍然位于操作系统中。

2)运行于内核之外的系统I/O程序

运行于内核之外的典型系统I/O软件是假脱机(SPOOLing)系统。

假脱机(SPOOLing)

假脱机是在多道程序设计系统中优化顺序共享型I/O设备使用方式的一种方法。

该方法利用一道程序模拟脱机输入时的外围控制机的功能,把低速I/O设备上的数据传送到高速磁盘上;

再利用另一道程序模拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速输出设备上;

此时的外围操作与CPU对数据的处理同时进行,这种在联机的情况下实现的同时外围操作称为SPOOLing。

应用示例1——打印机:

对打印机进行假脱机改造的方法是创建一个守护进程和一个假脱机目录。

用户进程需要打印文件时,将打印文件提交到假脱机目录下,用户进程即可返回执行其它任务。

守护进程获得调度时开始逐一打印假脱机目录下各个进程的文件。

应用示例2——网络传输文件:

创建一个网络守护进程和一个网络假脱机目录。

用户需要通过网络发往目的地的文件提交到网络假脱机目录下。

网络守护进程逐一取出发送出去。

image-20240616180115049

image-20240616180130944

image-20240616180143599

image-20240616180154216


3.缓冲区

  1. 单缓冲
  2. 双缓冲
  3. 多缓冲

4.设备分配

(1)设备独立性

①概念

通常用户不指定特定的设备,而指定逻辑设备,使得用户作业和物理设备独立开来,再通过其它途径建立逻辑设备和物理设备之间的对应关系,称这种特性为“设备独立性”。

②好处

(2)设备分配方式

①设备特性分类

②相应管理和分配外围设备技术

③常用设备分配算法

先来先服务、优先级高者先服务等。

多个进程请求分配设备时,应防止产生死锁。

④独占设备实施共享及虚拟分配可以提高设备利用率

⑤设备分配的数据结构

⑥策略

image-20240616181608536

(3)数据结构

①系统设备表(System Device Table,SDT)

image-20240616181903322

②设备控制表(Device Control Table,DCT)

image-20240616182022541

③控制器控制表(Controller Control Table,COCT)

image-20240616182059526

④通道控制表(Channel Control Table,CHCT)

image-20240616182127910