段页式管理方式(段表和页表结合,地址转换)

1.分页、分段管理方式

1.分页管理

  1. 优点:内存空间利用率高,不会产生外部碎片,只会有少量的页内碎片。
  2. 缺点:不方便按照逻辑模块实现信息的共享和保护。

2.分段管理

  1. 很方便按照逻辑模块实现信息的共享和保护。
  2. 如果段长过大,为其分配很大的连续空间会很不方便。另外,段式管理会产生外部碎片

分段管理中产生的外部碎片也可以用“紧凑”来解决,只是需要付出较大的时间代价。

2.分段+分页的结合:段页式管理方式

1.段页式管理的结合细节

  1. 将地址空间按照程序自身的逻辑关系划分为若干个段,在将各段分为大小相等的页面
  2. 将内存空间分为与页面大小相等的一个个内存块,系统以块为单位为进程分配内存

段页式管理方式(段表和页表结合,地址转换)_第1张图片

2.段页式管理的逻辑结构

段页式系统的逻辑地址结构由段号、页号、页内地址页内偏移量)组成。
在这里插入图片描述

  • 段号的位数决定了每个进程最多可以分几个段
  • 页号位数决定了每个段最大有多少页
  • 页内偏移量决定了页面大小、内存块大小是多少

段页式管理方式(段表和页表结合,地址转换)_第2张图片
“分段”对用户是可见的,程序员编程时需要显式地给出段号、段内地址。
而将各段“分页”对用户是不可见的。
系统会根据段内地址自动划分页号和页内偏移量。
因此段页式管理的地址结构是二维的

3.段表、页表

段页式管理方式(段表和页表结合,地址转换)_第3张图片
每个页面对应一个页表项,每个页表项由页号、页面存放的内存块号组成。
每个页表项长度相等,页号是隐含的。

4.如何实现地址变换

  1. 由逻辑地址得到段号、页号、页内偏移量
  2. 段号与段表寄存器中的段长度比较,检查是否越界
  3. 由段表始址、段号找到对应段表项
  4. 根据段表中记录的页表长度,检查页号是否越界
  5. 由段表中的页表地址、页号得到查询页表,找到相应页表项
  6. 由页面存放的内存块号、页内偏移量得到最终的物理地址
  7. 访问目标单元

段页式管理方式(段表和页表结合,地址转换)_第4张图片

5.访问一个逻辑地址所需访存次数

  • 第一次:查段表、第二次:查页表、第三次:访问目标单元
  • 可引入快表机构,以段号和页号为关键字查询快表,即可直接找到最终的目标页面存放位置。
  • 引入快表后仅需一次访存。

你可能感兴趣的:(操作系统,数据库,服务器,运维,linux)