[操作系统] 分段

分段



1. 为什么要使用分段

在分页系统中,虚拟内存都是一维的,虚拟地址从0到最大地址,一个地址接着另一个地址。但对于某些问题,例如,程一个程序可能存在多个表:程序正文表、符号表、变量表、语法表和堆栈表,其中的某几个表可能不可预计的增长或缩小。在一维存储器中,这5个表只能被分配到虚拟地址的连续块中。

分页

很有可能,随着了程序的运行,两个表碰撞在一起,无法继续运行,但其实还有许多可用的空间。

所以我们可以在机器上使用多个互相独立的称为段的地址空间。每个段由一个从0到最大的线性地址序列构成。各个段的长度可以是0到某个允许的最大值之间的任何一个值。不同段的长度可以不同,并且可以在运行期间动态改变。

因为每个段都是独立的地址空间,所以它们的增长和减小不会影响其他的段。可以把段看成一个二维存储器,想要访问其中的地址,需要提供段号和段内地址。与页不同的是,段是一个逻辑实体。

除此之外,我们可以将程序中的每个过程放在不同的段中,这样即使在后来的版本中,过程改变了大小,也不会对其他过程造成影响。但在一维地址中,一个过程的修改,就会造成其他过程修改地址。

分段还有助于进程间的共享过程和数据,在分段中可以将共享库单独放入一个段中,从而不需要每个进程在地址空间中保存一份。并且每个不同的段可以有不同的保护类型。

分页与分段

2. 分段与分页的结合

如果一个分段过大,甚至大到无法整个保存在内存中。我们就需要对这个段进行分页。

分段与分页结合

参考书目:现代操作系统第三版

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值