我正在阅读有关需求分页中的页面错误的信息。页面错误发生在 1)被访问的内存是非法的 2)页面是有效的但不存在于主内存中
我读到使用有效-无效位可以判断内存是否不在逻辑地址空间中,因为相应的位将被标记为无效。
相同的有效-无效位用于识别上述2个条件。
我的问题是操作系统如何知道被访问的内存是非法的,或者页面是否有效但不在主内存中,只有一个有效-无效位?谢谢你!
我正在阅读有关需求分页中的页面错误的信息。页面错误发生在 1)被访问的内存是非法的 2)页面是有效的但不存在于主内存中
我读到使用有效-无效位可以判断内存是否不在逻辑地址空间中,因为相应的位将被标记为无效。
相同的有效-无效位用于识别上述2个条件。
我的问题是操作系统如何知道被访问的内存是非法的,或者页面是否有效但不在主内存中,只有一个有效-无效位?谢谢你!
在Demand Paging中,如果valid-invalid bit
设置了(1),则表示关联page
是合法的并且在内存中。但是,如果valid-invalid bit
未设置(0),则意味着以下内容:
page
无效。这意味着该页面不在进程中logical address space
。或者page
的是 on disk
。无效页面访问会导致页面错误陷阱。我们通过以下方式处理它。引用Silberschatz、Galvin、Gagne 的操作系统原则
- 我们检查该进程的内部表(通常与进程控制块一起保存)以确定引用是有效还是无效的内存访问。
- 如果引用无效,我们终止进程。如果它是有效的,但我们还没有引入该页面,我们现在将它引入。
- 我们找到一个空闲帧(例如,从空闲帧列表中取出一个)。
- 我们安排一个磁盘操作来将所需的页面读入新分配的帧中。
- 当磁盘读取完成时,我们修改与进程和页表一起保存的内部表,以指示该页现在在内存中。
- 我们重新启动被陷阱中断的指令。该进程现在可以访问该页面,就好像它一直在内存中一样。