设备管理基础
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逻辑实现
更直观的图:
I/O控制器有两种编址方式:
- 内存映射I/0:控制器中的寄存器与内存统一编址,可以采用对内存进行操作的指令来对控制器进行操作
- 寄存器独立编址:控制器中的寄存器独立编制,需要设置专门的指令来操作控制器
I/O控制方式
四种方式,详情见计组笔记,在这里就不细写了,贴一张对比图吧
设备管理软件
I/O软件层次结构
从用户到硬件有如下几个层次:用户层软件-独立设备性软件-设备驱动程序-中断处理程序
还是挺重要的,看王道的总结吧,比较直观
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
双缓冲
操作系统会在主存中为其分配两个缓冲区(每个默认大小一个块) ,假设初始状态为工作区空缓冲区一满一空,分析下次达到相同状态需要多少时间,就是平均处理一块数据所需时间。
Max(T,C+M)
循环缓冲区、缓冲池
循环缓冲区:将多个大小相等的缓冲区链接成一个循环队列
缓冲池不是重点
I/O核心子系统
I/O调度:用某种算法来确定一个好的顺序来处理各个I/O请求
设备保护:设备被看成是一种特殊的文件,操作系统要提供文件保护功能,不同的用户对各个文件有不同的访问权限
虚拟设备
首先区分几个概念
独占型设备:只允许各个进程串行使用的设备
共享型设备:允许多个进程同时使用的设备
假脱机技术SPOOLing
脱机技术:脱离主机的控制进行的输入/输出操作。
在外围控制机的控制下,慢速输入设备的数据先被输入到更快速的磁带上,之后主机可以从快速的磁带上读入数据,从而缓解速度矛盾,实现预输入缓输出。
假脱机技术:又称“SPOOLing技术”用软件的方式模拟脱机技术。
- 输入井和输出井:
- 输入和输出进程:模拟脱机输入/输出时的外围控制机
- 输入缓冲区和输出缓冲区:内存中的缓冲区,输入输出时的中转站
打印机是种独占式设备,但可以用SPOOLing技术改造成共享设备。虽然系统中只有一个打印机,但每个进程提出打印请求时,系统都会在输出井中我为其分配一个存储区,相当于分配了一个逻辑设备,使每个进程都觉得自己在独占一台打印机,实现对打印机的共享。
设备的分配与回收
在进行设备的分配与回收时有三个需要考虑的因素:设备的固有属性、设备分配算法、设备分配中的安全性。
- 设备的固有属性有三种,独占设备、共享设备和虚拟设备
- 设备的分配算法就是先来先服务、优先级高者优先、短任务优先等等
- 从进程运行的安全性上考虑,设备分配有两种方式:
- 安全分配方式:为进程分配一个设备后就将进程阻塞,I/O结束后才将进程唤醒。一个时段内每个进程只能使用一个设备
- 不安全分配方式:进程发出I/O请求后,系统为其分配设备,进程可继续执行,之后还可以发出新的I/O请求。一个进程可以同时使用多个设备,银行家算法
设备分配的数据结构和步骤
磁盘
磁盘属于一种I/O设备,各种计算题是考试重点
磁盘的结构
-
磁盘:磁盘由表面涂有磁性物质的圆形盘片组成
-
磁道:每个盘片被划分为一个个磁道,一圈圈
-
扇区:每个磁道又划分为一个个扇区,一块块
-
盘面:磁盘有多个盘片“摞“起来,每个盘片有两个盘面
-
柱面:所有盘面中相对位置相同的磁道组成柱面,类似圆柱面
-
磁盘的物理地址:(柱面号,盘面号,扇区号)
看王道的图片吧,比较直观 -
在磁盘中读写数据:磁头移动到目标位置,盘片旋转,对应扇区划过磁道才能完成读/写
-
磁盘的分类:
- 根据磁头是否可移动:
- 固定头磁盘(每个磁道有一个磁头)
- 移动头磁盘(每个盘面只有一个磁头)
- 根据盘片是否可更换
- 固定盘磁盘
- 可换盘磁盘
- 根据磁头是否可移动:
磁盘调度算法
一次磁盘读写所需要的时间: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吧