|
知识路径: > 嵌入式系统软件基础知识 > 嵌入式操作系统基础知识 > 存储管理 > 虚拟存储技术(程序局部性原理、虚拟页式存储管理、页面置换算法等) > 虚拟存储管理 >
|
考试要求:掌握
相关知识点:9个
|
|
|
|
虚拟页式存储管理就是在页式存储管理的基础上,增加了请求调页和页面置换的功能。它的基本思路是:当一个用户程序需要调入内存去运行时,不是将这个程序的所有页面都装入内存,而是只装入部分的页面,就可以启动这个程序去运行。在运行过程中,如果发现要执行的指令或者要访问的数据不在内存当中,就向系统发出缺页中断请求,然后系统在处理这个中断请求时,就会将保存在外存中的相应页面调入内存,从而使该程序能够继续运行。
|
|
|
在单纯的页式存储管理当中,页表的功能就是把逻辑页面号映射为相应的物理页面号。因此,对于每一个页表项来说,它只需要两个信息,一个是逻辑页面号,另一个是与之相对应的物理页面号。但是在虚拟页式存储管理当中,除了这两个信息之外,还要增加其他的一些信息,包括驻留位、保护位、修改位和访问位。
|
|
|
.驻留位:表示这个页面现在是在内存还是在外存。如果这一位等于1,表示页面位于内存中,即页表项是有效的;如果这一位等于0,表示页面还在外存中,即页表项是无效的。如果此时去访问,将会导致缺页中断;
|
|
|
.保护位:表示允许对这个页面做何种类型的访问,如只读、可读写、可执行等;
|
|
|
.修改位:表示这个页面是否曾经被修改过。如果该页面的内容被修改过,CPU会自动地把这一位的值设置为1;
|
|
|
.访问位:如果这个页面曾经被访问过,包括读操作、写操作等,那么这一位就会被硬件设置为1。这个信息主要是用在页面置换算法当中。
|
|
|
当一个缺页中断发生时,操作系统是如何来处理的呢?当发生一个缺页中断时,首先判断在内存中是否还有空闲的物理页面。如果有,就分配一个空闲页面出来;如果没有,就要采用某种页面置换算法,从内存当中,选择一个即将被替换出去的页面。对这个页面的处理也要分两种情形。如果这个页面在内存期间曾经被修改过,也就是说,在它的页表项里面,修改位的值等于1,那么就把它的内容写回到外存当中。如果这个页面在内存期间没有被修改过,那么就什么都不用做,到时候它自然而然会被新的页面所覆盖。现在我们已经有了一个可供使用的物理页面,不管这个页面是直接分配的空闲页面,还是将某个页面置换出去后腾出来的。接下来,就可以把需要访问的新的逻辑页面装入到这个物理页面当中,并修改相应的页表项的内容,包括驻留位、物理页面号等等。最后退出中断,重新运行中断前的指令。当这条指令重新运行的时候,由于它需要访问的逻辑页面已经在内存当中,所以就能够顺利地运行下去,不会再产生缺页中断。缺页中断的处理流程如下图所示。
|
|
|
|
|