【操作系统复习】内存分页 分段 段页式管理
创始人
2025-05-30 05:47:40
0次

分页管理是将进程逻辑空间进行划分,对物理内存也进行划分。进程划分称为页,内存划分称为页框、内存块。

页表

进程、内存进行划分之后,就需要有一个数据结构记录进程的哪一个页被放到了内存的哪一个页框去了。操作系统通过页表来进行记录。
页表根据页号按顺序进行存储。因为物理内存进行划分后,每一块大小固定,那么数额也就是固定的。所以块号的位数就是固定的。那么就可以利用数组的思维方式进行记录。
下标为0的存储0号页存放到哪一个物理块号。
所以页表大致基础的数据结构为一个线性表,下标为页号,内容为页框号的线性表。

如何实现地址转换

虽然分页进行了离散存放,但离散是对于页来说的,但是每一个页内的地址都是连续存放的。
所以一个逻辑地址可以理解为
逻辑地址=页号∗页大小+页内偏移量逻辑地址 = 页号*页大小 + 页内偏移量 逻辑地址=页号∗页大小+页内偏移量
那么将这个逻辑地址转为物理地址可以采取以下步骤

  1. 给出一个进程的逻辑地址,确定逻辑地址的页号。
  2. 查页表确定在内存的块号,就可以求出内存块的起始地址。
  3. 内存块起始地址加上偏移地址就是对应的物理地址。

页号=逻辑地址/页面长度页内地址=逻辑地址%页面长度页号 = 逻辑地址 / 页面长度\\ 页内地址 = 逻辑地址 \% 页面长度 页号=逻辑地址/页面长度页内地址=逻辑地址%页面长度
而如果页面大小为2的整数幂,那么就相当于高位为逻辑地址,低位为页内地址。那么就可以直接取前面几位就是页号,后面几位就是页内地址。
同时
物理块号=页框号∗页面长度+页内地址物理块号 = 页框号 * 页面长度 + 页内地址 物理块号=页框号∗页面长度+页内地址
所以如果页大小为2的整数次幂,可以让页表查询出的页框号直接代替高位,就可以得到物理地址。

快表

正常情况下,对于一个地址的访问需要访问两次内存。第一次去内存中查询页表,第二次取真正的数据/指令。
通过快表可以优化第一次访问内存。
快表是类似于cache的存储设备,存储速度在内存之上。
可以将近期访问的页表项放入快表之中,在进行逻辑页表到物理页框的转换时候,可以先访问页表。如果快表命中就不需要访问内存页表。只要访问一次内存,寻找真实的数据即可。
运用原理:时间局部性原理,空间局部性原理。

二级页表

  • 一级页表的问题
    如果进程较大的话,可能会占用多个页框,那么会导致页表过大。而进程在近期常常使用的区域可能只是一小部分。所以常驻内存的页表内大部分最近暂时用不到的。

所以可以进行一个二级划分。将页表进行等大拆分,常驻内存的为页目录表。页目录表存放二级页号存放的页框号。然后调二级页表进入内存,查询页框号,得到最终的物理地址。
那么驻留内存只需要为页目录表。
注意点:各级页表不应该超过一页。

分段管理

进程的地址空间按照程序自身逻辑关系划分为若干个段。每个段从0编址。每个段在内存中占据各个连续空间,段之间可以互不相连。
那么一个逻辑地址就可以表示为高位段号,低位段内地址。
而段号位数决定进程最多可以有几个段号,段内地址位数决定一个段最大的大小。

段表

与页表类似,进程分为一个一个段,也需要有数据结构对于每个段进行记录。
段表结构为段长与基址。基址表示这个段在内存当中的起始地址为多少。段长表示这个段有多长。因为每一个段的段长不固定。

逻辑地址的转换

PCB中会有段表的起始地址与段表长度,在进程调入CPU运行时候,会将这个值加载进CPU的段表寄存器。

  1. 根据段号与段表寄存器中的段表长度进行检查,如果越界,发生中断
  2. 根据段号到内存段表查询,比较段内地址与段表中保存的段长,如果越界也发生中断。
  3. 根据段表查找内存中这个段的起始地址,最终得到物理地址。

分页与分段

  • 页是物理单位,分页的目的是离散分配,提高内存利用率。分页完全只是为了系统的需要,对用户不可见。
  • 段是逻辑单位,分段是为了更好满足用户需求,分段用户是可见的。
  • 分页进程地址空间为一维,
  • 分段进程地址空间为二维
  • 分段比分页容易实现信息共享和保护。因为分页跟逻辑没有关系,可能会将多个逻辑块放在一个页面。而分段会将一个逻辑块为一个段。每个逻辑块都是独立的。

段页式管理

分段有利于用户逻辑维护,分页能够提高内存利用率。
如果单纯使用分段管理,与动态分区分配很类似,对内存空间的利用率并不好。
可以先对进程进行分段,然后对于一个段进行分页管理,就可以让进程即保持逻辑性,也能保证内存利用率较高。

段页式地址转换

段页式地址转换改变为先进行段号转换,再进行页转换。

  1. 先从逻辑地址中的段号与段寄存器里的段长进行比较,越界发生中断
  2. 然后根据段寄存器中的段表地址找到段表,这时候段表存储内容发生改变,每一个内容应该为页表项的长度,以及页表起始地址。
  3. 然后根据页号与该段进行比较,如果越界就发生中断。
  4. 进入内存查询页表,查询页框。
  5. 最后获得物理地址
    总共访问三次内存:第一次访问段表,第二次访问页表,第三次访问数据。

相关内容

热门资讯

总算了解开挂!众乐乐开挂AI攻... 总算了解开挂!众乐乐开挂AI攻略,众乐乐多功能都是存在有开挂攻略1、上手简单,内置详细流程视频教学,...
程序员教你辅助!英豪娱乐城辅助... 程序员教你辅助!英豪娱乐城辅助AI工具,英豪娱乐城多功能原来真的是有辅助工具暗藏猫腻,小编详细说明英...
盘点几款辅助!冰球突破辅助AI... 盘点几款辅助!冰球突破辅助AI插件,冰球突破多功能其实真的有辅助插件1、冰球突破脚本辅助下载、冰球突...
分享一款辅助器!建湖好运麻将辅... 分享一款辅助器!建湖好运麻将辅助器AI教程,建湖好运麻将多功能竟然真的是有辅助器教程1、在建湖好运麻...
每日必备透视挂!新老夫子透视挂... 每日必备透视挂!新老夫子透视挂AI技巧,新老夫子多功能原来真的有透视挂技巧1、新老夫子脚本辅助下载、...
分享认知作弊器!星际互联作弊器... 分享认知作弊器!星际互联作弊器AI方法,星际互联多功能都是存在有作弊器方法1、每一步都需要思考,不同...
玩家必备攻略作弊器!闲逸斗地主... 玩家必备攻略作弊器!闲逸斗地主作弊器AI方法,闲逸斗地主多功能果然是有作弊器方法1、闲逸斗地主透视辅...
分辨真假透视挂!宁波游戏大厅透... 分辨真假透视挂!宁波游戏大厅透视挂AI软件,宁波游戏大厅多功能一直是有透视挂软件1、让任何用户在无需...
每日必看教程透视挂!君悦来透视... 每日必看教程透视挂!君悦来透视挂AI工具,君悦来多功能本来是有透视挂工具1、上手简单,内置详细流程视...
发现一款外挂!半岛外挂AI工具... 发现一款外挂!半岛外挂AI工具,半岛多功能一贯真的有外挂工具1、起透看视 半岛辅助软件价格2、随意选...