请问一下指针到底是物理地址还是线性地址
最近学习了一下80386的地址机制,线性地址到物理地址有映射,觉得对于指针表示的到底是线性地址还是物理地址产生了疑惑?
[解决办法]
肯定不是物理地址。
一个进程在执行过程中,它里边同一数据的物理地址是完全有可能发生变化的,如果指针保存的是物理地址,那么可能程序运行一会儿之后,它就无效了。
[解决办法]
我们用的都是虚拟地址 分为保护模式和实模式
在8088之后的CPU可以采用这俩种工作方式
这俩种模式 都采用线性地址的方式寻址,就是段地址+偏移地址
在指针中,他不需要段地址,他本身就是32位的,所以他自己已经是一个完整的地址了
从虚拟地址到物理地址,要经过段映射,如果超出的,不在此页上的
就出现页错误 然后进行换页操作 这些都是操作系统的事
在NT中,记得页的大小为4k
[解决办法]
我们用的都是虚拟地址 分为保护模式和实模式
=================================================
刚才我是这么讲的
说错了 实模式是物理地址的
[解决办法]
对,实模式中所有的进程共用一个内存空间,应该就是物理地址了。
所以,楼主的问题也要看具体平台和具体情况的。
[解决办法]
应该分实模式和保护模式(虚模式)
以前DOS是实模式,也提供一部分的保护模式的功能。现在的操作系统一般都是保护模式。
保护模式下,物理地址由操作系统管理。程序访问的内存空间都是虚拟地址,具体的物理地址不确定,用户是看不到的,由操作系统管理。
实模式就是访问的实实在在的物理内存了,不过现在一般没有这条件。