我当时正在研究OS中的内存管理,突然有了这个疑问。据说在纯需求分页中,进程从零页进入主存储器开始执行。虚拟地址空间包含许多内容,包括数据,堆栈,堆以及文本区域或代码。那么,如果要执行的进程在主存储器中没有页面,那么指令寄存器将如何存储其第一条指令,该指令将由CPU执行,从而导致进一步的页面错误?
答案 0 :(得分:1)
这是查看地址空间的一种糟糕方法。
虚拟地址空间包含许多内容,包括数据,堆栈,堆以及文本区域或代码。
地址空间由具有不同属性的内存组成:只读,只读/执行,读/写和很少读/写/执行。
虚拟内存是使用辅助存储来模拟物理内存。程序加载器读取可执行文件并在磁盘上建立地址空间。例如,在某些系统上,可执行文件本身成为代码和数据的页面文件。
一旦加载了程序,地址空间将包含对操作系统有效但不映射到物理地址的页面。
程序开始运行时,它将访问有效的页面而没有导致页面错误的映射。操作系统页面错误处理程序查找页面在辅助存储器中的存储位置,将页面映射到物理页面框架,并将数据加载到页面中。
因此,如果要执行的进程在主存储器中没有页面,那么指令寄存器将如何存储将由CPU执行的第一条指令,从而导致进一步的页面错误?
启动指令在可执行文件中指定。该值被加载到寄存器中。内存中没有第一条指令。当程序尝试执行其第一条指令时,就会出现页面错误。