1.常见的内存管理办法,固定加载地址的内存管理,固定分区的内存管理,非固定分区的内存管理和交换内存管理。第一种只适合单道编程,后三种适合多道编程,这3种适合多道编程的内存管理方式均使用同一种实现机制:基址和极限,并且以交换内存管理最为灵活和先进,但是交换内存管理存在的问题是空间浪费和程序大小受限。
2.什么是外部碎片?
随着程序在内存和磁盘间的交换,内存将变得越来越碎片化,即内存将被不同的程序分割成尺寸大小不一的无法使用的小片空间,从进程的角度看,这些碎片处于进程空间的外面,这种碎片化过程也称为外部碎片化。
3.除了外部碎片,交换内存管理还存在什么问题?
1)空间增长率低下,把程序倒到磁盘,找到大的内存空间,在倒会内存,这种做法效率是低的。
2)空间增长存在限制,尽管多个程序的总空间可以超过物理内存,但是单一程序还是不能超过物理内存的限制。
4.交换内存管理问题的解决之道是什么?
将虚拟内存和物理内存都分成大小一样的部分,如4KB,8KB,16KB,我们称为页,然后按页进行内存分配,就可以克服外部碎片的问题。此时页面作为内存空间的最小分配单位。一个程序的一个页面可以存放在任意的一个物理页面里,由于物理空间是页面的整数倍,并且页面作为内存空间的最小分配单位,将不会再产生外部碎片。由于虚拟页面可以存放在任何一个物理页面里,空间增长也任意解决,只要分配额外的虚拟页面,并找到一个闲置的物理页面存放即可。
5.在分页系统下,一个程序发出的虚拟地址由两部分组成:2的12次方为4096,4096/1024=4KB,2的20次方为1048576,1048576*4/(1024*1024)=4GB,刚好是4G的寻址空间。为了解决程序比内存大的问题,我们可以允许一个程序的部分虚拟页面存放在物理页面以外,也就是放在磁盘中,需要时,在调入。