我理解每个进程都有一个内存块,其中包含代码段,数据段,堆和堆栈。而且代码段也是只读的。但是当进程开始运行时,这个只读内存在哪里分配以及操作系统如何区分只读 每个进程的内存部分?
答案 0 :(得分:0)
每个进程都有一个所谓的页表,它将实际的物理RAM映射到进程的虚拟内存空间。此表为每个“页面”内存分配属性,通常为4kb。其中一些属性包括将页面设置为只读,不可执行,具有特权代码等。操作系统基本上告诉硬件属性是什么,这样它就不必对每个内存访问进行微管理,因为这样做效率很低。
有关低级详细信息,请参阅this osdev wikipage以获取典型x86计算机中的说明和示例。