了解内存映射

时间:2016-08-26 16:14:34

标签: memory assembly x86 virtual paging

在现代个人电脑中,

MOV [0x0000], 7
放一个7?它是我RAM的第一个字节,还是进程地址空间的第一个字节?假设它触发了内存冲突。

2 个答案:

答案 0 :(得分:1)

你的意思是假设它没有触发访问冲突?每个进程都有自己的virtual address space。第一个64kiB通常保持不映射,所以NULL指针实际上是故障的,而不是让程序默默地做坏事。

在典型操作系统的用户空间进程中,0的绝对地址确实是指进程虚拟地址空间的第一个字节。

启用分页后,内核甚至无法直接使用物理地址。要写入给定的物理地址,必须创建一个页表条目,将该物理页面映射到虚拟页面(或查找现有映射),invlpg以确保TLB不缓存过时的条目,然后使用该虚拟地址。

答案 1 :(得分:0)

这取决于系统架构。每个架构都提供指令集和内存布局。此外,它取决于您使用的操作系统。例如。实时操作系统通常不提供虚拟内存。

招呼