【操作系统】内存管理——基本分段存储管理(个人笔记)

学习日期:2024.6.23

内容摘要:基本分段存储管理介绍


在上一章节中,我们介绍了基本分页存储管理,而这一章节我们将介绍基本分段存储管理。

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

分段的基本概念

进程中的地址空间按照程序自身的逻辑关系划分为若干个段,每个段都有一个段名。

内存分配规则:以段为单位进行分配,每个段在内存中占据连续空间,但各段之间可以不相邻。因为是按逻辑功能模块划分,用户编程更加方便,程序的可读性更高。

分段系统的逻辑地址结构由段号和段内地址(段内偏移量)组成,段号的位数决定了每个进程可以分几个段,段内地址的位数决定了每个段的最大长度是多少。

段号就是“有多少个段”,段号的位数是x,就是有2^x个段,而段内地址就是一个段内有多少空间。

段表

和页表类似(详见基本分页存储管理),程序分多个段离散装入内存,为保证程序能正常运行, 就必须能从物理内存中找到各个逻辑段的存放位置,为此,需要为每个进程建立一个记录映射关系的表,称为段表。

每个段对应一个段表项。记录了该段在内存中的起始位置(又称“基址”)和段长。

各个段表项的长度相同。同页号一样,由于段表项长度相同,段号也可以是隐含的,不占存储空间

同样与页表类似,分段存储管理基于逻辑地址查询物理地址的流程

①系统根据逻辑地址得到段号和段内地址。

②段表寄存器判断段号是否越界,越界则产生越界中断。

③查询段表,找到对应的段表项。

④检查段内地址(段内偏移量)是否超过段长,若超过则产生越界中断(在页式存储中没有这一步,因为各个段的长度不同,一定要对段内的地址进行越界检查)

⑤根据段的基址+段内地址得到物理地址。

两种管理方式的对比

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

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

页的大小固定,由系统决定,而段的大小不固定,取决于用户编写的程序。

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

分段的用户进程地址空间是二维的,程序员需要给出段名和段内地址,才能标识一个地址。

分段比分页更容易实现对信息的共享和保护。只需让进程的段表项指向同一个段即可实现共享。

访问一个逻辑地址需要几次访存?

分页(单级页表):第一次访存——查内存中的页表 第二次访存——访问目标内单元

分段:第一次访存:查内存中的段表  第二次访存——访问目标内存单元

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


 内容总结自王道计算机考研《操作系统》 和 人民邮电出版社《操作系统导论》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值