导航

存储器管理——基本分段存储管理


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

分段:按照程序自身的逻辑关系划分为若干个段,每个段都有一个段名,每段从0开始编址

段名:在低级语言中,程序员使用段名来编程

分段的内存分配规则:以段为单位进行分配,每个段在内存中占据连续空间,但各段之间可以不相邻。

分段的好处:按逻辑功能模块划分,用户编程更方便,程序的可读性更高

编译程序会将段名转换为:段号

分段系统的逻辑地址结构组成:段号(段名)和段内地址(段内偏移量)

段号的位数决定了:每个进程最多可以分几个段

段内地址位数决定了:每个段的最大长度是多少

每个段对应:一个段表项,

段表组成:段号、段长、基址(该段在内存中的起始位置)

各个段表项的长度是相同的,因此段号可以:隐含,不占存储空间

基本分段存储管理地址转换:
1.根据逻辑地址得到段号、段内地址
2.判断段号是否越界。若越界越界中断,否则继续执行
3.查询段表,找到对应的段表项
4.检查段内地址是否超过段长。若超过越界中断,否则继续执行
5.计算得到物理地址
6.访问目标内存单元

判断段号是否越界的依据:逻辑地址的段号S与段表寄存器的段表长度M比较。段表长度至少是1,而段号从0开始。(段号S≥段表长度M就是越界)

查询段表需要:逻辑地址的段号S与段表寄存器的段表始址F

段表项的存放地址:段表始址F+段号S×段表项长度

分段访问一个逻辑地址需要几次访存:总共两次访存。第一次访存(查内存中的段表),第二次访存(访问目标内存单元)。

分段系统如何加快地址变换速度:引入快表机构,将近期访问过的段表项放到快表中

分段与分页的比较:
1.分页对用户不可见,分段对用户可见
2.分页的地址空间是一维的,分段的地址空间是二维的
3.分段更容易实现信息的共享和保护(纯代码/重入代码可以共享)
4.分页(单级页表)、分段访问一个逻辑地址都需要两次访存,分段存中也可以引入快表机构

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

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

页的大小固定且由系统决定。段的长度却不固定,决定于用户编写的程序。

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

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

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








posted on 2022-05-25 05:56  理想主义者的长征路  阅读(641)  评论(0编辑  收藏  举报