- 页:一个固定长度的数据块,存储在二级存储器中(如磁盘)。数据页可以临时复制入内存的页框中。
- 段:一个变长的数据块,存储在二级存储中,整个段可以临时复制到内存的可用区域(分段),或者将段分成许多页,将页单独复制到内存中(分段分页相结合)。
——重定位:就是把程序的逻辑地址空间变换成内存中的实际物理地址空间的过程
操作系统存储至少要分成两级:内存和外存。
- 内存提供快速的访问,成本相对较高,是易失性的,不能永久存储。
- 外存比内存慢,但是便宜,非易失性,可以长期存储程序和数据。而较小的内存用于保存当前使用的程序和数据。
内存管理最基本的操作时由处理器把程序装入内存中执行。
——固定分区:
原理:静态分区模式,给进入主存的用户作业划分一块连续存储区域,把作业装入该连续存储区域,若有多个作业装入主存,则它们可并发执行。
使用大小相等的固定分区有一些问题:程序可能太大而不能放到一个分区中,内存的,利用率很低。由于被装入的数据块小于分区大小,从而导致分区内部有浪费现象,成为“内部碎片”。对与大小不等的分区策略,最简单的方法就是把每个进程分配到能够容纳它的最小分区中。
优势:实现简单,只需要极少的操作系统开销
缺点:有内部碎片,对内存的使用不充分,活动进程的最大数目是固定的。
——可变分区:在作业要求装入内存时,根据用户作业的大小和当时内存空间使用情况决定是否为该作业分配一个分区。因此分区大小不是预先固定的,而是按作业需求量来划分的;分区的个数和位置也不是预先确定的。它有效地克服了固定分区方式中,由于分区内部剩余内存空置造成浪费的问题。
系统初启时,整个用户区可看作一个大的空闲区。当作业要求装入时,根据作业对内存需求量,从空闲区中划出一个与作业大小一致的分区来装入该作业,剩余部分仍为空闲区。当空闲区能满足需求时(即空闲区长度>=作业长度),作业可装入;否则,作业暂时不能装入。
装入内存的作业执行结束后,所占分区被收回成为一个空闲区,这个空闲区又可用于装入其他作业。随着作业不断装入和撤离,内存空间被分成许多分区,有的被作业占用,有的空闲。
——空闲区表
用来记录空闲区的起始地址和长度。当有作业要装入内存时,在空闲区表中找一找“ 未分配 ”的栏目,从中找出一个能容纳作业的空闲区。若空闲区大于作业的长度时则被分成两部分,一部分分配给作业;另一部分仍作为空闲区登记在表中。若找到的空闲区等于作业长度时,分配后该栏目状态改为“空”状。当有作业撤离收回所占分区后,应把收回区域的起始地址和长度登记在状态为“空”的栏目中,且将状态改为“未分配”。如果收回的区域正好和某一空闲区相邻,则应将其合并成一个分区后登记
——移动技术
内存碎片指内存出现一些零散的小空闲区域,很难再利用,长此以往将造成严重的资源浪费。解决方法是移动所有的占用区域,使得空闲碎片合并成一整块连续区域,这一技术称为移动技术