操作系统笔记:设备管理

IO设备的基本概念与分类

什么是IO设备

IO设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机的硬件部件。

unix系统将外部设备抽象为一种特殊的文件,用户可以使用与文件操作相同的方式对外部设备进行操作

按使用特性分类
  1. 人机交互外部设备(鼠标、键盘等):数据传输速度慢
  2. 存储设备(移动硬盘、光盘等):数据传输速度块
  3. 网络通信设备(调制解调器等):速度介于上述两者之间
按传输速率分类
  1. 低速设备
  2. 中速设备
  3. 高速设备
按信息交换的单位分类
  1. 块设备(磁盘等):数据传输的基本单位是“块”,可寻址(随机的读写任一块)
  2. 字符设备(鼠标、键盘等):数据传输的基本单位是字符(不可寻址,常采用中断驱动的方式)

IO控制器

机械部件

用来执行具体的IO操作

电子部件

因为CPU无法直接控制IO设备的机械部件,因此IO设备需要有一个电子部件作为CPU和IO设备机械部件之间的“中介”,用以实现CPU对设备的控制

功能
  1. 接收和识别CPU发出的命令(IO设备中有相应的控制寄存器来存放命令和参数)
  2. 向CPU报告设备的状态(IO控制器中有相应的状态寄存器,用以记录IO设备的当前状态)
  3. 数据交换(IO控制器中设置相应的数据寄存器。输出时,数据寄存器用以暂存CPU发来的数据,之后再由控制器传送设备。输入时,数据寄存器用于暂存设备发来的数据,之后CPU从数据寄存器中取走数据)
  4. 地址识别(类似于内存的地址,为了区别设备控制器中的各个寄存器,需要给各个寄存器设置一个特定的“地址”。IO控制器通过CPU提供的“地址”来判断CPU要读写的是哪个寄存器)
组成
CPU与控制器的接口

用于实现CPU与控制器之间的通信。CPU通过控制线发出命令;通过地址线指明要操作的设备;通过数据线来取出(输入)数据,或放入(输出)数据

IO逻辑

负责接收和识别CPU的各种命令(如地址译码),并且负责对设备发出命令

控制器与设备的接口

用于实现控制器与设备之间的通信

在这里插入图片描述

IO控制方式

程序直接控制方式中断驱动方式DMA方式通道控制方式
CPU干预的频率很频繁。IO操作开始之前、完成之后需要CPU介入,并且在等待IO完成的过程中CPU需要不断的轮询检查每次IO操作开始之前、完成之后需要CPU介入仅在传送一个或者多个数据块的开始、结束时,才需要CPU的干预极低,通道会根据CPU的指示执行相应的通道程序,只有一组数据块的读写完成后才需要发出中断信号,请求CPU干预
数据传送的单位每次读写一个字每次读写一个字每次读写一个或多个块(每次读写的只能是连续的多个块,且这些块读入内存后在内存中也必须是连续的)每次读写一组数据块
数据的流向读操作:IO设备->CPU->内存
写操作:内存->CPU->IO设备
读操作:IO设备->CPU->内存
写操作:内存->CPU->IO设备
读操作:IO设备->内存
写操作:内存->IO设备
在通道的控制下进行
读操作:IO设备->内存
写操作:内存->IO设备
优点实现简单。在读写指令之后,加上实现循环检查的一系列指令即可CPU不再需要不停的轮询,CPU利用率得到提升数据传输以“块”为单位,CPU介入频率进一步降低。数据的传输不再需要经过CPU再写入内存,数据传输效率进一步增加。CPU与IO设备的并行性得到提升CPU、通道、IO设备可并行工作,资源利用率很高
缺点CPU与IO设备只能串行工作,CPU需要一直轮询检查,长期处于“忙等”状态,CPU利用率低每个字在IO设备与内存之间的传输都需要经过CPU。频繁的中断处理会消耗较多的CPU时间CPU每发出一条IO指令,只能读写一个或者多个连续的数据块实现复杂,需要专门的通道硬件支持
程序直接控制方式

完成一次读写操作的流程

关键:轮询(循环访问状态寄存器)

在这里插入图片描述

中断驱动方式

中断机制:由于IO设备速度很慢,因此在CPU发出读写命令后,可将等待IO的进程阻塞,先切换到别的进程执行。当IO完成后,控制器会向CPU发出一个中断信号,CPU检测到中断信号后,会保存当前进程的运行环境信息,转去执行中断处理程序处理该中断。处理中断的过程中,CPU从IO控制器读一个字的数据传送到CPU寄存器,再写入主存,接着CPU恢复等待IO的进程的运行环境,然后继续执行

  1. CPU会在每个指令周期的末尾检查中断
  2. 中断处理过程中需要保存、恢复进程的运行环境

在这里插入图片描述

DMA方式

Direct Memory Access ,直接存储器存取,主要用于块设备的IO控制

DMA控制器本质上也是一个IO控制器,本质上也是每次读取一个字并且放到DR中暂存

在这里插入图片描述

  1. 数据传送单位是“块”,不再是一个字一个字的传送

  2. 数据的流向是从设备直接放入内存,或者从内存直接到设备。不再需要CPU作为中转站

  3. 仅在传送一个或多个数据块的开始和结束时,才需要CPU干预

在这里插入图片描述

通道控制方式

通道:一种硬件,可以理解为“猴版CPU”(执行的指令很单一;通道程序是放在主机内存的,与CPU共享内存)。CPU可以识别并执行一系列的通道指令

在这里插入图片描述

IO软件层次结构

在这里插入图片描述

用户层软件

本质上就是库函数,实现了与用户交互的接口

设备独立性软件

又称设备无关性软件,与设备的硬件特性无关的功能几乎都在这一层实现

主要实现功能:

  1. 向上层提供统一的调用接口
  2. 设备的保护
  3. 差错处理
  4. 设备的分配与回收
  5. 数据缓冲区管理
  6. 建立逻辑设备名到物理设备名的映射关系:根据设备类型选择调用相应的驱动程序。一般通过“逻辑设备表(LUT,logical unit table)”来确定逻辑设备对应的物理设备,并且找到该设备对应的设备驱动程序
设备驱动程序

主要负责对硬件设备的具体控制,将上层发出的一系列命令,转化成特定设备“能听得懂”的一系列操作,包括设置设备寄存器、检查设备状态等

驱动程序一般会以一个独立进程的方式存在

中断处理程序

当IO任务完成时,IO控制器会发送一个中断信号,系统会根据中断信号类型找到相应的中断处理程序并执行

在这里插入图片描述

硬件

执行IO操作,由机械部件、电子部件组成

假脱机技术

又称SPOOLing技术,用软件的方式模拟脱机技术

脱机技术

在外围控制机的控制下,慢速输入设备的数据先被输入到更快速的磁带上。之后主机可以从更快速的磁带上读入数据,从而缓解了速度矛盾

输入井输出井

在这里插入图片描述

设备的分配与回收

分配时考虑因素
  1. 固有属性:独占设备、共享设备、虚拟设备

  2. 设备分配算法:先来先服务、短任务优先等

  3. 设备分配中的安全性

    1)安全分配方式:

    ​ 为进程分配一个设备后就将进程阻塞,本次IO完成后才将进程唤醒

    ​ 优点:破坏了“请求和保持”条件,不会出现死锁

    ​ 缺点:对一个进程来说,CPU和IO设备只能串行工作

    2)不安全分配方式:

    ​ 进程发出IO请求后,系统为其分配IO设备,进程可继续执行,之后还可以发出新的IO请求,只有当某个请求得不到满足时才将进程阻塞

    ​ 优点:效率高,进程的计算任务和IO任务可以并行处理,使进程迅速推进

    ​ 缺点:有可能发生死锁

静态分配和动态分配

静态分配:进程运行前为其分配全部所需资源,运行结束后归还资源

动态分配:进程运行过程中动态申请设备资源

设备分配管理中的数据结构

设备控制表(DCT):系统为每个设备配置一张DCT,用于记录设备情况
在这里插入图片描述

控制器控制表(COCT):每个设备控制器都会对应一张COCT。操作系统根据COCT的信息对控制器进行操作和管理

在这里插入图片描述

通道控制表(CHCT):每个通道都会对应一张CHCT。操作系统根据CHCT的信息对通道进行操作和管理
在这里插入图片描述

系统设备表(SDT):记录了系统中全部设备的情况,每个设备对应一个表目

在这里插入图片描述

缓冲区管理

缓冲区

缓冲区是一个储存区域,可以由专门的硬件寄存器组成,也可以利用内存作为缓冲区

note:当缓冲区数据非空时,不能往缓冲区冲入数据,只能从缓冲区把数据传出;当缓冲区为空时,可以往缓冲区冲入数据,但必须把缓冲区充满以后,才能从缓冲区把数据传出

作用
  1. 缓和CPU与IO设备之间速度不匹配的矛盾
  2. 减少对CPU的中断频率,放宽对CPU中断相应时间的限制
  3. 解决数据粒度不匹配的问题
  4. 提高CPU与IO设备之间的并行性
单缓冲

操作系统会在主存中为用户进程分配一个缓冲区(通常一个缓冲区大小就是一个块)

双缓冲

操作系统在主存中分配两个缓冲区

循环缓冲区

在这里插入图片描述

缓冲池

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值