博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转载]来认识寄存器,内存,IO空间,IO端口,IO内存
阅读量:5086 次
发布时间:2019-06-13

本文共 613 字,大约阅读时间需要 2 分钟。

整天说内存,寄存器,端口,他们有什么联系,有什么不同之处,你了解他们么?

 

第一、寄存器和内存的区别

寄存器和内存都是可以用来读写的,但寄存器的操作时有副作用,称之为(side effect 边际效果)

读取一个寄存器可能导致寄存器中的内容发生变化,比如在一些设备的中断状态寄存器中,读取了寄存器后会自动清零

 

第二、IO空间和内存空间

并不是所有的体系结构都有IO空间这个定义的,我所了解的只有X86体系上有,而ARM体系结构就没有这种区别,

在X86上,IO空间和内存是独立的,他们各自有各自的总线,并且IO空间一般是64K,即16位,内存空间为4G

可见他们的差别是很大

 

第三、IO 端口和IO内存

在有了IO空间的概念后,就有IO端口和IO内存

当一个寄存器或内存位于IO空间时候,称之为IO端口

当一个寄存器或内存位于内存空间时候,称之为IO内存

这种映射是通过OS的MMU来把虚拟地址映射为物理地址的

 

可能单纯的这样解释会不明白,看下面这个图或许会好些

当你还在疑惑为什么指针可以想减而不可以相加的时候,了解了页表映射会或许就明白了!

 

在Linux驱动程序开发中,关于二者的不同,可以参看下这篇文章

 

文章出处:http://blog.csdn.net/seanyxie/article/details/5946219

转载于:https://www.cnblogs.com/gesaint/p/3985806.html

你可能感兴趣的文章
日常开发时遇到的一些坑(三)
查看>>
Eclipse 安装SVN插件
查看>>
深度学习
查看>>
TCP粘包问题及解决方案
查看>>
构建之法阅读笔记02
查看>>
添加按钮
查看>>
移动端页面开发适配 rem布局原理
查看>>
Ajax中文乱码问题解决方法(服务器端用servlet)
查看>>
会计电算化常考题目一
查看>>
阿里云服务器CentOS6.9安装Mysql
查看>>
剑指offer系列6:数值的整数次方
查看>>
js 过滤敏感词
查看>>
poj2752 Seek the Name, Seek the Fame
查看>>
软件开发和软件测试,我该如何选择?(蜗牛学院)
查看>>
基本封装方法
查看>>
bcb ole拖拽功能的实现
查看>>
生活大爆炸之何为光速
查看>>
bzoj 2456: mode【瞎搞】
查看>>
[Typescript] Specify Exact Values with TypeScript’s Literal Types
查看>>
[GraphQL] Reuse Query Fields with GraphQL Fragments
查看>>