操作系统——分段式内存管理

操作系统——分段式内存管理

 

操作系统——分段式内存管理

分页式的优点

从计算机的角度出发,提高了内存的利用率,提升了计算机的性能,以分页通过硬件机制实现,对用户透明

分段式的优点

考虑到用户和程序员,已满足方便编程、信息保护和共享、动态增长、动态链接等多方面需求

分段式内存管理

分段:按照用户进程中的自然段划分逻辑空间,例如:用户的进程由主程序、两个子程序、栈和一段数据组成,五部分划分为 5 个段,每段都从 0 开始编址,并分配一段连续的地址空间(段内要求连续、段间不要求连续)其逻辑地址由段号 S 和偏移地址 W 两部分组成

在段式系统中,段号和段内偏移量必须由用户提供,高级程序语言中,这个工作由编译程序完成

段表:每个进程都有一张逻辑空间与内存空间映射的段表,每一个段表项对应进程的一个段。段表项记录该段在内存中的起始地址和段的长度。段表项的组成 = 段号+段长+本段在主存中的起始地址 b

执行中的进程可以根据段表找个每个段对应的内存区域,段表用于实现从逻辑段到物理内存区的映射。

地址变换机构:分段式内存管理的逻辑地址到物理地址间的转换(在一般问题中,段号和段内偏移一定要显式给出

1:从逻辑地址A 中取出前几位为段号S,后几位为段内偏移量W(一般对于分段式,其逻辑地址以二进制给出)(段号和段内偏移量所占的位数不确定)

2:比较段号 S 与段表长度 M(存在控制寄存器中),S >= M产生越界中断,否则继续执行

3:段号S 对应的段表项地址 = 段表项起始地址F + 段号S * 段表项长度。取出该段表项的前几位得到段长C,若段内偏移量 W >= C产生越界中断,否则继续执行

4:取出段表项中该段的起始地址b,物理地址:E = b + W

段的共享与保护

共享:在分段系统中,段的共享是通过两个作业的段表中相应表项指向被共享段的同一个物理副本来实现的。当一个作业正在从共享段中读取数据时,必须防止另一个作业修改此共享段中的数据。不能修改的代码称为纯代码或可重入代码,这样的代码和不能修改的数据是可以共享的,可修改的代码或数据不能共享。

保护:上面的存取控制保护和越界控制保护(上面的第二步)

段页式管理方式

页式存储管理可以有效的提高内存利用率。段式存储管理可以反映程序的逻辑结构并有利于段的共享。将其结合,形成了段页式存储管理方式

在段页式系统中,作业的地址空间首先被分为若干逻辑段,每段都有自己的段号,然后再将每个段分成若干个大小固定的页。对内存空间的管理仍然和分页存储管理一样,将其分为若干个和页面大小相同的存储块。对内存的分配仍然以存储块为单位。

段页式系统中,逻辑地址 = 段号 + 页号 + 页内偏移量。为了实现地址转换,系统为每个进程都建立了一张段表,每个分段都有一张页表,段表 = 段号 + 段长 + 页表的起始地址。页表 = 页号 + 块号。此外系统中应该还有一个段表寄存器,指出作业的段表起始地址和段表长度。

在逻辑地址到物理地址时,段号 和 页号按照之前的方式进行映射 E = b +W

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值