[操作系统笔记]基本分段存储管理

内容系听课复习所做笔记,图例多来自课程截图

在这里插入图片描述

分段原理

与“分页”最大的区别就是:离散分配时所分配地址空间的基本单位不同

 1
分页是不管程序的逻辑的,规定了页大小就是这么多,但是分段是依据程序自身逻辑来划分的(分页的基本单位“页”的长度是固定的,分段划分的基本单位“段”是大小不一的)

在这里插入图片描述

既然是分段(类似于分页,肯定也是离散存储),那么就需要段表保存映射的信息,需要查表完成程序的逻辑地址空间到物理地址空间的映射(转换)

在这里插入图片描述
因为段长不是固定的,所以段表需要记录段长(对比来看,页表不需要记录页长)

然后关于上面为什么是 16 + 32 = 48 16+32=48 16+32=48位,因为基址是内存的物理地址(确切的说是这个段在内存中的起始地址)

段表实现逻辑段到物理内存区的映射(逻辑地址->物理地址)

地址转换方式

段表存储的东西

地址变换是要求对于变化的逻辑空间里的地址已知,至于要用的东西在哪个段里,是看程序结构决定的。

在这里插入图片描述

与页不同的是,这里得检查段内地址是否超过段长

显然,需要两次访存(第一次是查段表,第二次是访问目标的内存单元)

对比

页是信息的物理单位。分页的主要目的是为了实现离散分配,提高内存利用率。分页仅仅是系统管理的需要,完全是系统行为,对用户是不可见的。

段是信息的逻辑单位。分段的主要目的是更好地满足用户需求。一个段通常包含着一组属于一个逻辑模块的信息。分段对用户是可见的,用户编程时需要显式地给出段名。

页的大小固定且由系统决定。段的长度却不固定,决定于用户编写的程序。

分页的用户进程地址空间是一维的,程序员只需给出一个记忆符即可表示一个地址。
分段的用户进程地址空间是二维的,程序员在标识一个地址时,既要给出段名,也要给出段内地址。


为什么说页是一维的,因为它的逻辑地址空间是被均匀等分的,当给出一个确定的逻辑地址时,总能找到处于第几页,及其对应的页内偏移。比如逻辑地址是9,页长为4,很容易知道是在第 9 / 4 = 2 9/4=2 9/4=2页,页内偏移是 9 % 4 = 1 9\%4=1 9%4=1。但是段式管理并不可以。

优点

分段比分页更容易实现信息的共享和保护。不能被修改的代码称为纯代码或可重入代码(不属于临界资源),这样的代码是可以共享的。可修改的代码是不能共享的

在这里插入图片描述
出现下图这种情况,对于分页管理,一个页存在允许被其他进程访问和不允许的两部分,这样不好标记到底允不允许其他进程访问,而段式存储则不会有这种问题。
在这里插入图片描述

分段和分页都可以使用快表机制

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值