基本分段存储管理 - wolai 笔记

1.分段

  • 将地址空间按照程序自身的逻辑关系划分为若干个段,每段从0开始编址
  • 与“分页”最大的区别是:离散分配时所分配地址空间的基本单位不同
  • 每个段在内存中占据连续空间,但各段之间可以不相邻
  • 逻辑地址结构:(段号,段内地址)
    • 段号的位数决定了每个进程最多可以分几个段
    • 段内地址位数决定了每段的最大长度是多少

2.段表

  • 记录逻辑段到实际存储地址的映射关系
  • 每个段对应一个段表项,其中记录了该段在内存中的起始位置(又称“基址”)和段的长度
  • 各段表项长度相同,由段号(隐含)、段长、基址组成

3.地址变换

  1. 由逻辑地址得到段号、段内地址
  2. 段号与段表寄存器中的段长度比较,检查是否越界
  3. 由段表始址、段号找到对应段表项
  4. 根据段表中记录的段长,检查段内地址是否越界
  5. 由段表中的“基址 + 段内地址”得到最终的物理地址
  6. 访问目标单元
  • 1、从逻辑地址A中取出前几位为段号S,后几位为段内偏移量W,注意进制数,在段式存储管理的题目中一般是二进制,而页式管理的题目中,一般为十进制
  • 2、比较段号S和段表长度M,若S>=M,则产生越界中断,否则继续执行
  • 3、段表中段号S对应的段表项地址 = 段表始址F + 段号S * 段表项长度,取出该段表项的前几位得到段长C。若段内偏移量W >= C,则产生越界中断,否则继续执行。
  • 4、取出段表项中该段的始址b,计算E = b + W,得到物理地址。

4.分段 VS 分页

  • 页是信息的物理单位,目的是为了实现离散分配。是系统行为,对用户不可见
  • 段式信息的逻辑单位,目的是满足用户需求,对用户可见。
  • 页的大小固定且由系统决定。段的长度却不固定,决定于用户编写的程序。
  • 分页的地址空间是一维的,程序员只需要给出记忆符即可表示一个地址
  • 分段的地址空间是二维的,程序员在标识一个地址时,既要给出段名,也要给出段内地址
  • 分段更容易实现信息的共享和保护(纯代码/可重入代码可以共享)
  • 分页(单级页表)、分段访问一个逻辑地址都需要两次访问,分段存储中也可以引入快表机构

Comment
avatar
Dongnian
A salty fish swimming in the sea of deep learning!
Follow Me
Announcement
Welcome to My Personal Blog!
If Not, Please Visit Gitee Mirror.