一、I/O设备概述
I/O设备
“I/O”就是“输入/输出”( Input/Output)。l/O设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件。
l/O设备的机械部件主要用来执行具体l/O操作。如我们看得见摸得着的鼠标/键盘的按钮,显示器的LED屏,移动硬盘的磁臂、磁盘盘面。
l/O设备的电子部件通常是一块插入主板扩充槽的印刷电路板。
按使用特性分类
人机交互类外部设备 :鼠标、键盘、打印机等,用于人机交互。数据传输速度慢。
存储设备 : 移动硬盘、光盘等,用于数据存储。数据传输速度快。
络通信设备 : 络通信设备:调制解调器等,用于 络通信。数据传输速度介于上述二者之间。
按传输速率分类
低速设备 : 鼠标、键盘等,传输速率为每秒几个到几百字节。
中速设备 : 如激光打印机等,传输速率为每秒数千至上万个字节。
高速设备 : 如磁盘等,传输速率为每秒数千字节至千兆字节的设备。
按信息交换的单位分类
块设备 : 如磁盘等,数据传输的基本单位是“块”,传输速率较高,可寻址,即对它可随机地读/写任一块。
字符设备 : 鼠标、键盘等,数据传输的基本单位是字符。传输速率较慢,不可寻址,在输入/输出时常采用中断驱动方式
I/O控制方式
I/O控制器
一个I/O控制器可能会对应多个设备
数据寄存器、控制寄存器、状态寄存器可能有多个(如:每个控制/状态寄存器对应一个具体的设备),且这些寄存器都要有相应的地址。有的计算机会让这些寄存器占用内存地址的一部分,称为内存映像I/O。另一些计算机则采用I/O专用地址,即寄存器独立编址。
引入中断机制。由于I/O设备速度很慢,因此在CPu发出读/写命令后,可将等待I/O的进程阻塞,先切换到别的进程执行。当I/O完成后,控制器会向CPU发出一个中断信 ,CPU检测到中断信 后,会保存当前进程的运行环境信息,转去执行中断处理程序处理该中断。
处理中断的过程中,CPU从I/O控制器读一个字的数据传送到CPU寄存器,再写入主存。接着,CPU恢复等待进程的运行环境,然后继续执行。
注意:CPU会在每个指令周期的末尾检查中断
中断处理过程中需要保存、恢复进程的运行环境,这个过程是需要一定时间开销的。中断过多也会降低系统开销。
I/O子系统的层次结构
用户层I/O软件
用户层软件实现了与用户交互的接口,用户可直接使用该层提供的、与I/O操作相关的库函数对设备进行操作。(比如:printf(“hello, world!”);)
用户层软件将用户请求翻译成格式化的I/O请求,并通过系统调用请求操作系统内核的服务。
printf(“hello, world!”);会被翻译成等价的write系统调用,当然,用户层软件也会在系统调用时填入相应参数。
设备独立性软件
。
主要实现功能:
- 向上层提供统一的调用接口(如read,write系统调用)
- 设备保护,原理类似与文件保护。设备被看做是一种特殊的文件,对设备的访问权限也不一样。
- 差错控制,设备独立性软件需要对一些设备的错误进行处理
- 设备的分配与回收
- 数据缓冲区管理,可以通过缓冲技术屏蔽设备之间数据交换单位大小和传输速度的差异
- 建立逻辑设备名到物理设备名的映射关系
需要通过逻辑设备表(LUT,Logical UnitTable)来确定逻辑设备对应的物理设备,并找到该设备对应的设备驱动程序。
二、 I/O核心子系统
高速缓存与缓冲区
概念
缓冲区是一个存储区域,可以由专门的硬件寄存器组成,也可利用内存作为缓冲区。
使用硬件作为缓冲区的成本较高,容量也较小,一般仅用在对速度要求非常高的场合(如存储器管理中所用的联想寄存器,由于对页表的访问频率极高,因此使用速度很快的联想寄存器来存放页表项的副本)。
一般情况下,更多的是利用内存作为缓冲区,“设备独立性软件”的缓冲区管理就是要组织管理好这些缓冲区。
使用单/双缓存在通信时的区别
原则 : 根据设备特性,用户要求,系统配置等情况。总原则:既要充分发挥设备的使用效率,又要避免造成进程死锁,还要将用户程序和具体设备隔离开。
静态分配 : 进程运行前为其分配全部所需资源,运行结束后归还资源。(破坏了请求和保持条件,不会发生死锁)。
动态分配 :进程运行过程中动态申请设备资源。
对于独占设备,既可以采用动态也可以采用静态分配方式,但往往采用静态分配。
设备分配步骤
输入进程和输出进程
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!