纯需求分页下进程如何启动执行?

How does process start execution under pure demand paging?

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

这种查看地址的方式很糟糕 space。

The virtual address space contains many things including data, stack,heap and the text-area or code.

地址 space 由具有不同属性的内存组成:只读、readonly/execute、read/write 很少 read/write/execute。

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

加载程序后,地址 space 包含对操作系统有效但没有映射到物理地址的页面。

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

So if a process is going to execute and it has no page in main memory,how will Instruction register store its first instruction which will executed by CPU resulting in further page faults?

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