如题所述
先确定虚段S不在内存中,然后阻塞请求进程,然后查看内存中是否有空闲区,如果有则从外存读入段S,修改断表及内存空区链,最后唤醒请求进程并返回;如果内存中没有有空闲区,则访问空区容量总和能否满足段S,如能,则空区链接形成一个合适分区,再从外存读入段S,修改断表及内存空区链,最后唤醒请求进程并返回;如果空区容量总和不满足段S,则淘汰一个或几个空段,以形成一个空区,以便从外存读入段S,然后修改断表及内存空区链,最后唤醒请求进程并返回。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2013-12-25
程序请求访问一页-->页号>页表长度?--是-->越界中断
程序请求访问一页-->页号>页表长度?--否-->cpu检索块表-->页表项在块表中?--否-->访问页表-->页在内存?--否-->保留cpu现场-->从外存中找到缺页-->内存满否--否-->os命令cpu从外存读缺页-->启动I/o硬件-->将一页从外存换入内存--修改页表。
程序请求访问一页-->页号>页表长度?--否-->cpu检索块表-->页表项在块表中?--否-->访问页表-->页在内存?--否-->保留cpu现场-->从外存中找到缺页-->内存满否--是-->选择一页换出-->该页被修改否?--是-->将该页写回外存-->os命令cpu从外存读缺页-->启动I/o硬件-->将一页从外存换入内存--修改页表。
程序请求访问一页-->页号>页表长度?--否-->cpu检索块表-->页表项在块表中?--否-->访问页表-->页在内存?--否-->保留cpu现场-->从外存中找到缺页-->内存满否--否-->os命令cpu从外存读缺页-->启动I/o硬件-->将一页从外存换入内存--修改页表。
程序请求访问一页-->页号>页表长度?--否-->cpu检索块表-->页表项在块表中?--否-->访问页表-->页在内存?--否-->保留cpu现场-->从外存中找到缺页-->内存满否--是-->选择一页换出-->该页被修改否?--是-->将该页写回外存-->os命令cpu从外存读缺页-->启动I/o硬件-->将一页从外存换入内存--修改页表。