在现代个人电脑中,
MOV [0x0000], 7
放一个7?它是我RAM的第一个字节,还是进程地址空间的第一个字节?假设它触发了内存冲突。
答案 0 :(得分:1)
你的意思是假设它没有触发访问冲突?每个进程都有自己的virtual address space。第一个64kiB通常保持不映射,所以NULL指针实际上是故障的,而不是让程序默默地做坏事。
在典型操作系统的用户空间进程中,0
的绝对地址确实是指进程虚拟地址空间的第一个字节。
启用分页后,内核甚至无法直接使用物理地址。要写入给定的物理地址,必须创建一个页表条目,将该物理页面映射到虚拟页面(或查找现有映射),invlpg
以确保TLB不缓存过时的条目,然后使用该虚拟地址。
答案 1 :(得分:0)
这取决于系统架构。每个架构都提供指令集和内存布局。此外,它取决于您使用的操作系统。例如。实时操作系统通常不提供虚拟内存。
招呼