0

我知道每个进程都有一块内存,其中包含代码段,数据段,堆和堆栈。而且代码段是只读的。但是当一个进程开始运行时,这个只读内存分配在哪里以及如何操作系统区分每个进程的内存的只读部分?

4

1 回答 1

0

每个进程都有一个所谓的页表,它将实际物理 RAM 映射到进程的虚拟内存空间。该表将属性分配给内存的每个“页面”,通常为 4kb。其中一些属性包括将页面设置为只读、不可执行、具有特权代码等。操作系统基本上会告诉硬件属性是什么,因此它不必对每个内存访问进行微观管理,因为这将非常低效。

有关低级详细信息,请参阅此 osdev wikipage 以 获取典型 x86 机器中的解释和示例。

于 2012-07-19T16:05:12.953 回答