深入理解操作系统之——段页式存储器管理

内存管理 TOMORROW 5个月前 (07-18) 395次浏览 0个评论 扫描二维码

 

段式虚拟存储器中的段是按程序的逻辑结构划分的。本文将来介绍一下什么是段式存储器管理段式页式存储器管理的区别又在哪,还有段页式存储器管理的工作原理。如果对页式存储管理方式不清楚的建议先弄懂页式存储管理方式(参考:深入理解操作系统之——分页式存储管理

段式存储器管理

  • 段的划分是具有逻辑意义的,例如:主程序段、数据段、堆栈段、子程序段等;
  • 每个段都是从 0 开始的独立逻辑地址空间;
  • 而且各个段的长度因程序而不同。

 

虚拟地址

段式存储器管理将虚拟地址分为两部分:段号段内地址。与页式中虚拟地址不同的是,段内地址的位数不是固定的,段号与段内地址的划分不是简单地将一个二进制地址进行高低位的切割得到的。

深入理解操作系统之——段页式存储器管理

 

段表

段表则包括了段长和段基址

深入理解操作系统之——段页式存储器管理

 

地址变换过程

①进程访问某个逻辑地址时,先取得段号

②若段号大于段表长度,越界错误

③查段表得到段开始地址和段长度

④若段内地址大于段长度,越界错误

⑤通过段开始地址和段内地址得到物理地址

⑥根据物理地址读取数据

 

地址变换过程图解:

深入理解操作系统之——段页式存储器管理

计算例子

通过具体例子来算算就很好理解了。

例:某系统采用分段式存储管理,在一个进程中,它的段表如下所示,求逻辑地址为(2,89)对应的物理地址(所有数据都是十进制)深入理解操作系统之——段页式存储器管理解答:

  1. 根据逻辑地址(2,89)可以知道,段号为 2,段内地址为 89
  2. 根据段号 2 查段表可知,段号为 2 的段的段长为 380,段基址为 340
  3. 由段基址 340 和段内地址 89 相加可得实际的物理地址为 429

 

分页与分段的区别

  • 页是信息的物理单位,满足系统空间管理需要。分页实现离散分配方式,以消减内存的外零头, 提高内存的利用率;
    段是信息的逻辑单位,满足用户需要
  • 页的大小固定,由系统决定;
    段的长度不固定, 由用户决定
  • 分页的作业地址空间是一维的(虚拟地址由一个数表示);
    分段的作业地址空间则是二维的(虚拟地址有两个数(段号和段内地址)表示)

 

段页式

段页式存储器管理则是将段式与页式结合,优缺点互补。

  • 段面向用户程序需要,段长度不固定;段需要连续分配空间,存在连续分配的缺点,例如易产生碎片;
  • 结合段式和页式两者管理优点,既能节省内存空间,提高内存分配效率;又能兼顾用户程序需要。

 

实现机制

  • 先将用户程序划分为多个有逻辑意义的段,再将段划分为多个页
  • 段页式管理需要设置段表和页表
  • 每个段都对应一张页表,因此段表存放了每张页表的开始地址和页表长度

 

段页式存储器管理方式地址结构

深入理解操作系统之——段页式存储器管理

段页式存储器管理方式地址映射

深入理解操作系统之——段页式存储器管理

段页式的地址变换过程

①进程访问某个逻辑地址时,先取得段号

②段号大于段表长度,越界错误

③查段表,得到页表开始地址

④在页表内,根据段内页号查物理块号

⑤页内地址直接对应块内地址

⑥通过物理块号和块内地址得到物理地址

⑦根据物理地址读取数据

 

地址变换过程图解:

深入理解操作系统之——段页式存储器管理

 


TOMORROW 星辰 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:深入理解操作系统之——段页式存储器管理
喜欢 (1)
TOMORROW
关于作者:
TOMORROW星辰第一作者。如有疑问或者发现错误,请留言作者。
舒服的香菇发表我的评论  如需接收评论回复通知,请填写正确的 个人信息
取消评论
表情 加粗 斜体 签到