段页式存储管理

段页式存储管理

分段式和分页式管理都有他们各自的优缺点:

优点 缺点
分段式 很方便按照逻辑模块实现信息的共享和保护 如果段长过大,分配空间不方便,其次,会产生外部碎片
分页式 内存利用率高,不会产生外部碎片,只有少量的页内碎片 不方便按照逻辑模块实现信息的共享和保护

分段式管理中,产生的外部碎片当然有其解决的方法---“紧凑”,但是这需要花费较大的时间代价

在段页式存储管理中,基本思想是:

  • 内存划分:按照分页式存储管理方案
  • 作业的管理:按照分段式存储管理进行分配

这种新的系统既具有分段系统的便于实现、分段可共享、易于保护、可动态链接等一系列优点,又能像分页系统那样,很好地解决内存的外部碎片问题

其大致的分格式图如下:

段页式图

  • 段页式管理中,段间离散,段内离散,和分段式的段间离散,段内连续不一样
    • 段号的位数决定了每个进程最多可以分几个段
    • 页号位数决定了每个段最大有多少个页
    • 页内偏移量决定了页面大小、内存块大小是多少

在段页式存储管理中,一个大的作业被分成许多小的段,然后每一段再进行分页,映射到内存中,如下面的格式:

作业按照逻辑模块分段,然后再进行分段

作业段页式映射内存

利用段表和页表实现地址映射:

映射图

如果想知道,其中的物理地址,该怎么办?

想想,我们在分段式管理中是怎么寻找的?通过段表,然后来寻得地址,然后页表中呢?通过页号和页内地址寻得,即如下:

地址变换图

在这个地址变换中,我们经历了三次的寻址

  • 第一次访问是访问内存中的段表
  • 第二次访问是访问内存中的页表
  • 第三次访问是访问真正的地址

主要过程:

  • 首先根据逻辑地址得到段号、页号、页内偏移量
  • 然后判断段号是否越界
  • 不越界,则查询段表,找到相对应的段表项
  • 检查是否越界
  • 不越界,则根据页表存放块号、页号查询页表,找到对应的页表项
  • 计算出实际地址,访问实际地址

为了提高执行速度,在地址变换机构中增设一个高速缓冲寄存器。每次访问它,都须同时利用段号和页号去检索高速缓存,若找到匹配项,便可从中得到相应页的物理块号,用来与页内地址一起形成物理地址;若未找到匹配表项,则仍需第三次访问内存。

在页式、段式存储管理中,为获得一条指令或数据,须两次访问内存;而段页式则须三次访问内存

back

posted @ 2020-04-02 14:30  野生的Lemon柠檬  阅读(1331)  评论(0编辑  收藏  举报

呱呱呱呱呱🐸