07 linux011字符设备管理

1 与字符设备的大体交互过程(如UART)

[1] 写操作
IO 端口指令
   |[0]
   V
 +---+ [1] 命令 +----------+
 |   |--------->|UART控制器|[2] 命令接收与执行 
 |CPU|          |          |
 |   | [3] 中断 |          |
 +---+<---------+----------+
   |[4]
   V
中断处理程序

[2] 读
读一般由字符设备主动发起中断触发CPU调用相应的中断响应函数读取数据。

2 与字符设备交互涉及的抽象层次

linux 0.11 与字符设备的交互抽象到了文件层面。大体过程如下

(1) 文件操作

[1] 打开文件

字符设备也被抽象为一个文件,其i节点在文件系统中被存储。根据根目录或当前目录可搜索到指定文件对应的i节点到缓冲区中。

[2] 读写文件

文件读写的核心是打开文件时所获取到的i节点信息。由该i节点可得到文件所属设备类型及设备编号,从而调用相应类型的读写函数进行读写,如此处的字符设备读写函数。

(2) 字符设备读写

字符设备在内核中有相应的读写队列,这些队列专门用于缓冲字符设备的数据。

[1] 读字符设备,从字符设备读队列中读取数据,读队列中的数据由字符设备读中断响应函数写入。

[2] 写字符设备,向字符设备写队列中写入数据,在写队列中完成写操作或者写满队列时向字符设备发送写中断,待字符设备以写中断方式向CPU反馈可写后,CPU再调用写字符设备中断响应函数完成写操作。

(3) 与字符设备进行交互

所以与块设备交互涉及的抽象层次由上到下有

  +------------+
  |文件操作管理|
  +------------+
        |
        V
   +------------+
   |读写队列管理|
   +------------+
        |
        V
+------------------+
|字符设备的交互流程|
+------------------+

3 理解键盘输入过程

  +------------+
  |  terminal  |
  |------------|
  |UART|network|
  +------------+
        ^
        |写往串口/网口控制器发送给其他设备
        v
    +------+
    |  CPU | to echo +----------+   +-------+
    |======| ------> |video card|-->|monitor|
    |QUEUES|         +----------+   +-------+
    +======+
       ^
       |I/O指令和中断机制
       V
+--------------------------+
|keyboard && its controller|
+--------------------------+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值