I/O软件及中断处理程序

370 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第31天,点击查看活动详情

I/O软件

相对于CPU,设备具有运行速度慢及多样性的特征。针对这两个特征,I/O软件总体设计目标如下。 (1)高效率:确保I/O设备和CPU并行执行,提高资源利用率。 (2)通用性:提供简单抽象、清晰统一的接口,采用统一标准的方法管理所有的设备和I/O操作。

2.达到目标的方法 对硬件设备进行分层抽象,将I/O软件组织成层次结构,低层软件屏蔽硬件细节,高层软件提供简洁、友好的界面。

3.I/O软件总体设计要考虑的问题 (1)设备无关性:屏蔽设备的具体细节,向高层提供抽象的逻辑设备,并完成逻辑设备和具体物理设备的映射。 (2)出错处理:尽可能在接近硬件的层面处理错误。低层软件能够处理的硬件I/O错误不要让高层软件感知。 (3)同步(阻塞)/异步(中断驱动)传输:如果进程在启动设备执行I/O操作后可继续执行其他工作,直至中断到达,则称为异步传输;如果进程在启动设备后便被挂起,则称为同步传输。 (4)缓冲技术:建立数据缓冲区使数据的到达率和离去率相匹配。

4.I/O软件的4个层次 I/O软件具有4个层次:I/O中断处理程序、设备驱动程序、独立于设备的I/O软件、用户空间的I/O软件。

中断处理程序

当用户进程请求设备I/O时,设备驱动程序启动设备后阻塞自己,用户进程也一并阻塞。设备I/O操作完成后,设备控制器向CPU发送中断信号,设备中断处理程序开始工作,设备驱动程序由设备中断处理程序解除阻塞。 设备中断处理程序的主要任务如下:检查设备状态寄存器内容,分析中断原因,若为数据传输出错,则向上层软件报告设备出错信息,实施重执行;若正常结束,则将数据从硬设备复制到设备驱动程序的缓冲区中,如果数据可用,则将数据递交到用户缓冲区,并唤醒等待I/O操作的进程,使其转为就绪态;若有等待传输的I/O指令,则启动下一个I/O请求。

设备驱动程序

1.设备驱动程序的概念 每类设备控制器都是不同的,需要不同的软件进行控制。专门与控制器对话,发出命令并接收响应的软件称为设备驱动程序软件。 每个连接到计算机上的I/O设备都需要某些设备特定的代码来对其进行控制。这样的代码称为设备驱动程序,它一般由设备制造商编写并随同设备一起交付。每个操作系统都需要自己的驱动程序,所以设备制造商通常需要为若干流行的操作系统提供驱动程序。 每个设备驱动程序通常处理一种类型的设备或者一类紧密相关的设备。例如,SCSI磁盘、鼠标、游戏操纵杆等设备分别需要不同的驱动程序。 操作系统通常将驱动程序归类于少数的类别之一。最为通用的类别是块设备和字符设备。块设备(如磁盘)包含多个可以独立寻址的数据块,字符设备(如键盘和打印机)则生成或接收字符流。 大多数操作系统定义了一个所有块设备都必须支持的标准接口和所有字符设备都必须支持的标准接口。这些接口由许多过程组成,操作系统的其余部分可以调用它们使驱动程序工作,如读一个数据块的过程或者写一个字符的过程等。 由于设备供多个进程共享,进程对设备的访问(即对设备控制器寄存器的访问)必须由操作系统仲裁,因此,设备驱动程序通常必须是操作系统内核的一部分。如果添加了一个新设备,则该设备的驱动程序必须安装到操作系统内核中。目前的操作系统支持驱动程序动态地装载到系统中。