读书人

请教一下指针到底是物理地址还是线性地

发布时间: 2012-03-08 13:30:13 作者: rapoo

请问一下指针到底是物理地址还是线性地址
最近学习了一下80386的地址机制,线性地址到物理地址有映射,觉得对于指针表示的到底是线性地址还是物理地址产生了疑惑?

[解决办法]
肯定不是物理地址。
一个进程在执行过程中,它里边同一数据的物理地址是完全有可能发生变化的,如果指针保存的是物理地址,那么可能程序运行一会儿之后,它就无效了。
[解决办法]
我们用的都是虚拟地址 分为保护模式和实模式

在8088之后的CPU可以采用这俩种工作方式

这俩种模式 都采用线性地址的方式寻址,就是段地址+偏移地址

在指针中,他不需要段地址,他本身就是32位的,所以他自己已经是一个完整的地址了

从虚拟地址到物理地址,要经过段映射,如果超出的,不在此页上的

就出现页错误 然后进行换页操作 这些都是操作系统的事

在NT中,记得页的大小为4k



[解决办法]
我们用的都是虚拟地址 分为保护模式和实模式

=================================================

刚才我是这么讲的

说错了 实模式是物理地址的



[解决办法]
对,实模式中所有的进程共用一个内存空间,应该就是物理地址了。
所以,楼主的问题也要看具体平台和具体情况的。
[解决办法]
应该分实模式和保护模式(虚模式)

以前DOS是实模式,也提供一部分的保护模式的功能。现在的操作系统一般都是保护模式。

保护模式下,物理地址由操作系统管理。程序访问的内存空间都是虚拟地址,具体的物理地址不确定,用户是看不到的,由操作系统管理。

实模式就是访问的实实在在的物理内存了,不过现在一般没有这条件。

读书人网 >C语言

热点推荐