操作系统管理模式:页式管理
/*
对于页式管理的的理解,得先从非页式管理开始说起。非页式管理就是连续存储空间的分配与回收:假设内存为一条线,在这条线上,有些段是空闲的,有些段是占用的,比如,第一个是占用的,第二个是空闲的,第三个是占用的,第四个是占用的,第五个是空闲的等等,那么这条线就被分为了n各块,但是,有一种情况,这些空闲的块,每一个都不够满足一个新软件的运行对于内存要求,但是所有的空闲的块加起来就能够满足要求,这些空闲的块就是所谓的“外部碎片”,这也就造成了系统分配空间失败了,明明有空间,但是不能执行软件,原因就是连续分配。由于是连续分配,要分配空间必须是连续空间,不能是非连续空间,因为只有连续空间才能够进行定位,才能进行访址,才能进行内存访问,尤其是数组,对于for循环执行数组,i++操作就是对数组内容进行顺序的查找,能够进行顺序查找,那么内存空间必须连续。然而每个外部碎片却都不够用,而且这些碎片不能拼起来使用,那么就需要把这些碎片进行移动,把分配了的内存空间往前移,这就是“磁盘整理”。磁盘整理简单来说:外存的空间也会存在碎片,外存的一个文件的内容的存放不是连续空间存放的,是非连续空间存放的,假设外存是一个矩形阵列,第一块内容存放到了第一行第一列,第二块存放到了第一行第五列,第三块内容存放到了第二行第三列等等,这内容是不连续的,只要我们能够记录下这些内容都在哪个块,查找的时候按顺序查找,那么就可以读出这个完整的内容,这样的话需要跳跃很多的空间,但是如果我们可以连续的一次性读出来,那么就可以节省找的很多时间,速度就可以提高。磁盘整理的目的是为了把原来分配在不同地方的逻辑上连续,物理上不连续的一个磁盘空间,变成一个逻辑上和物理上都连续的磁盘空间,以便在读取内容时可以节省时间,用不着再去寻找扇区。磁盘整理是对于外存而言的,对于内存的外部碎片,我们可以进行“压缩”,即,将所有已分配的空间移动在一起,将所有可用空间“合并”成一个大的可用空间。但,这种操作非常消耗系统资源,同时,要涉及复杂的“重定位”技术。
*/
上述问题的根子是:连续存储分配。若能突破连续存储分配的桎梏,那就可以解决上述问题了。这里就是刚才的“页式分配”方案:
1.将物理内存分成大小相同的若干“页”,这称为“物理页面”;并对这些物理页面进行编号;
2.将软件按物理页面大小进行分割,分割成多个“逻辑页面”,从0开始连续编号(下标);
3.按逻辑页面的顺序,对于每一个逻辑页面,在物理页面中找“尚未使用的”页面,并分配给这个逻辑页面;
4.同时,生成由逻辑页号和物理页号作为数值对的数值集合,这个集合称为“页面表”;
举个例子如下:上述地址的映射过程要进行两次除法运算,这是非常耗时的!为了加快这样的运算,可以刻意将物理页面的大小设置为2 ^ n,因为:m / 2 ^ n <=> m >> n,m % 2 ^ n <=> m & (2 ^ n - 1);甚至,OS和计算机硬件技术结合,计算机硬件技术专门给出计算逻辑页号和物理偏移的电路,以无限加速上述操作。
而内存对齐模式就是为了这个目的而命名的!(后面的博文有关于内存对齐模式的介绍)
【操作系统】操作系统的内存管理模式的自我认识-----页式管理
最新推荐文章于 2021-05-28 02:18:49 发布