在纯需求分页下,流程如何开始执行?

时间:2018-11-28 13:46:25

标签: operating-system paging

我当时正在研究OS中的内存管理,突然有了这个疑问。据说在纯需求分页中,进程从零页进入主存储器开始执行。虚拟地址空间包含许多内容,包括数据,堆栈,堆以及文本区域或代码。那么,如果要执行的进程在主存储器中没有页面,那么指令寄存器将如何存储其第一条指令,该指令将由CPU执行,从而导致进一步的页面错误?

1 个答案:

答案 0 :(得分:1)

这是查看地址空间的一种糟糕方法。

  

虚拟地址空间包含许多内容,包括数据,堆栈,堆以及文本区域或代码。

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

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

一旦加载了程序,地址空间将包含对操作系统有效但不映射到物理地址的页面。

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

  

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

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