Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory 理解内存映射_Memory_Assembly_X86_Virtual_Paging - Fatal编程技术网

Memory 理解内存映射

Memory 理解内存映射,memory,assembly,x86,virtual,paging,Memory,Assembly,X86,Virtual,Paging,在现代个人电脑中,你将在哪里 MOV [0x0000], 7 放一个7?它是RAM的第一个字节,还是进程地址空间的第一个字节?假设它触发内存冲突。这取决于系统架构。每个体系结构都提供一个指令集和内存布局。此外,这取决于您使用的操作系统。例如,实时操作系统通常不提供虚拟内存 问候您的意思是假设它不会触发访问冲突?每个过程都有它自己的。前64kiB通常保持未映射状态,因此空指针访问实际上会发出噪音,而不是让程序默默地做坏事 在典型操作系统上的用户空间进程中,0的绝对地址指的是进程虚拟地址空间的第一

在现代个人电脑中,你将在哪里

MOV [0x0000], 7

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

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

问候

您的意思是假设它不会触发访问冲突?每个过程都有它自己的。前64kiB通常保持未映射状态,因此空指针访问实际上会发出噪音,而不是让程序默默地做坏事

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


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

如果它触发内存冲突,那么它如何将该值放入该地址?你的意思是假设它不会触发访问冲突?它处于保护模式吗?什么操作系统正在运行,或者您是否在自己的引导扇区处于真实模式?我的windows 8.1/Ubuntu Linux更可能使用什么?在这些操作系统中运行上述MOV的结果是什么?Win或Linux等操作系统使用虚拟地址空间,这意味着它实际上不是物理地址。上面的指令看起来像是操纵CPU寄存器集的机器指令。(第217页)