【计算机操作系统】基本分段存储管理

基本分段存储管理

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

分页管理方式是从计算机的角度考虑设计的,目的是提高内存的利用率,提升计算机的性能;
分页通过硬件机制实现,对用户完全透明,分段管理方式的提出则考虑了用户和程序员,以满足方便编程、信息保护和共享、动态增长及动态链接等多方面的需要

分段的概念

段式管理方式按照用户进程中的自然段划分逻辑空间
进程的地址空间:按照程序自身的逻辑关系划分为若干个段,每个段都有一个段名,每段从 0 开始编址

例如,用户进程由主程序段、两个子程序段、栈段和数据段组成,于是可以把这个用户进程划分为 5 段,每段从 0 开始编址,并分配一段连续的地址空间(段内要求连续,段间不要求连续,因此整个作业的地址空间是二维的),其逻辑地址由 段号S段内偏移量W 两部分组成

段号的位数决定了每个进程最多可以分几个段
段内偏移量的位数决定了每个段的最大长度是多少

eg.】在图中,段号为16位,段内偏移量为16位,因此一个作业最多有 2 16 = 65536 2^{16} = 65536 216=65536 段,最大段长为 2 16 B = 64 K B 2^{16}B =64KB 216B=64KB

在这里插入图片描述

段表的概念

程序分多个段,各段离散地装入内存,为了保证程序能正常运行,就必须能在物理内存中找到各个逻辑段的存放位置,因此每个进程都有一张逻辑空间(逻辑地址)与内存空间(物理地址)映射的段表,其中每个段表项对应进程的一段,段表项记录该段在内存中的起始位置(基址)段的长度每个段表项的长度是相同的(段号可以是隐含的,不占内存空间)

在这里插入图片描述

地址转换的实现

机器指令中的逻辑地址用二进制表示,CPU执行指令时需要将逻辑地址变换为物理地址

分段系统的地址变换过程如图所示,为了实现进程从逻辑地址到物理地址的变换功能, 在系统中设置了段表寄存器,用于存放 段表始址F段表长度M逻辑地址A物理地址E 之间的地址变换过程如下:

在这里插入图片描述

  1. 从 逻辑地址A 中取出前几位为 段号S ,后几位为 段内偏移量W

    注意,在地址变换的题目中,要注意逻辑地址是用二进制数还是用十进制数给出的

  2. 比较 段号S 和 段表长度M,若 S≥M,则产生越界中断,否则继续执行

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

    我们可以看出,段表项实际上只有两部分,前几位是段长,后几位是始址

  4. 取出段表项中该段的 起始地址b, 计算 E = b+W ,用得到的 物理地址E 去访问内存

分段管理 vs 分页管理

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

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

  • 页的大小固定且由系统决定

    段的长度不固定,决定于用户编写的程序

  • 分页的用户进程地址空间是一维的,程序员只需给出一个记忆符即可表示一个地址

    分段的用户进程地址空间是二维的,程序员在标识一个地址时,既要给出段名,也要给出段内地址

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

  • 分页(单级页表)访问一个逻辑地址需要两次访存:
    第一次访存 —— 查内存中的页表;第二次访存 —— 访问目标内存单元

    分段访问一个逻辑地址需要两次访存:
    第一次访存 —— 查内存中的段表;第二次访存 —— 访问目标内存单元

    与分页系统类似,分段系统中也可以引入快表机构,将近期访问过的段表项放到快表中,这样可以少一次访问,加快地址变换速度


计算机操作系统】 专栏的文章 均有参考 《王道计算机考研 操作系统》 课程视频

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值