1.内存换出的含义
虚拟内存就是操作系统给进程提供的一个规整的,总长度为4GB(32位)的地址空间,这个进程可以随意访问这个空间的任何一个地址。但是由于实际的物理内存可能比4GB小,所以实际上这4GB的虚拟内存可能无法全部映射到物理内存上。这就需要内存换入和换出来解决这个问题。
正因为这样的换入和换出,操作系统用一个小的物理内存来制造出一个大而规整的虚拟内存供进程使用。
2.内存换入的详细过程
何时进行内存换入?
回忆段页式管理机制就会发现,在进程PC指针读到一个逻辑地址的时候,操作系统就会查段表算出虚拟地址,由于虚拟内存是肯定存在的,所以这一步一定可以正常完成。假设这里取出的虚拟地址是0x4040。
现在进行地址转换第二步,一页大小是4KB,MMU计算出0x4040的虚拟页号是4,即该虚拟地址对应的页号,在页表中查看这个页号对应的页框号。如果这一块内存没有映射到内存上,此时查到的页框号就是空的,说明这个这个虚拟地址对应的虚拟的页还没有被映射到实际的物理页框上。
实际上,页表中有一个有效位,这个有效位如果为0,代表该虚拟页还没有建立映射,这时候就要去换页。如果为1代表这个虚拟页有对应的物理页框,当前的请求的地址就在内存上。
MMU查页表发现没有对应的页,就要进行中断请求调页,这个中断被称为缺页中断。将缺少的页从磁盘中置换出来放到内存中,再重新建立页表映射。