操作系统:连续分配、分页和分段三种存储分配机制的优缺点

版权声明:本博客为记录本人学习过程而开,内容大多从网上学习与整理所得,若侵权请告知! https://blog.csdn.net/Fly_as_tadpole/article/details/86571740

连续,设计简单,直接寻址,效率高。缺点:内存利用效率最低,有内部碎片。
分页,缓解内存压力,设计最复杂(粒度最小),无论数据有多少,都只能按照页面大小分配,造成浪费。
分段,程序员在编程和使用上多方面的要求(方便、共享、保护、链接、内存动态增长),缺点,无法利用碎片,必须搬移内存,造成性能损失。


一、分区存储管理

  1、固定分区:

  优点:易于实现、开销小

  缺点:存在内部碎片(分区内未被利用空间)、分区总数固定,限制了并发执行的程序数量。

  2、动态创建分区:按照程序申请要求分配。

  优点: 没有内部碎片

  缺点:有外部碎片(难以利用的小空闲分区)

二、页式存储管理

  优点: 没有外部碎片,最后一页可能有内碎片但不大;程序不必连续存放;便于改变程序占用空间大小。

  缺点: 程序仍需要全部装入内存(基本页式存储管理)。

分页和分段系统有许多相似之处。比如,两者都采用离散分配方式,且都要通过地址映射机构来实现地址变换。但在概念上两者完全不同,主要表现在下述三个方面。 

页大小固定,段大小不固定。

页是一维的,段是二维的;



(1) 页是信息的物理单位,分页是为了实现非连续分配,以便解决内存碎片问题, 提高内存的利用率

或者说,分页仅仅是由于系统管理的需要而不是用户的需要。段则是信息的逻辑单位,分段的目的是为了能更好地满足用户的需要。 

(2) 页的大小固定且由系统决定,由系统把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的,因而在系统中只能有一种大小的页面;而段的长度却不固定,决定于用户所编写的程序,通常由编译程序在对源程序进行编译时,根据信息的性质来划分。

(3) 分页的作业地址空间是一维的,即单一的线性地址空间(一对一,程序员只需利用一个记忆符,即可表示一个地址;而分段的作业地址空间则是二维的,程序员在标识一个地址时,既需给出段名,又需给出段内地址(一对多)
 

猜你喜欢

转载自blog.csdn.net/Fly_as_tadpole/article/details/86571740