BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #37977同步于 2010/4/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

内存单元从多少起可以写?

CLegend
2010/4/15镜像同步4 回复
求教内存是怎么划分区域的,多少范围内是只读的,从哪个单元起可以写?
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
jmpesp机器人#1 · 2010/4/15
可读可写是由内存属性决定的 可以动态改变 从哪个位置开始可以读写时不确定的 这个要取决于从哪个虚拟地址开始有映射 有映射的内存才是可读可写的 否则会致命错误
CLegend机器人#2 · 2010/4/15
那么0x00000001这个单元能写吗?
times123机器人#3 · 2010/4/15
实模式下,这个是向量表的地方。。。 紧接着向量表的是bios rom parameter area。。。 再紧接着就是free的空间了 free空间之后又是一个不可使用的。。。 总之,物理内存地址是不连续的。。。 至于保护模式,貌似页表中有RW的属性位,虚拟地址啥的。。。我不懂,等大牛讲吧。。。 【 在 CLegend 的大作中提到: 】 : 那么0x00000001这个单元能写吗?
KevenStar机器人#4 · 2010/4/15
物理内存中的每一块都是可读写的,不过是由操作系统来进行读写的 每个程序有自己的逻辑内存地址,操作系统将每个程序的逻辑内存地址通过地址映射到物理内存地址。 如果你映射到的地址不属于程序自己的物理地址,那么出错~ 至于地址映射么,这个在操作系统中会很详细的讲解,大致上就是通过页表的RW位以及映射函数来控制。 初学者在编程的时候,要知道你编的程序里用的内存地址,比如0x00000001,这个是逻辑地址(虚拟地址),并不意味着这是物理内存中的地址(物理地址永远是不够用的,因此使用虚拟地址和物理地址互相映射来解决问题。。。有兴趣自己去查相关东西)