谁保证记忆安全,怎么样?

时间:2013-11-06 08:21:58

标签: memory computer-science allocation

我现在已经在大学编写x86 Assembly和C一段时间了,直到今天,我无法理解一件事:谁阻止我开发一个将值写入0x0或其他地址的程序那么,根据他们的地址值,我的运行系统似乎“重要”了吗?

谁保证,首先,我能够做到这一点(我能做到这一点,对吗?)其次,没有其他进程行为不端以防它实际上使用0x0或任何其他地址? / p>

这是如何管理的?

2 个答案:

答案 0 :(得分:1)

类Unix系统上的两个不同进程将没有共享内存地址空间。 “用户空间”(进程可以读取和写入,放弃放弃)和“内核空间”之间也存在差异,其中进程很可能既不会读取也不会写入,但可能会调用函数(取决于硬件架构上的确切系统调用约定,这可以使用调用门,中断或可能的其他机制来完成)。

两个进程A和B可能会尝试在其本地地址空间中写入地址0x800000,其中一个写入最终写入(物理)内存位置0x100,另一个写入(物理)内存位置0x3000,具体取决于确切地说,内核决定将虚拟地址空间映射到物理地址空间。

然而,有些系统并非如此。

答案 1 :(得分:0)

您无法写入受保护的地址。内存的一部分受内核保护,并且保护很容易,因为每个请求都必须通过内核。看到这篇文章: http://en.wikipedia.org/wiki/Kernel_(computing)