虚拟内存是实现将实际内存进行虚拟化,转化为逻辑上的内存空间,使用到的方式有: 页式存储管理,段式存储管理,段页式存储管理。目的是将一个进程离散的装入到不连续的内存。
页式存储管理
将程序化为一个个页,将内存化为一个个块,实现逻辑上的页与实际内存的块进行映射,使用页表进行页块映射,当要查找的数据不在内存页时,出现缺页中断。出现缺页中断的程序会被阻塞,此时如果内存中还有空闲块,则会将缺少页放入内存,如果没有空闲块,则通过替换算法,将某页进行替换。
段式存储管理
将用户程序划分为一段段有逻辑意义的信息段,段与段间在物理上可以连续也可以不连续,段内地址连续。通过段地址寄存器和段表实现地址映射。
段页式存储
将程序进行分段,再在段内进行分页
分段和分页区别
- 分段大小不固定,物理段和逻辑段也可以大小不同
- 分页页和页间大小可以不同,但逻辑页和物理块需要相同
- 因为页的大小是固定的,所以要计算物理块的地址,只需要知道逻辑地址就可以。比如块大小为1k,逻辑地址为2500,那么页号为2500/1024=3,页内偏移为2500%1024=452,查找页号3对应的物理块号为8,那么实际物理地址为8x1024+452=8644。因此,分页的逻辑地址空间是一维的,分段是二维的。