操作系统概念笔记——第十三章:I/O输入系统

Posted 叶卡捷琳堡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统概念笔记——第十三章:I/O输入系统相关的知识,希望对你有一定的参考价值。

第十三章:I/O输入系统

计算机有两个主要任务:I/O操作与计算处理

操作系统在计算机I/O方面的作用是管理和控制I/O操作和I/O设备

13.2 I/O硬件

计算机使用很多种设备。设备与计算机通信通过一个连接点(端口),例如串行端口。

如果一个或多个设备使用一组共同的线,那么这种连接称为总线。总线是一组线和一组严格定义的,可以描述在线上传输信息的协议

如果设备A通过电缆连接到设备B上,设备B又通过电缆连接到设备C上,设备C通过端口连接到计算机上,那么这种方式称为链环(diasy chain)


在典型的PC总线结构中,显示了一个PCI总线用以连接处理器-内存子系统与快速设备。

扩展总线用于连接串行、并行端口和相对较慢的设备(如键盘)

控制器是用于操作端口、总线或设备的一组电子器件

13.2.1 轮询

轮询(polling)

主机与控制器之间交互的完成协议可能很复杂。下面举例解释握手概念

假设有2个位来协调控制器与主机之间的生产者和消费者之间的关系。控制器通过状态位寄存器的忙位(busy bit)来显示其状态(置位:将1写入1位中,清位:将0写入位中)。控制器工作忙时就置忙位,可以接受下一命令时就清忙位。

当主机需要通过端口来写输出数据时,主机与控制器之间的握手协调如下

  1. 主机不断读取忙位,直到该位被清除

在步骤一中,主机处于忙等待轮询(polling),在该循环中,不断地读取状态寄存器直到忙位被清除。

如果不断重复轮询,主机很少会发现已准备好的设备,同时其它需要使用处理器处理的工作又不能完成,轮询效率就会变差。

如果让设备准备好再通知处理器,那么效率会更高。使外设通知CPU硬件的机制被称为中断

13.2.2 中断

CPU硬件有一条中断请求线(IRL),CPU在执行完每条指令后,都将检测IRL。当CPU检测到已经有控制器通过中断请求线发送了信号,CPU将保存当前状态并且跳转到内存固定位置的中断处理程序

中断处理程序判断中断原因,进行必要的处理,重新恢复状态,最后执行中断返回指令以便使CPU返回中断以前的执行状态。

在这里插入图片描述
绝大多数CPU有两个中断请求线。一个是非屏蔽中断,主要用来处理如不可恢复内存错误等事件。另一个是可屏蔽中断,这可以由CPU在执行关键的不可中断的指令序列前加以屏蔽。可屏蔽中断可以被设备控制器用来请求服务

13.2.3 直接内存访问

为了避免做大量传输时增加CPU的负担,许多计算机将一部分任务下放给一个专用处理器。叫做**直接内存访问(DMA)**控制器

CPU在将该命令块的地址写入DMA控制器中后,就继续其它工作

13.3 I/O应用接口

可以从详细而不同的I/O设备中抽象出一些通用类型。每个设备类型都可以通过一组标准函数(接口)进行访问。

设备驱动程序层的作用是为内核I/O子系统隐藏设备控制器之间的差异

13.3.1 块与字符设备

块设备接口规定了访问磁盘驱动器和其它基于块设备所需的各个方面。通常设备应能理解read()和write()命令,如果是随机访问设备,也应有seek命令以描述下次传输到哪个块。

13.3.4 阻塞与非阻塞I/O

系统调用接口的另一方面与阻塞和非阻塞I/O的选择有关。当应用程序发出一个阻塞系统调用时,应用程序的执行就被挂起。

有的用户级进程需要使用非阻塞I/O。用户接口是其中的一个例子,它用来接受键盘和鼠标输入,同时还需处理并在屏幕上显示数据

以上是关于操作系统概念笔记——第十三章:I/O输入系统的主要内容,如果未能解决你的问题,请参考以下文章

第十三章磁盘文件管理

DAY13JAVA第十三天I/O学习笔记

Java编程思想第四版读书笔记——第十三章 字符串

《C++Primer(第5版)》第十三章笔记

网络操作系统第十十三章习题

算法导论读书笔记-第十三章-红黑树