ch5 设备管理

22 阅读8分钟

设备管理基础

I/O设备的概念与分类

I/O设备就是将数据输入或输出计算机的外部设备,属于计算机中的硬件设备。按照不同的分类方式,有如下分类:

  • 按使用特性分类:
    • 人机交互类外部设备
    • 存储设备
    • 网络通信设备
  • 按传输速率分类:
    • 低速设备
    • 中速设备
    • 高速设备
  • 按信息交互的单位分类:
    • 块设备(传输快,可寻址)
    • 字符设备(传输慢,不可寻址,常采用中断驱动方式)

I/O控制器(IO接口)

I/O设备由机械部件和电子部件组成,I/O控制器是CPU和机械设备之间的中介,又称作设备控制器,用于实现对I/O设备的控制,有以下几种功能:

  • 接受和识别CPU发出的命令:控制器中会有相应的控制寄存器来存放CPU发来的命令和参数
  • 向CPU报告设备的状态:控制器中有相应的状态寄存器来记录IO设备当前的状态
  • 数据交换:控制器中也有相应的数据寄存器来暂存CPU或设备发来的数据
  • 地址识别:类似于内存的地址,为了区分设备控制器中的各个寄存器,也需要给各个寄存器设置一个特定的“地址”。I/0控制器通过CPU提供的“地址”来判断CPU要读/写的是哪个寄存器,由I/O逻辑实现

更直观的图: image.png

I/O控制器有两种编址方式:

  • 内存映射I/0:控制器中的寄存器与内存统一编址,可以采用对内存进行操作的指令来对控制器进行操作
  • 寄存器独立编址:控制器中的寄存器独立编制,需要设置专门的指令来操作控制器

I/O控制方式

四种方式,详情见计组笔记,在这里就不细写了,贴一张对比图吧

image.png

设备管理软件

I/O软件层次结构

从用户到硬件有如下几个层次:用户层软件-独立设备性软件-设备驱动程序-中断处理程序
还是挺重要的,看王道的总结吧,比较直观 屏幕截图 2024-11-07 211203.png

I/O应用程序接口和驱动程序接口

I/O应用程序接口:

  • 字符设备接口:不可寻址,每次读一个字符
  • 块设备接口:可寻址,每次读写一个块
  • 网络设备接口:网卡,决定数据给谁,涉及到计网的知识,听不太懂

什么是阻塞/非阻塞I/O?

  • 阻塞I/O:应用程序发出I/O系统调用,进程需转换为阻塞态等待。比如字符设备接口,从键盘读一个字符get
  • 非阻塞I/O:应用程序发出I/O系统调用,系统调用可迅速返回,无需阻塞等待。比如块设备接口,往磁盘写数据wtite

设备驱动程序接口:操作系统规定好驱动从程序的接口标准,各厂商必须按照要求开发设备驱动程序

I/O缓冲区

缓冲区有什么作用?CPU可以把要输出的数据快速地放入缓冲区,之后就可以做别的事,慢速的IO设备可以慢慢从缓冲区取走数据

  • 缓和CPU与I/0设备之间速度不匹配的矛盾
  • 减少对CPU的中断频率,放宽对CPU中断相应时间的限制
  • 解决数据粒度不匹配的问题
  • 提高CPU与I/0设备之间的并行性

单缓冲

操作系统会在主存中为其分配一个缓冲区(默认大小一个块)
当缓冲区数据非空时,不能往缓冲区冲入数据,只能从缓冲区把数据传出;当缓冲区为空时可以往缓冲区冲入数据,但必须把缓冲区充满以后,才能从缓冲区把数据传出。任一时刻只能实现数据的单向传输
常考察计算处理一块数据平均需要多久。假设初始状态为工作区满缓冲区空,分析下次达到相同状态需要多少时间,就是平均处理一块数据所需时间。
Max(T,C)+M image.png

双缓冲

操作系统会在主存中为其分配两个缓冲区(每个默认大小一个块) ,假设初始状态为工作区空缓冲区一满一空,分析下次达到相同状态需要多少时间,就是平均处理一块数据所需时间。
Max(T,C+M) image.png image.png

循环缓冲区、缓冲池

循环缓冲区:将多个大小相等的缓冲区链接成一个循环队列
缓冲池不是重点 image.png

I/O核心子系统

image.png I/O调度:用某种算法来确定一个好的顺序来处理各个I/O请求
设备保护:设备被看成是一种特殊的文件,操作系统要提供文件保护功能,不同的用户对各个文件有不同的访问权限

虚拟设备

首先区分几个概念 独占型设备:只允许各个进程串行使用的设备
共享型设备:允许多个进程同时使用的设备

假脱机技术SPOOLing

脱机技术:脱离主机的控制进行的输入/输出操作。
外围控制机的控制下,慢速输入设备的数据先被输入到更快速的磁带上,之后主机可以从快速的磁带上读入数据,从而缓解速度矛盾,实现预输入缓输出。 假脱机技术:又称“SPOOLing技术”用软件的方式模拟脱机技术。

  • 输入井和输出井:
  • 输入和输出进程:模拟脱机输入/输出时的外围控制机
  • 输入缓冲区和输出缓冲区:内存中的缓冲区,输入输出时的中转站 image.png

打印机是种独占式设备,但可以用SPOOLing技术改造成共享设备。虽然系统中只有一个打印机,但每个进程提出打印请求时,系统都会在输出井中我为其分配一个存储区,相当于分配了一个逻辑设备,使每个进程都觉得自己在独占一台打印机,实现对打印机的共享。 image.png

设备的分配与回收

在进行设备的分配与回收时有三个需要考虑的因素:设备的固有属性、设备分配算法、设备分配中的安全性。

  • 设备的固有属性有三种,独占设备、共享设备和虚拟设备
  • 设备的分配算法就是先来先服务、优先级高者优先、短任务优先等等
  • 从进程运行的安全性上考虑,设备分配有两种方式:
    • 安全分配方式:为进程分配一个设备后就将进程阻塞,I/O结束后才将进程唤醒。一个时段内每个进程只能使用一个设备
    • 不安全分配方式:进程发出I/O请求后,系统为其分配设备,进程可继续执行,之后还可以发出新的I/O请求。一个进程可以同时使用多个设备,银行家算法

设备分配的数据结构和步骤

image.png

image.png

image.png

image.png

image.png

image.png

image.png

磁盘

磁盘属于一种I/O设备,各种计算题是考试重点

磁盘的结构

  • 磁盘:磁盘由表面涂有磁性物质的圆形盘片组成

  • 磁道:每个盘片被划分为一个个磁道,一圈圈

  • 扇区:每个磁道又划分为一个个扇区,一块块

  • 盘面:磁盘有多个盘片“摞“起来,每个盘片有两个盘面

  • 柱面:所有盘面中相对位置相同的磁道组成柱面,类似圆柱面

  • 磁盘的物理地址:(柱面号,盘面号,扇区号)
    看王道的图片吧,比较直观 image.png

  • 在磁盘中读写数据:磁头移动到目标位置,盘片旋转,对应扇区划过磁道才能完成读/写

  • 磁盘的分类:

    • 根据磁头是否可移动:
      • 固定头磁盘(每个磁道有一个磁头)
      • 移动头磁盘(每个盘面只有一个磁头)
    • 根据盘片是否可更换
      • 固定盘磁盘
      • 可换盘磁盘

磁盘调度算法

一次磁盘读写所需要的时间:T=Ts+1/2r+b/(rN)

  • 寻道时间Ts:在读/写数据前,将磁头移动到指定磁道所花的时间。T=s+m*n操作系统的磁盘调度算法会直接影响寻道时间
    • 启动磁头臂的时间s
    • 移动磁头的时间,假设磁头匀速移动,每跨越一个磁道耗时为m,总共需要跨越n条磁道
  • 延迟时间TR:通过旋转磁盘,使磁头定位到目标扇区所需要的时间。设磁盘转速为r,则平均所需的延迟时间T=(1/2)*(1/r)= 1/(2r)
  • 传输时间Tt:从磁盘读出或向磁盘写入数据所经历的时间,假设磁盘转速为r,此次读/写的字节数为b,每个磁道上的字节数为N。则传输时间Tt=(1/r)*(b/N)= b/(rN)

磁盘调度算法有以下几种,常出计算题,具体看ppt吧 image.png

image.png

image.png

image.png

image.png

image.png

减少磁盘延迟时间

image.png

image.png

image.png

image.png

image.png

磁盘的管理

image.png

image.png

image.png

image.png