段式虚拟存储器中的段是按程序的逻辑结构划分的。本文将来介绍一下什么是段式存储器管理,段式与页式存储器管理的区别又在哪,还有段页式存储器管理的工作原理。如果对页式存储管理方式不清楚的建议先弄懂页式存储管理方式(参考:深入理解操作系统之——分页式存储管理)
段式存储器管理
段的划分是具有逻辑意义的,例如:主程序段、数据段、堆栈段、子程序段等;
每个段都是从 0 开始的独立逻辑地址空间;
而且各个段的长度因程序而不同。
虚拟地址
段式存储器管理将虚拟地址分为两部分:段号和段内地址。与页式中虚拟地址不同的是,段内地址的位数不是固定的,段号与段内地址的划分不是简单地将一个二进制地址进行高低位的切割得到的。
段表
段表则包括了段长和段基址
地址变换过程
①进程访问某个逻辑地址时,先取得段号
②若段号大于段表长度,越界错误
③查段表得到段开始地址和段长度
④若段内地址大于段长度,越界错误
⑤通过段开始地址和段内地址得到物理地址
⑥根据物理地址读取数据
地址变换过程图解:
计算例子
通过具体例子来算算就很好理解了。
例:某系统采用分段式存储管理,在一个进程中,它的段表如下所示,求逻辑地址为(2,89)对应的物理地址(所有数据都是十进制)
解答:
根据逻辑地址(2,89)可以知道,段号为 2,段内地址为 89
根据段号 2 查段表可知,段号为 2 的段的段长为 380,段基址为 340
由段基址 340 和段内地址 89 相加可得实际的物理地址为 429
分页与分段的区别
页是信息的物理单位,满足系统空间管理需要。分页实现离散分配方式,以消减内存的外零头, 提高内存的利用率;
段是信息的逻辑单位,满足用户需要
页的大小固定,由系统决定;
段的长度不固定, 由用户决定
分页的作业地址空间是一维的(虚拟地址由一个数表示);
分段的作业地址空间则是二维的(虚拟地址有两个数(段号和段内地址)表示)
段页式
段页式存储器管理则是将段式与页式结合,优缺点互补。
段面向用户程序需要,段长度不固定;段需要连续分配空间,存在连续分配的缺点,例如易产生碎片;
结合段式和页式两者管理优点,既能节省内存空间,提高内存分配效率;又能兼顾用户程序需要。
实现机制
先将用户程序划分为多个有逻辑意义的段,再将段划分为多个页
段页式管理需要设置段表和页表
每个段都对应一张页表,因此段表存放了每张页表的开始地址和页表长度
段页式存储器管理方式地址结构
段页式存储器管理方式地址映射
段页式的地址变换过程
①进程访问某个逻辑地址时,先取得段号
②段号大于段表长度,越界错误
③查段表,得到页表开始地址
④在页表内,根据段内页号查物理块号
⑤页内地址直接对应块内地址
⑥通过物理块号和块内地址得到物理地址
⑦根据物理地址读取数据
地址变换过程图解:
编辑:hfy
-
存储器
+关注
关注
38文章
7448浏览量
163587 -
存储管理
+关注
关注
0文章
31浏览量
9167
发布评论请先 登录
相关推荐
评论