操作系统第五章输入输出设备管理

第五章输入输出设备IO管理

  • I/O管理的概念
    • I/O设备
      • 1.设备的两种分类
        • 按传输速率分类的三种I/O设备
      • 2.I/O接口
      • 3.I/O端口
        • cpu和io端口通信的两种方法
    • I/O控制方式
      • 中断流程下的cpu和io控制器
      • DMA控制器4组成部分
    • I/O软件层次结构
    • 应用程序IO接口
  • 设备独立性软件
    • 高速缓存与缓冲区
      • 1. 磁盘高速缓存
      • 2.缓冲区
      • 高速缓存和缓冲区的对比
    • 设备分配与回收
    • SPOOLing技术(假脱机技术)
    • 设备驱动程序接口

I/O管理的概念

I/O设备

1.设备的两种分类

(1)块设备:以数据块为信息交换单位的有结构设备,等同于磁盘
补充
磁盘特点:传输速率快可寻址随机读写
(2)字符设备:以字符为信息交换单位的无结构设备
特点:传输速率低不可寻址,采用中断I/O方式

按传输速率分类的三种I/O设备

(1)低速设备:传输速率在每秒几字节到几百字节(键盘,鼠标)
(2)中速设备:传输速率在每秒几千字节到几万字节的设备(激光打印机)
(3)高速设备:传输速率在数万字节到千兆字节的设备(磁盘器,光盘机)

2.I/O接口

接口的作用:接口位于CPU和设备之间,主要负责与CPU通信,又要与设备通信,按照CPU传来的命令去控制设备工作
主要部分:
(1)设备控制器与CPU的接口:包含数据线地址线控制线
作用
数据线:连接数据寄存器控制状态寄存器
数据寄存器:存放设备或者cpu传输来的数据
控制状态寄存器:存放从cpu和设备传来的控制信息
(2)设备控制器和设备的接口:一个设备可以连接一到多个设备,因此有不止一个设备接口,每个接口包含 数据控制状态的信息
(3)I/O逻辑:对设备逻辑控制,通过控制线cpu交互,对从cpu收到的IO命令进行译码,cpu启动时,将启动命令发给控制器,同时通过地址线把地址发给控制器,有控制器的io逻辑进行译码
设备控制器的功能接收识别cpu的命令,数据交换,标识和报告设备状态,地址识别,数据缓冲,差错控制

3.I/O端口

概念:是指设备控制器中可被cpu直接访问的寄存器
(1)数据寄存器:实现设备与外设之间的数据缓冲
(2)状态寄存器:获取执行结果和设备状态信息,
(3)控制寄存器:有cpu写入,以便启动命令和更改视频模式

cpu和io端口通信的两种方法

(1)独立编址:为每个端口分配一个io端口号,所有端口形成io端口空间,只有使用特权io指令才能访问端口
(2)统一编址:又称内存映射io,每个端口被分配唯一内存地址,且不会有内存被分配到这一地址,通常分配给端口地址靠近地址空间的顶端

I/O控制方式

氛围以下四种控制方式
(1)程序直接控制方式:计算机从外部设备读取每个字,cpu需要对外设状态进行循环检查,直到确定该字已经在io控制器的数据寄存器中
因为在cpu中未采用中断机制,比如说无法在完成后向cpu发送一个完成的信号,并且cpu是高速设备,而且io是低速设备,所以cpu的大部分时间都是在等待io设备完成数据io的循环测试
优点:控制方式简单易实现
缺点:只能串行,cpu利用率低
(2)中断驱动方式:允许io设备主动打断cpu的运行并请求服务,从而释放cpu,使其向控制器发送命令后能够进行其他操作
(3)DMA(直接存储器存取):io和内存之间需要经过cpu寄存,但在DMA中io和内存之间可以开辟数据交换通路,释放cpu
DMA特点:以数据块为单位,数据是从设备传入内存或者相反,数据块传输是在DMA控制器下完成,只有在数据块开始或者结束时候才需要cpu进行操作
注意:DMA和上面的中断方式区别:中断在每个数据需要穿的时候中断cpu,而DMA则是在数据传完了结束后才中断cpu,并且一个是cpu控制,一个是DMA控制器控制

中断流程下的cpu和io控制器

(此处是插入在上面的第二点中断驱动下的)
(1)io控制器角度下的中断:控制器从cpu接收命令,读外设数据进数据寄存器,通过控制线给cpu发送中断信号,表示数据已经准备好了,然后等cpu操作数据,cpu就会给io发送取数据的命令,然后io就会把数据通过数据总线传到cpu的寄存器上,然后一个环节就算结束
(2)cpu视角下的中断:通俗的说就是,cpu先发出读命令 ,然后就会保存当前程序运行时进程的上下文,然后转去执行其他程序,通过对当前的指令周期进行检查,入如果在末尾检查到了中断,cpu就去执行中断处理程序进行中断,cpu就开始从io控制器读数据进寄存器

DMA控制器4组成部分

(1)命令状态寄存器(CR):接受cpu的io命令,控制信息,设备状态
(2)内存地址寄存器(MAR)输入时,把数据存入内存的目标起始位置,然后输出时,存放由内存到设备的源地址
(3)数据寄存器(DR)暂时存储从设备到内存,或者相反的数据
(4)数据计数器(DC):存放本次要传送的字节数

I/O软件层次结构

(1)用户层io软件:与用户交互的接口,用户可以直接调用用户层提供的与io有关的库函数,对设备进行操作
(2)设备独立性软件:用于实现用户程序设备驱动统一接口,设备命令,设备保护,设备的分配和释放
总之:设备独立性软件主要功能主要包括以下两个方面:执行所有设备的公共操作(设备分配与回收,将逻辑设备映射为物理设备)和向用户层提供统一接口
使用逻辑地址的好处:增加设备分配的灵活性,易于实现io重定向
io重定向的含义:是指用于io操作的设备可以更换(即重定向),不必改变应用程序
(3)设备驱动程序硬件层面的东西,它的主要作用是实现系统对设备发出操作指令,驱动io设备工作驱动正常,以进程的形式存在
驱动的作用就是向上一层的用户程序提供一组标准的接口
(4)中断处理程序:用于保存被中断的进程cpu环境,转入相应的处理程序进行处理,主要任务就是在进程的上下文进行切换,对处理的中断信号源进行测试,读取设备状态和修改进程状态

应用程序IO接口

在io系统与高层的接口中,根据其构造不同,分为了不同的接口
(1)字符设备接口:
字符设备概念:是指数据的存取和传输是以字符为单位
常见的字符操作时get和put操作,通过get操作从缓冲区获取字符,然后通过put操作将字符输出到缓冲区
字符设备因为类型太多了,所以在接口中提供了一种通用的in-control命令,字符设备属于独占设备,接口中还有打开和关闭的操作,实现资源互斥
(2)块设备接口:是指数据的存取和传输是以数据块为单位的设备
磁盘设备的io接口常采用DMA的方式
块设备
接口作用
隐藏磁盘的二维结构,将抽象的命令映射成底层操作,内存映射通过内存的字节数组来访问磁盘,而不提供读写操作,
隐藏二维结构含义:就是直接用数字顺序的编号,成为线性结构的排列,而不是像二维结构一样,会把磁盘区分为盘号和扇区号这种
映射文件到内存的系统调用会返回包含文件副本的一个虚拟内存地址,只在需要访问内映像的时候,才由虚拟存储器实际调页
(3)网络设备的接口:现代操作系统提供面向网络的功能,还需要提供网络组织网络通信接口才能使计算机上网
操作系统提供的网络io接口,为网络套接字接口,套接字接口的系统的调用时应用程序创建本地套接字连接到远程应用程序创建的套接字,由此链接发送接收数据
(4)阻塞和非阻塞io
操作系统的io接口分为两种模式:阻塞非阻塞
阻塞io:是指在用户进程调用io操作的时候,进程就被阻塞,需要等待io操作完成后,进程才会被唤醒继续执行
非阻塞io:是指用户进程调用io操作时,不阻塞进程,该调用返回一个错误的的返回值,通常,进程需要通过轮询的方式来查询io操作是否完成并且大多数的操作系统的io接口都是采用阻塞io

设备独立性软件

高速缓存与缓冲区

1. 磁盘高速缓存

磁盘高速缓冲区能够提高磁盘的io速度,对访问高速缓存比访问原始磁盘书据更高效
工作机制的详解:利用内存中的存储空间来暂存从磁盘独处的一系列盘块中的信息
因此属于逻辑上的磁盘,物理上属于内存中的盘块

2.缓冲区

设置缓冲区的目的:
(1)缓和cpu和io设备之间速度不匹配的矛盾
(2)减少对cpu中断频率,放宽对cpu中断响应时间的限制
(3)解决基本数据大小(数据粒度)不匹配的问题
(4)提高cpu和io之间的并行性
缓冲区的实现方法:
(1)采用硬件缓冲区来处理一些重要的部分,但是价格太昂贵
(2)采用缓冲区(位于内存区域)
缓冲技术的分类
(1)单缓冲
概念:在主存中设置一个缓冲区,当设备和处理机交换数据的时候,先将数据写入缓冲区,然后需要数据的设备或处理机从缓冲区取走数据,在缓冲区写入或读出的时候,宁外一方需要等待
工作区数据处理完的时间C,缓冲区充满的时间T,工作区满了然后缓冲区的数据同时为空的时间M
单缓冲的时间:
若T>C,则用时M+T
若T 则单缓冲区处理每块数据的用时为max(C,T)+M
(2)多缓冲
概念:因为cpu在M时时处于空闲状态,由此引入双缓冲,io设备输入数据时先装入缓冲区1,填满后在装入缓冲区2,,与此同时处理机可以从缓冲区1中取出数据给用户进程,当缓冲区1中全部取出并且缓冲区2也填满,则处理机又从缓冲区2中取出数据进用户进程,然后缓冲区1又开始填数据,如此循环往复
双缓冲的时间

高速缓存和缓冲区的对比

设备分配与回收

SPOOLing技术(假脱机技术)

设备驱动程序接口

你可能感兴趣的:(计算机操作系统,linux,网络,java)