【现代操作系统】之I/O硬件原理

本文深入探讨了I/O硬件的基本原理,介绍了I/O设备的两大类别:块设备和字符设备的特点及应用场景。同时,详细解释了硬盘等块设备的物理结构,如磁道、柱面和扇区的概念。此外,还解析了设备控制器的作用、内存映射I/O的工作方式以及DMA技术如何提高数据传输效率。

什么是I/O硬件原理

不同人对I/O的理解是不同的,对于电子工程师而言,I/O硬件就是芯片,导线,电源,电机和其它组成硬件的物理部件。对程序员而言,I/O是一种软件接口,他们关心的是硬件可以接受的命令和怎样向硬件发出命令,以及硬件返回的信息和完成的功能。

I/O设备

I/O设备大致可分为两类:块设备字符设备
块设备:信息被存储在固定大小的块中,每个块都有自己的地址,数据传输以块为单位。硬盘、CD-ROM、U盘等都是常见的块设备。
(小知识)磁盘的物理结构
硬盘的物理结构一般由磁头与碟片、电动机、主控芯片与排线等部件组成;当主电动机带动碟片旋转时,副电动机带动一组(磁头)到相对应的碟片上并确定读取正面还是反面的碟面,磁头悬浮在碟面上画出一个与碟片同心的圆形轨道(磁轨或称柱面),这时由磁头的磁感线圈感应碟面上的磁性与使用硬盘厂商指定的读取时间或数据间隔定位扇区,从而得到该扇区的数据内容。
在这里插入图片描述在这里插入图片描述

1、磁道
当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道(Track)。

2、柱面
在有多个盘片构成的盘组中,由不同盘片的面,但处于同一半径圆的多个磁道组成的一个圆柱面(Cylinder)。

3、扇区
磁盘上的每个磁道被等分为若干个弧段,这些弧段便是硬盘的扇区(Sector)。硬盘的第一个扇区,叫做引导扇区
字符设备
(小知识结束?)
字符设备:字符设备是以字符为单位发送或接受一个字符流而不考虑任何块结构。字符设备是不可寻址的。打印机、网络接口、鼠标以及大多数与磁盘不同的设备都可以看作是字符设备。
当然这两种分类方法还是无法覆盖所有的设备,例如时钟和内存映射的显示器。但是这两种分类已经足以覆盖大部分设备了

设备控制器

I/O设备一般由机械部件和电子部件组成,可以将这两部分分开处理,提供更加模块化和更加通用的设计。电子部件称作设备控制器或适配器。
控制器与设备之间的接口通常是一个很低层次的接口。例如可以按每个磁道10000个扇区,每个扇区512个字节进行格式化,然而实际驱动器(在磁盘里面)出来的却是一个串行比特流,它以一个前导符开始,接着是扇区中的4096位最后是校验和,前导符是在对磁盘进行格式化的时候写上去的,它包括柱面数和扇区号、扇区大小等磁盘数据,控制器的任务是把这种串行数据变成字节块并进行必要的校验工作,字节块通常在控制器中组装,在没有错误之后再把它复制到主存中。

内存映射I/O

前面讲到控制器,那么问题来了,CPU如何与控制器进行通信呢,有两种方案,在第一种方法中,每个控制寄存器分配一个I/O端口号,这是一个8位或16位整数。所有I/O端口形成I/O端口空间,并且受到保护,普通用户无法对其进行访问,只有操作系统可以对其进行访问。在第二种方案中,所有的控制器寄存器映射到内存空间,每个控制器寄存器分配唯一的一个内存地址,并且不会有内存被分配这个地址。这样的系统成为内存映射I/O。

直接存储器存取(DMA)

无论CPU是否具有内存映射I/O,它都需要寻址设备寄存器以便与它们交换数据。CPU可以从I/O控制器每次请求一个字节的数据,但是这样做太浪费CPU的时间,这时候DMA就派上用场了。DMA方案的使用需要系统在硬件上具有DMA控制器。大多数系统都具有DMA控制器。
DMA能够独立于CPU访问系统总线,它包含若干个可以被CPU读写的寄存器,其中包含一个内存地址寄存器、一个字节计数器寄存器、一个或多个控制寄存器。控制寄存器指定要使用的I/O端口、传送方向、传送单位以及在以此传送中要传送的字节数。
DMA工作机制:CPU通过设置DMA控制器的寄存器对它进行编程,所以DMA控制器知道将数据传到什么地方,然后DMA控制器向磁盘控制器发出命令,通知磁盘控制器读数据到其内部的缓冲区,并对其进行校验和进行检验。如果磁盘控制器的缓冲区中的数据是有效的,那么DMA就可以开始了,之后DMA控制器通过在总线上发出一个读请求到磁盘控制器而发起DMA传送,并且磁盘控制器不关心这个请求是来自CPU还是来自DMA,所以磁盘控制器接下来知道将缓存中的数据送到内存的什么地方,当传输完成会会发送一个应答信号给DMA控制器,DMA要递减或递增内部的字节计数器与内存地址,当全部数据传输完成后,DMA将中断CPU通知传送完成。DMA还支持一种“飞跃模式”,在这种模式中,DMA让设备控制器将字发送给DMA控制器,然后由DMA将该字发送到其它地方去,这种模式让DMA可以实现内存与内存之间,设备与设备之间数据的转移。

重温中断

当一个I/O设备完成交给它的工作时,它就产生一个中断,它是通过在分配给它的一条总线信号线上置起信号而产生中断的,该信号被主板上的中断控制器芯片检测到,由中断控制器芯片决定做什么。如下图所示。
在这里插入图片描述
如果当前没有别的更高高优先级中断服务程序, 那么该中断将会被立即响应,但如果有其它的高优先级中断服务程序,该中断将会被挂起等待,在这种情况下,该设备将继续在总线上置起中断信号,直到得到CPU的服务。
中断控制器在地址线上放置一个数字表明哪个设备需要被关注,并置起一个中断CPU的信号,CPU根据这个数字来确定要到哪一个中断服务程序,这个中断服务程序和中断向量表关联,中断向量表和数字一一对应。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值