操作系统内存管理 页式、段式、段页式存储

本文介绍了离散式内存分配的三种方法:页式、段式和段页式存储管理。页式存储通过页表实现逻辑地址与物理地址映射,减少了内存碎片;段式存储按逻辑划分,便于共享和保护,但可能导致内部碎片;段页式结合两者优点,但也增加了管理复杂性和硬件开销。

  连续型存储管理的缺点是会有过多的内存碎片。因此提出离散式内存分配,它主要包括以下三种方法:

-页式
段式
段页式

页面和物理块
  页面实际上就是把一个进程的逻辑地址空间分成一块一块,每一块称为一个页面。物理块是对主存进行分块,大小和页面的大小是一致的。

页式存储管理

【工作原理】:
  当有一个进程需要分配内存空间时,操作系统会将该进程的逻辑地址分成若干页,页面大小和物理块一样。然后将每一页放到物理块中,用页表记录下页号对应的物理块号,那么根据页表来查找就可以了。
  在页面和物理地址建立映射的时候,页表就被创建了。页表在内存中是连续存储的。实际上,页表在内存中只存了物理块号,页号没必要存,用相对地址来表示就可以了。
在这里插入图片描述
优点:没有外碎片,每个内碎片不超过页的大小。
缺点:程序全部装入内存,要求有相应的硬件支持,如地址变换机构缺页中断的产生和选择淘汰页面等都要求有相应的硬件支持。增加了机器成本和系统开销。

段式存储管理

  页式存储存在的缺点,如果页面太小,最终的页表项会很多很多;而且通过分页把一个进程各个部分分离开来,一定程度上影响了进程的逻辑性。

【工作原理】:
  对一个进程按照逻辑划分成几个段,然后这几个段离散地存储到内存空间上,段内部是连续存储。段表包括段长、基址。和页表一样,段表也是连续存储到内存上的,段号可以直接用逻辑地址推算出来,没有必要存到内存上。
优点:可以分别编写和编译,可以针对不同类型的段采取不同的保护,可以按段为单位来进行共享,包括通过动态链接进行代码共享。
缺点:会产生碎片。

段页式存储管理

  先对进程分段,再对各个段进行分页。 物理地址是分成一个一个物理块的,将最终分页的页面再一个一个地装到物理块中。

形象理解段页式存储:
  国家有划分很多的省,然后在省之下又划分了很多的市。这里的省就和分段是一个道理,市就和分页是一个道理。国家不能只划分城市,也不能只划分省份。
如果只划分城市的话(分页式),那么每天的天气预报就是个问题,难道要播报全国几百个城市?如果只划分省份的话,一点都不利于管理(分段式)。因此,国家把同一个地方的人划分到一个省里面去(分段保持进程的逻辑性),同时为了便于管理,再在省中划分城市(分页,离散存储)。

关于段页式的寻址问题实际上就是一个找人的问题。
比如,张三居住于浙江省宁波市北仑XX,要去找他,肯定要先去该省份(找段号)。找到他所在浙江省,那么接下来要找他所处的城市(找段内页号)。找到他在宁波市,但你现在还不能具体确定他的位置,还得找具体是哪一个区,哪一条路(用页内偏移算具体的物理地址)。

优点:段页式管理是段式管理和页式管理相结合而成,具有两者的优点。
缺点:由于管理软件的增加,复杂性和开销也增加。另外需要的硬件以及占用的内存也有所增加,使得执行速度下降。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值