目录

1.设备控制器

2.I/O空间的管理

3.I/O端口及I/O内存和I/O端口的访问

4.I/O内存资源的访问

5.I/O端口的访问

6.查看机器上的I/O端口

7.I/O资源管理

8.管理I/O区域资源

9.管理I/O内存资源

10.小结,参考书与思考问题


1.设备控制器

什么是设备控制器呢?
它是计算机中的一个实体,其主要职责是控制一个或多个I/O设备,以实现I/O设备和处理器之间的数据交换.
它是CPU与I/O设备之间的接口,它通过控制总线接收从CPU发来的命令并去控制I/O设备工作.控制器相当于
CPU与外设打交道的一个助理,让处理器从繁杂的设备控制事务中解放出来.

2.I/O空间的管理

设备通常会提供一组寄存器来控制设备,读写设备以及获取设备的状态,这些寄存器就是
控制寄存器,数据寄存器和状态进村器,它们位于控制器中.
从编址方式来说:
如果IO空间与内存在一起编址,对应的内存空间被称为IO内存,如图左边所示;
如果IO空间单独编址,就位于IO空间,通常被称为IO端口,如图右边所示.

3.I/O端口及I/O内存和I/O端口的访问

什么是I/O端口?
设备驱动程序要直接访问外设或者其接口卡上的物理电路,通常以寄存器的形式出现访问.
外设寄存器也称为I/O端口,通常包括控制寄存器,状态寄存器和数据寄存器.如何访问I/O内存和I/O端口?
访问I/O内存的方式一般是通过访问一般内存的指令就可以访问I/O内存;
访问I/O端口的方式一般是通过外设寄存器的读写专门设置的指令来进行访问.

4.I/O内存资源的访问

用于I/O指令的地址空间相对来说是很小的,自从P3(??)总线出现后,无论是CPU的设计是采用
I/O端口方式还是I/O内存方式,都必须将外设卡上的存储器映射到内存空间,实际上就是采用
了虚拟内存的手段,这样的映射是通过为ioremap()这个专门的函数来建立的,该函数如图所示,
其中的参数含义也如图.

5.I/O端口的访问

在读写I/O端口的时候需要注意的一点就是大多数平台区分8位,16位和32位端口,
其中port参数指定端口空间中的端口地址,在大多数平台上,它都是无符号的短整型,
其他的平台上是无符号的整型,显然端口地址的类型是由端口空间的大小来决定的.

6.查看机器上的I/O端口

7.I/O资源管理

8.管理I/O区域资源

9.管理I/O内存资源

10.小结,参考书与思考问题

【linux内核分析与应用-陈莉君】IO空间管理相关推荐

  1. 【linux内核分析与应用-陈莉君】动手实践-编写一个文件系统

    目录  0.一些链接 1.一些数据结构 2.编写一个文件系统的过程 3.用到的一些数据结构及函数的原型 3.1 struct file_system_type-文件系统类型 3.2 register_ ...

  2. 【Linux内核分析与应用-陈莉君老师】动手实践-把虚拟内存转换成物理地址

    目录 1.地址转换 2.Linux4级页表 3.64位线性地址 4.实际观察寻页的过程  1.地址转换 进程中不直接对物理地址直接操作,CPU在运行时指定的地址需要经过内存管理单元MMU 转换后才能访 ...

  3. 【linux内核分析与应用-陈莉君】Linux内存管理机制

    目录                   1.内存层次 2.虚拟内存实现机制 3.进程的虚拟地址空间和地址空间布局 4.如何用数据结构描述进程的用户空间 5.mm_struct 6.vm_area_s ...

  4. 【linux内核分析与应用-陈莉君】进程的一生

    目录 1.进程与线程 2.TASK_STRUCT结构的统一性与多样性 3.进程API的实现 4.do_fork()的代码流程 5.进程的生命周期 1.进程与线程 2.TASK_STRUCT结构的统一性 ...

  5. 《Linux内核完全剖析-基于0.12内核》书评之陈莉君

    <Linux内核完全剖析-基于0.12内核>书评之陈莉君 <Linux内核完全剖析-基于0.12内核>一书出版之后,机械工业出版社编辑希望我就此书抽空写一个书评.在我拿到这本书 ...

  6. LINUX内核分析第二周学习总结——操作系统是如何工作的

    LINUX内核分析第二周学习总结--操作系统是如何工作的 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course ...

  7. linux内核分析(转自某位大哥网上的笔记)

    启动 当PC启动时,Intel系列的CPU首先进入的是实模式,并开始执行位于地址0xFFFF0处的代码,也就是ROM-BIOS起始位置的代码.BIOS先进行一系列的系统自检,然后初始化位于地址0的中断 ...

  8. Linux内核分析实验3——分析linux内核启动过程

    本文大量内容引用自孟宁老师在<LINUX操作系统分析>课程中的内容 <Linux内核分析>MOOC课程 http://www.xuetangx.com/courses/cour ...

  9. Linux内核分析——可执行程序的装载

    链接的过程 首先运行C预处理器cpp,将C的源程序(a.c)翻译成ASCII码的中间文件(a.i) 接着C编译器ccl,将a.i翻译成ASCII汇编语言文件a.s 接着运行汇编器as,将a.s翻译成可 ...

  10. 《Linux内核分析》实验一

    陈智威,<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 课堂学习笔记: 作业截图: 汇编代码堆栈分析: ...

最新文章

  1. Java设计模式圣经连载(05)-代理模式
  2. Python学习之旅 —— 基础篇(二)数据类型、运算、while循环
  3. 【XSY2719】prime 莫比乌斯反演
  4. php用Simple Excel导出xls
  5. RabbitMQ的消息确认ACK机制
  6. 【高并发】怎么演示公平锁和非公平锁?
  7. 网站主机 技术+类型
  8. PyTorch 学习笔记(六):PyTorch的十八个损失函数
  9. 第 10 章 容器监控 - 080 - Weave Scope 容器地图
  10. bzoj3713: [PA2014]Iloczyn(乱搞)
  11. Xftp6-连接Linux传输文件---干货!!!(无私奉献无需积分)
  12. 正则表达式与有限自动机
  13. 计算机青年教师基本功大赛,北京高校第九届青年教师基本功比赛纪实
  14. VMware安装CentOS 7.0 Fail to start media check on /dev/sr0
  15. springboot validation 统一返回错误信息
  16. bash: /home/jdk/jdk1.8.0_261/bin/java: /lib/ld-linux.so.2: bad ELF interpre问题
  17. 干货来袭!!!3天0基础Python实战项目快速学会人工智能必学数学基础全套(含源码)(第1天)线性代数篇:矩阵、向量及python实战
  18. 多元函数的向量表示_多元高斯分布完全解析
  19. 联发科(MTK)MT6765 核心板 安卓主板
  20. matlab中xpcapi库的调用,关于MATLAB中xpc实时控制平台搭建的心得

热门文章

  1. DataGrid Bind Checkbox....
  2. postgres关键字、常量和数据类型
  3. UDE2021未来生活领袖峰会:视像行业发展趋势研究报告发布
  4. JAVA简单项目购物系统的整个开发过程详解(内含源码和注释)
  5. 打外星人的回合制JAVA游戏_25款最佳太空游戏盘点 带玩家到太空殖民打外星人...
  6. 论文阅读:A Survey on Deep Hashing Methods 综述:深度哈希方法
  7. Hadoop开发相关问题
  8. 微信扫码下载APK遮罩提示示例
  9. 计算机使用的dns错误,dns错误,教您dns错误怎么修复
  10. calibre版本问题造成无法转换pdf