内存管理-内外部碎片

  1. 内部碎片
  2. 外部碎片

内部碎片

被进程占用但并没有使用的内存空间,并且不能被其他进程占用。直到改进程释放内存或者进程结束的时候,系统才能重新利用这个内存空间。

当我们采用分段内存管理的时候,进程有多大需求就会分配多大的段,所有此时不会出现内部碎片。而此时,每个段的长度不固定,多个段未必能恰好使用所有的内存空间,就会产生多个连续的小块,也就是外部碎片,这些碎片不能充分的利用。导致原本可以分配足够大小的内存给进程允许,此时并不能分配。

在分页管理中往往回出现内部碎片,

外部碎片

解决外部碎片的方法采用内存交换。首先把进程占用的内存写入硬盘上,再从硬盘上读回到内存上,此时我们装载到之前占用的内存之后,让其连续。
再linux系统中,这就是Swap空间,从硬盘中划分出来的,专用于内存与硬盘的空间交换。

因为分段内存管理很容易产生外部内存碎片,需要不断进行内存交换,进行内存交换的时候,交换的是一个占内存空间很大的程序,就会导致程序卡顿。所以为了解决此问题,我们往往采用内存分页。

分页中因为每一页大小都是固定的,linux下往往是4kb,因为每一页和每一页之间都是紧密连接的,所以不会出现外部碎片。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。