20、io体系结构与访问设备

一、io体系结构

概念:与外设的通信通常称之为输入输出,一般都缩写为I/O。在实现外设的I/O时,内核必
须处理3个可能出现的问题:
1、 必须根据具体的设备类型和模型,使用各种方法对硬件寻址。
2、 内核必须向用户应用程序和系统工具提供访问各种设备的方法。但凡有可能,都应当采
用统一的方案,确保程序设计的工作量不会过多,同时保证应用程序能够在不考虑特定
硬件方法的情况下进行互操作。
3、 用户空间需要知道内核中有哪些设备可用
硬件设备可能以多种方式连接到系统,主板上的扩展槽或外部连接器最常见的方法,
当然,扩展硬件也可以直接集成到主板上

1、系统总线

尽管外设的范围可能看上去是无限的,它们并不直接连接到CPU,而是通过总线连接
起来。总线负责设备与CPU之间及各个设备之间的通信。如下为代表性的总线:

a.PCI(Peripheral Component Interconnect)
b.ISA(Industrial Standard Architecture)
c.SBus
d.IEEE1394
e.SCSI(Small Computer System Interface)
f.
USB(Universal Serial Bus)
g.并口与串口(Parallel and Serial Interface)

在这里插入图片描述

2、与外设交互

与外设通信的方法,有几种方法可以与连接到系统的硬件通信

a.I/O端口
b.I/O内存映射
c.轮询和中断

3、通过总线控制设备

并非所有设备都是直接通过I/O语句寻址,也有通过总线系统访问的。具体的方式与所
使用的总线和设备相关。并非所有设备类别都可以连接到所有总线系统(比如:将硬盘和CD记
录机连接到SCSI接口,但图形卡就行)。

二、访问设备

设备特殊文件(设备文件)用于访问扩展设备。这些文件并不关联到硬盘或任何其他
的存储介质上的数据段,而是建立了与某个设备驱动程序的连接,以支持与扩展设备的通信。
就应用程序而言,普通文件和设备文件的处理有一定差别。二者都是可以通过同样的
库函数处理

1、字符设备、块设备和其他设备

根据外设与系统之间交换数据的方法,可以将设备分为几种类别。有些设备非常适合
于面向字符的数据交换,因为数据传输量很低。其他的设备则更适合于处理包含固定数目字节
的数据块。内核会区分字符设备和块设备

2、动态创建设备文件

/dev中的设备结点一般是在基于磁盘的文件系统中静态创建的。随着支持设备越来越
多,必须安置和管理越来越多的项,典型发布版大约包含20000项。几乎所有的发布版都将
/dev内容的管理工作切换到udevd,这是一个守护进程,允许从用户层动态创建设备文件。
udevd基本思想,即使从用户层管理设备文件,内核的支持也是绝对必须的,否则就
无法判断系统上有哪些设备可用
在这里插入图片描述

3、字符设备

a、设备号:主设备号是用来标识与设备文件相连的驱动程序,主设备号用来反映设备类型;次设备号被驱动程序用来辨别操作的是哪个设备,并区分同类型的设备
字符设备管理框架
在这里插入图片描述

  • 字符设备数据结构
    在这里插入图片描述
  • 管理设备驱动程序函数的数据结构
  • 在这里插入图片描述
    在这里插入图片描述
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/b79f28bce1ef48d8adf2f1d7c2844761.png
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值