系统总线:
1、链接CPU、RAM、I/O设备之间的数据流动。例如:PCI、ISA、EISA、MCA、SCSI、USB
2、任何I\O设备有且仅能链接一条总线。 I\O端口:
1、每个连接到I\O总线上的设备都有自己的I\O地址集,通常称为I\O端口。
2、一共提供了65536个8位的端口
3、可以讲2个8位的看作一个16位的(必须从偶数开始),2个16位的看作一个32位的端口(必须从4倍数开始)
4、对端口对读写命令 in、ins、out、outs
5、为了提高性能提供控制寄存器、状态寄存器、输入寄存器、输出寄存器 I\O接口:
1、专用I\O接口:专门用于一个特定的硬件设备;键盘接口、图形接口、磁盘接口、鼠标接口、网络接口
2、通用I\O接口:用来连接多个不同的硬件设备,通常是外部设备。并口、串口、PCMCIA接口、SCSI接口、USB 设备控制器:
1、复杂的设备需要,典型的是磁盘控制器,可以用来解析高级命令,转换成处理磁盘的低级磁盘操作。
2、简单的设备不需要,比如可编程中断控制器、可编程间隔定时器。
设备驱动程序模型:1、电源管理(控制设备电源线上不同的电压级别)
2、即插即用(配置设备时透明的资源分配)
3、热插拔(系统运行时支持设备的插入和移除)
4、内核全权负责所有硬件设备的电源管理,当计算机进入待机时,内核立即强制每个能够响应‘待机’状态的设备安装一定的顺序进入待机状态
5、为了满足上述功能,为系统中所有的总线、设备以及设备驱动程序提供了一个统一的视图,即设备驱动程序模型。 设备文件:
1、I\O设备可以被当作设备文件(device file)这种所谓的特殊文件来处理,即可以对其使用系统调用read、write
2、根据设备驱动程序的基本特性,设备文件可以分位两种块和字符
3、块设备的数据可以被随机访问,传输数据的时间少,且大致相同。例如硬盘、软盘、CD-ROM驱动器、DVD播放器等
4、字符设备的数据或者不可以被随机访问;或者可以但是访问随机数据的时间很大程度依赖数据在设备内的位置,例如磁带驱动器
5、一般设备文件名是无关紧要的,关键是设备类型、主设备号、次设备号
6、主设备号和次设备号最大为65536,Linux
2.6对其进行了扩展主设备号12位,次设备号20位
7、最好的解决方案时动态分配设备号;动态创建设备文件 设备驱动程序:
1、实现文件对象read方法的foo_read函数
2、处理中断的foo_interrupt函数
3、当用户在设备文件上发出read系统调用,一条命令被发往设备的控制寄存器,一段时间间隔后,设备把一个字节的数据放入输入寄存器,作为read系统调用的结果返回 直接访问内存(DMA):
1、不经过CPU,设备直接和RAM互传数据
2、如果DMA和CPU同时访问同一内存,冲突由叫做内存仲裁器的硬件电路来解决
3、使用最多的是磁盘驱动器和其他需要一次传输大量字节的设备。
4、DMA的设置时间较长,少量数据时使用CPU效率更高
5、同步DMA由进程触发,例如播放电影、音乐;播放音乐时,将内存数据采用DMA传到声卡播放
6、异步DMA有硬件设备触发,例如网卡;网卡接收到数据,产生中断,将数据采用DMA方式传到内存 内核支持的I\O级别:
1、根本不支持:应用程序只能用适当的in、out汇编语言直接与设备I|O端口交互 2、最小支持: 内核不识别硬件设备,但是能识别I\O接口,用户程序将I\O接口视为能够读写字符流的顺序设备
3、扩展支持:内核能识别硬件,并处理I\O接口本身。这种设备可能没有对应的设备文件。 字符设备驱动程序:
1、比较简单,不涉及复杂到缓存策略,磁盘高速缓存
2、有些必须实现复杂到通信协议

深入理解Linux内核-I/O体系结构和设备驱动程序的更多相关文章

  1. 读书笔记之Linux系统编程与深入理解Linux内核

    前言 本人再看深入理解Linux内核的时候发现比较难懂,看了Linux系统编程一说后,觉得Linux系统编程还是简单易懂些,并且两本书都是讲Linux比较底层的东西,只不过侧重点不同,本文就以Linu ...

  2. 《深入理解Linux内核》 读书笔记

    深入理解Linux内核 读书笔记 一.概论 操作系统基本概念 多用户系统 允许多个用户登录系统,不同用户之间的有私有的空间 用户和组 每个用于属于一个组,组的权限和其他人的权限,和拥有者的权限不一样. ...

  3. 【读书笔记::深入理解linux内核】内存寻址【转】

    转自:http://www.cnblogs.com/likeyiyy/p/3837272.html 我对linux高端内存的错误理解都是从这篇文章得来的,这篇文章里讲的 物理地址 = 逻辑地址 – 0 ...

  4. 【读书笔记::深入理解linux内核】内存寻址

    我对linux高端内存的错误理解都是从这篇文章得来的,这篇文章里讲的 物理地址 = 逻辑地址 – 0xC0000000:这是内核地址空间的地址转换关系. 这句话瞬间让我惊呆了,根据我的CPU的知识,开 ...

  5. 【深入理解Linux内核架构】第3章:内存管理

    3.1 概述 内存管理涵盖了许多领域: 内存中物理内存页的管理: 分配大块内存的伙伴系统: 分配小块内存的slab.slub.slob分配器: 分配非连续内存块的vmalloc机制: 进程的地址空间. ...

  6. 【深入理解Linux内核架构】6.6 资源分配

    一段摘自<Linux设备驱动程序>的话: 每种外设都通过读写寄存器进行控制.大部分外设都有多个寄存器,不管是内存地址空间还是I/O地址空间,这些寄存器的访问地址都是连续的. 在硬件层,内存 ...

  7. 理解Linux内核之中断控制

    乍一看下边的Linux内核代码,貌似L3389有bug,于是我就绕有兴趣地阅读了一下local_irq_save/local_irq_restore的源代码. /* linux-4.14.12/mm/ ...

  8. Linux内核0.11体系结构 ——《Linux内核完全注释》笔记打卡

    0 总体介绍 一个完整的操作系统主要由4部分组成:硬件.操作系统内核.操作系统服务和用户应用程序,如图0.1所示.操作系统内核程序主要用于对硬件资源的抽象和访问调度. 图0.1 操作系统组成部分 内核 ...

  9. Linux内存管理(深入理解Linux内核)

    Linux的内存管理,实际上是借助80x86的硬件分段和分页电路,将逻辑地址转化为物理地址的. 物理内存中,有一部分是一直(Permanently)映射给内核使用的,这部分主要用于保存内核的代码,以及 ...

随机推荐

  1. java 解析excel工具类

      java 解析excel工具类 CreateTime--2018年3月5日16:48:08 Author:Marydon ReadExcelUtils.java import java.io.Fi ...

  2. 将Excel表格保存为图片

    如何将Excel表格保存为图片,可参见以下几种方法: 1.借助其它办法软件,例如Word或PPT. 步骤:选中Excel中需要被保存成图片的内容,Ctrl+C进行复制,打开Word或PPT办公软件,鼠 ...

  3. Publish to a Linux Production Environment

    Publish to a Linux Production Environment By Sourabh Shirhatti In this guide, we will cover setting ...

  4. http协议请求方法

    解析HTTP协议六种请求方法get.put.post.delete.options和trace含义与区别. 1.GET   selecr请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库 ...

  5. Android spinner 样式及其使用详解

    设计与开发首页 > 应用专题 > 移动开发 > 正文> Android spinner 样式及其使用详解 相关文章: Android 开源项目应用程序与框架推荐 Android ...

  6. C# 正则表达式过滤危险HTML

    下面是两个过滤的方法 /// <summary> /// 此处过滤危险HTML方法 /// </summary> /// <param name="html&q ...

  7. [转载]将archlinux&nbsp;2013-06-01版,安装配置为个人工作站

    原文地址:将archlinux 2013-06-01版,安装配置为个人工作站作者:老圃无蔓 安装所使用的镜像为:archlinux-2013.06.01-dual.iso.首先请看看我安装完成之后的效 ...

  8. (转)Groupon前传:从10个月的失败作品修改,1个月找到成功 并不挶泥在这个点子上面,它反而往后站一步,看看他们已经做好的这个网站,可以再怎么包装成另一个完完全全不同的网站?所有的人所做的每件失败的事情中, 一定有碰到或含有成功的答案」在里面,只是他们不知道而已。 人不怕失败」,只怕宣布失败」

    (转)Groupon前传:从10个月的失败作品修改,1个月找到成功 今天读到 一个非常励志人心的故事 ,就像现在「叶问」有「前传」,最近很火红的团集购网站Groupon 也出现了「Groupon前传」 ...

  9. 神文章2:文本矩阵简述 V1.0 -vivo神人

    评论: 牛逼的业余书籍爱好者读书思路,指导思想. 2013/9/22         文本矩阵简述 V1.0http://www.douban.com/note/170688812/ 文/vivo   ...

  10. Android中3种全屏方法及3种去掉标题栏的方法

    一.去掉标题栏的方法 第一种:入门的时候经常使用的一种方法 复制代码代码如下:  requestWindowFeature(Window.FEATURE_NO_TITLE); //去掉标题栏注意这句一 ...