读书笔记-现代操作系统-3储存管理-3.5分页系统中的设计问题

3.7 分段

有两个或者多个独立的地址空间可能比只有一个要好得多。因为程序在运行的过程中有些部分会不断增长,如果只用一维的线性空间可能会有很多问题。由此产生了段的概念。

通用的解决方案是在机器上提供多个互相独立的称为段(segment)的地址空间。每个段由一个从0到最大的线性地址序列构成。各个段的长度可以是0-某个运行的最大值之间的任何值。不同的段长度一般都是不同的。并且在运行期间可以动态的改变。
这样程序在运行的时候就需要提供两个地址,段号和段内地址。

段是一个逻辑实体,程序员知道这一点并把它们作为一个逻辑实体来使用。可能包括一个过程、一个数组等,但是一般它不会同时包含多种不同类型的内容。

  • 段的优点
    1. 每个过程如果都是位于一个独立的段中间的话,并且起始地址是0的话,那么单独编译好的过程连接起来操作就可以得到很大的简化。
    2. 如果对程序进行修改的话,即使做很大的修改也只需要对修改的部分重新编译。原先的其他部分任然可以使用。
    3. 分段对于进程间共享数据和过程也是有利的。常见的例子就是共享库。分段系统中可以把共享库单独放到给段中。这样不需要每个进程都放一个共享库的副本。
    4. 由于每个段都是一个逻辑实体,因此可以针对不同的段提供不同的访问权限。而这在一维分页储存中是没有意义的。
    5. 与分页系统相同,分段系统是对上层封装完好的。用户会认为段一直都在内存中。

3.7.1纯分段的实现

段的长度是不同的,除此之外在实现方面与分页的基本思路没有什么区别。也会产生棋盘型碎片或称外部碎片(external fragmentation)

3.7.2 分段和分页的结合

书上介绍了两个例子。简单的说用我的理解是先进行分段然后对各个分段在进行分页处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值