Operating system 操作系统内存分配

Operating system 操作系统内存分配,operating-system,Operating System,我知道每个进程都有一块内存,其中包含代码段、数据段、堆和堆栈。而且代码段是只读的。但是当进程开始运行时,这个只读内存分配在哪里?操作系统如何区分只读内存 每个进程的一部分内存?每个进程都有一个页表,它将实际的物理RAM映射到进程的虚拟内存空间。此表为内存的每个“页面”分配属性,通常为4kb。其中一些属性包括将页面设置为只读、不可执行、具有特权代码等。操作系统基本上会告诉硬件这些属性是什么,这样它就不必对每次内存访问进行微观管理,因为这将非常低效 有关底层详细信息,请参阅典型x86机器中的解释和示

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

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

有关底层详细信息,请参阅典型x86机器中的解释和示例。

它位于RAM(或虚拟内存)中,其区别在于页面表中设置了“只读”属性。