首页 > 解决方案 > 纯需求分页下流程如何开始执行?

问题描述

我正在研究操作系统中的内存管理,突然有了这个疑问。据说在纯需求分页中,进程开始执行时将零页带到主内存。虚拟地址空间包含许多东西,包括数据、堆栈、堆和文本区域或代码。因此,如果一个进程要执行并且它在主存中没有页面,指令寄存器将如何存储它的第一条指令,该指令将由 CPU 执行,从而导致进一步的页面错误?

标签: operating-systempaging

解决方案


这是查看地址空间的不好方法。

虚拟地址空间包含许多东西,包括数据、堆栈、堆和文本区域或代码。

地址空间由具有不同属性的内存组成:只读、只读/执行、读/写和很少读/写/执行。

虚拟内存是使用二级存储来模拟物理内存。程序加载器读取可执行文件并在磁盘上构建地址空间。例如,在某些系统上,可执行文件本身成为代码和数据的页面文件。

加载程序后,地址空间由对操作系统有效但没有映射到物理地址的页面组成。

当程序开始运行时,它会访问没有映射的有效页面,这会导致页面错误。操作系统页面错误处理程序查找页面在辅助存储器中的存储位置,将页面映射到物理页框,并将数据加载到页面中。

因此,如果一个进程要执行并且它在主存中没有页面,指令寄存器将如何存储它的第一条指令,该指令将由 CPU 执行,从而导致进一步的页面错误?

启动指令在可执行文件中指定。该值被加载到寄存器中。内存中没有第一条指令。当程序试图执行它的第一条指令时,它会出现页面错误。


推荐阅读