嵌入式面试:缺页中断发生后,若未在磁盘上找到缺失的页会怎样

先粘贴百度的缺页中断处理程序处理步骤:问题是在第六条中,操作系统查找所需页面在磁盘上的地址时,没找到所需页面,这时会发生什么?(面试听到这个问题一脸懵逼,自己说了下估计是寻址错误,系统会报错(猜的),有没有大佬帮忙解决下疑惑)。
缺页中断发生时的事件顺序如下:
1) 硬件陷入内核,在内核堆栈中保存程序计数器。大多数机器将当前指令的各种状态信息保存在特殊的CPU寄存器中。
2) 启动一个汇编代码例程保存通用寄存器和其他易失的信息,以免被操作系统破坏。这个例程将操作系统作为一个函数来调用。
3) 当操作系统发现一个缺页中断时,尝试发现需要哪个虚拟页面。通常一个硬件寄存器包含了这一信息,如果没有的话,操作系统必须检索程序计数器,取出这条指令,用软件分析这条指令,看看它在缺页中断时正在做什么。
4) 一旦知道了发生缺页中断的虚拟地址,操作系统检查这个地址是否有效,并检查存取与保护是否一致。如果不一致,向进程发出一个信号或杀掉该进程。如果地址有效且没有保护错误发生,系统则检查是否有空闲页框。如果没有空闲页框,执行页面置换算法寻找一个页面来淘汰。
5) 如果选择的页框“脏”了,安排该页写回磁盘,并发生一次上下文切换,挂起产生缺页中断的进程,让其他进程运行直至磁盘传输结束。无论如何,该页框被标记为忙,以免因为其他原因而被其他进程占用。
6) 一旦页框“干净”后(无论是立刻还是在写回磁盘后),操作系统查找所需页面在磁盘上的地址,通过磁盘操作将其装入。该页面被装入后,产生缺页中断的进程仍然被挂起,并且如果有其他可运行的用户进程,则选择另一个用户进程运行。
7) 当磁盘中断发生时,表明该页已经被装入,页表已经更新可以反映它的位置,页框也被标记为正常状态。
8) 恢复发生缺页中断指令以前的状态,程序计数器重新指向这条指令。
9) 调度引发缺页中断的进程,操作系统返回调用它的汇编语言例程。
10) 该例程恢复寄存器和其他状态信息#嵌入式面经##学习路径#
全部评论
没学过嵌入式,不过操作系统讲了下,比较浅
点赞 回复 分享
发布于 2021-07-04 18:19
现在嵌入式都考这么细的了吗
点赞 回复 分享
发布于 2021-08-02 18:09

相关推荐

11-05 07:29
贵州大学 Java
点赞 评论 收藏
分享
评论
1
7
分享
牛客网
牛客企业服务