设备管理概述:

设备管理的主要功能:

  • 设备分配
  • 设备映射
  • 设备驱动
  • I/O缓冲区的管理

设备分配

多道程序系统中,设备不允许用户直接使用,而是由操作系统统一调度和控制。设备分配功能是设备管理的基本任务。设备分配程序按照一定的策略,为申请设备的用户程序分配设备,记录设备的使用情况。

设备映射

逻辑设备和物理设备概念:


操作系统设备管理python代码实现 操作系统设备管理功能_虚拟设备

设备映射概念:在软件运行期间,操作系统的设备管理程序必须将该应用软件对逻辑设备的引用和转换成对相关物理设备的引用。这种从逻辑设备到物理设备的映射功能,简称为设备映射功能。

设备驱动

概念:对物理设备进行控制,以实现真正的I/O操作。

设备驱动的主要任务:接收上层软件发来的抽象服务请求,例如读、写操作,再把它转化为具体要求,通过一系列的I/O指令,控制设备完成请求的操作;同时,设备驱动程序还将设备发来的有关信号传送给上层软件,例如设备是否已损坏等。

I/O缓冲区的管理

目的




操作系统设备管理python代码实现 操作系统设备管理功能_虚拟设备_02




通用设备管理分层模式


操作系统设备管理python代码实现 操作系统设备管理功能_操作系统_03


I/O子系统的组成与结构

总线型I/O系统结构

操作系统设备管理python代码实现 操作系统设备管理功能_虚拟设备_04

通道型I/O系统结构

操作系统设备管理python代码实现 操作系统设备管理功能_数据_05



具有控制器型I/O系统结构

控制器概念:就是控制设备的器件,一个控制器可以与多个设备相连,交替地或分时地控制与其相连的设备。

操作系统设备管理python代码实现 操作系统设备管理功能_虚拟设备_06


设备的控制

操作系统设备管理python代码实现 操作系统设备管理功能_运维_07

I/O控制方式

  • I/O通道方式
  • DMA方式
  • 中断I/O方式
  • 程序I/O方式

设备分配

设备分配算法:

  • 先来先服务
  • 优先级高者优先服务

独占型设备的分配:进程申请设备->系统分配设备->进程发送使用命令->系统将转到设备驱动模块完成一次I/O操作->进程释放设备->系统回收设备

共享型设备的分配:在宏观上是共享的,在微观上互斥交替使用的。

I/O缓冲技术

目的:缓解了处理机与设备之间的速度不必配的矛盾,实现了设备与处理机一定程度的并行操作。

缓冲区的类型

硬件缓冲区:配置在设备中,具有专门的用途。对处理机透明,不需要处理器直接管理,不会影响系统新能。

软件缓冲区:软件实现的缓冲区是在内存中的一部分,其目的是为了弥补硬件缓冲区的不足。因为并不是所有的外设都拥有,或者足够拥有硬件缓冲区。(操作系统中主要介绍)

缓冲区的类型

单缓冲区


操作系统设备管理python代码实现 操作系统设备管理功能_操作系统_08


双缓冲区


操作系统设备管理python代码实现 操作系统设备管理功能_数据_09


操作系统设备管理python代码实现 操作系统设备管理功能_数据_10


循环缓冲

当用户进程处理数据速度较快,外部设备处理数据速度较慢时,必须考虑增加缓冲区的数量以改善系统性能,这就是多缓冲区。多个I/O缓冲区常常被组织成一个环形队列,故,称为循环缓冲。实质上,双缓冲区可以看作是循环缓冲的一个特例。

缓冲池


操作系统设备管理python代码实现 操作系统设备管理功能_数据_11


操作系统设备管理python代码实现 操作系统设备管理功能_操作系统_12

虚拟设备

虚拟设备技术的实现

在独占型设备与进程之间加入一个共享型设备作为过渡。共享型设备的某一个区域是由若干个设备块构成的,对进程而言相当于真实地设备。就相当于我们需要使用打孔机,但是打孔机处理速度慢且正在被使用,我们可以在进程与打孔机之间使用一个虚拟存储设备(硬盘);这样,进程对打孔机的数据操作,先在硬盘中操作,然后再由硬盘转移到打孔机中。提高了打孔机的利用率,进程处理速度(不用等待打孔机空闲在运行进程)。


操作系统设备管理python代码实现 操作系统设备管理功能_操作系统_13




输入型虚拟设备的实现


操作系统设备管理python代码实现 操作系统设备管理功能_虚拟设备_14




输出型虚拟设备的实现


操作系统设备管理python代码实现 操作系统设备管理功能_数据_15




SPOOLing系统


SPOOling概念:Simultaneous Peripheral Operation On-Line,直译意思是:联机情况下同时进行的外围设备操作,通常称为假脱机操作。

思想:在快速辅助存储设备中,建立I/O缓冲区,用于缓存从慢速输入设备流入内存的数据,或缓存从内存流向慢速输出设备的数据。

实现原理图:


操作系统设备管理python代码实现 操作系统设备管理功能_虚拟设备_16





磁盘管理


操作系统设备管理python代码实现 操作系统设备管理功能_数据_17



 扇区:


操作系统设备管理python代码实现 操作系统设备管理功能_虚拟设备_18

扇区的基本存储单位(扇区)的寻址方式为三维地址:柱面号,盘面号,扇区号。

访问时间:

寻道时间:磁盘接收到读指令后,磁头从当前位置移到目标磁道位置,所需要的时间称为寻道时间。

旋转延迟:旋转磁盘,定位数据所在的扇区,所需的时间称为旋转延迟

数据传输时间:从磁盘上读取数据,所需要的时间称为数据传输时间

访问时间 = 寻道时间 + 旋转时间 + 数据传输时间

磁盘调度算法:


操作系统设备管理python代码实现 操作系统设备管理功能_虚拟设备_19




最短寻道时间优先算法:


操作系统设备管理python代码实现 操作系统设备管理功能_操作系统_20




扫描算法(电梯算法):

类似于电梯的工作原理。

扫描算法(SCAN)是一种按照楼层顺序依次服务请求,它让电梯在最底层和最顶层之间连续往返运行,在运行过程中响应处在于电梯运行方向相同的各楼层上的请求。它进行寻找楼层的优化,效率比较高,但它是一个非实时算法。扫描算法较好地解决了电梯移动的问题,在这个算法中,每个电梯响应乘客请求使乘客获得服务的次序是由其发出请求的乘客的位置与当前电梯位置之间的距离来决定的,所有的与电梯运行方向相同的乘客的请求在一次电向上运行或向下运行的过程中完成,免去了电梯频繁的来回移动。

N步扫描算法:


操作系统设备管理python代码实现 操作系统设备管理功能_虚拟设备_21