页式存储器、段式存储器、段页式存储器

页式存储管理

是一种虚拟存储技术,它将逻辑地址空间划分成固定大小的块,称为页(page),并将物理地址空间划分成同样大小的块,称为页框(page frame)物理块(physical block)。 页式存储管理的核心思想是:不在内存中一次性装入整个程序,而是根据程序的需要,按页加载到内存中。

1. 基本概念:

  • 逻辑地址 (Logical Address): 程序员看到的地址,也称虚拟地址。它由页号和页内偏移量组成。

    • 页号 (Page Number): 指示程序的哪一页。
    • 页内偏移量 (Page Offset): 指示该页内的具体位置。
  • 物理地址 (Physical Address): 内存中实际的地址,也称实地址。它由页框号和页内偏移量组成。

    • 页框号 (Page Frame Number): 指示该页装入的页框。
    • 页内偏移量 (Page Offset): 与逻辑地址的页内偏移量相同。
  • 页表 (Page Table): 一个数据结构,用于将逻辑地址映射到物理地址。每个页表项(Page Table Entry, PTE)对应一个页,包含该页的物理地址(或其他状态信息,例如访问权限、存在位等)。

  • 页表基址寄存器 (Page Table Base Register, PTBR): 指向页表的起始地址的寄存器。操作系统使用它来找到页表。

  • 页大小 (Page Size): 页和页框的大小,通常是2的幂次方(例如,4KB, 8KB, 16KB, 4MB等)。页大小的选择会影响内存利用率和地址转换的开销。

2. 地址转换过程:

当CPU访问一个逻辑地址时,页式存储管理系统会执行以下步骤:

  1. 获取逻辑地址: CPU发出内存访问指令,包含逻辑地址。
  2. 计算页号和页内偏移量: 根据页大小,将逻辑地址分解成页号和页内偏移量。例如,页大小为4KB (212 bytes),逻辑地址为0x12345,则页号为0x123 (0x12345 >> 12),页内偏移量为0x45 (0x12345 & 0xFFF)。
  3. 查找页表: 使用页号作为页表的索引,找到对应的页表项。
  4. 检查页表项: 页表项包含页的状态信息,例如:
    • 存在位 (Present bit): 指示该页是否在内存中。如果存在位为0,则发生缺页中断。
    • 访问位 (Accessed bit): 指示该页是否被访问过。用于页替换算法。
    • 修改位 (Modified bit/Dirty bit): 指示该页是否被修改过。用于页替换算法,决定是否需要写回磁盘。
    • 保护位 (Protection bits): 指示该页的访问权限(读、写、执行)。
  5. 获取物理地址: 如果存在位为1,则页表项中包含该页对应的页框号。将页框号和页内偏移量组合成物理地址。
  6. 访问内存: 使用物理地址访问内存。

3. 缺页中断 (Page Fault):

如果访问一个不在内存中的页(存在位为0),则会发生缺页中断。操作系统会处理这个中断,将所需的页从磁盘加载到内存中的一个空闲页框中,更新页表,然后重新执行导致缺页中断的指令。

4. 页表结构的改进:

为了提高地址转换效率,页式存储管理系统采用了一些改进的页表结构,例如:

  • 多级页表: 将页表本身也分页,减少页表占用空间。
  • 反向页表 (Inverted Page Table): 根据物理地址查找逻辑地址,避免了每次访问都需要遍历页表。
  • TLB (Translation Lookaside Buffer): 高速缓存,存储最近访问的页表项,减少地址转换时间。

5. 页式存储管理的优缺点:

优点:

  • 内存共享: 多个进程可以共享相同的页,节省内存空间。
  • 内存保护: 每个进程都有自己的页表,可以有效隔离进程,防止进程互相干扰。
  • 虚拟内存: 可以访问比物理内存更大的地址空间。

缺点:

  • 内存碎片: 内存中可能存在一些小的空闲页框,无法被利用。
  • 页表开销: 页表占用一定的内存空间。
  • 缺页中断开销: 缺页中断会带来一定的性能开销。

段式存储管理

是一种虚拟存储技术,它将逻辑地址空间划分成若干个大小可变的段(Segment),每个段对应一个逻辑程序模块或数据结构。物理地址空间也相应地划分成若干个大小可变的块,称为段框(Segment Frame)。与页式存储管理不同的是,段式存储管理的逻辑单元大小不固定,更符合程序的逻辑结构。

1. 基本概念:

  • 段 (Segment): 逻辑地址空间中的一个逻辑单元,大小可变,通常对应一个程序模块(如代码段、数据段、堆栈段)或数据结构。每个段有自己的名称或编号。

  • 段框 (Segment Frame): 物理地址空间中的一个区域,用于存放一个段。大小可变,可以根据需要分配。

  • 段表 (Segment Table): 一个数据结构,用于将段的逻辑地址映射到物理地址。每个段表项 (Segment Table Entry, STE) 对应一个段,包含该段的起始物理地址和长度等信息。

  • 段表基址寄存器 (Segment Table Base Register, STBR): 指向段表起始地址的寄存器。

  • 段选择符 (Segment Selector): 一个索引值,用于选择段表中的一个段表项。 它通常包含段表索引和一些访问权限信息。

2. 地址转换过程:

当CPU访问一个逻辑地址时,段式存储管理系统会执行以下步骤:

  1. 获取逻辑地址: 逻辑地址由段选择符和段内偏移量组成。

  2. 查找段表: 使用段选择符作为索引,查找段表,找到对应的段表项。

  3. 检查段表项: 段表项包含:

    • 基址 (Base Address): 该段在物理内存中的起始地址。
    • 界限 (Limit): 该段的长度。
    • 访问权限 (Access Rights): 该段的访问权限(读、写、执行)。
  4. 边界检查: 检查段内偏移量是否超过段的界限 (Limit)。如果超过,则发生越界错误。

  5. 计算物理地址: 将段的基址和段内偏移量相加,得到物理地址。

  6. 访问内存: 使用物理地址访问内存。

3. 段式存储管理的优缺点:

优点:

  • 逻辑模块化: 段式存储管理符合程序的逻辑结构,便于程序的模块化设计和管理。
  • 易于共享: 不同程序可以共享相同的段,提高内存利用率。
  • 内存保护: 通过段表项中的访问权限和界限,可以有效保护内存空间,防止程序越界访问。

缺点:

  • 外部碎片: 由于段的大小可变,可能会产生大量的外部碎片,降低内存利用率。
  • 地址转换开销: 地址转换需要查段表,开销相对较大。
  • 共享困难: 共享段需要进行更复杂的管理,可能会增加系统复杂度。

4. 与页式存储管理的比较:

特性段式存储管理页式存储管理
段大小可变固定
地址结构段选择符 + 段内偏移量页号 + 页内偏移量
内存碎片外部碎片内部碎片
逻辑组织符合程序逻辑结构与程序逻辑结构无关
地址转换开销相对较大相对较小 (尤其配合TLB)
内存利用率可能较低 (因外部碎片)可能较高 (但取决于页大小和页替换算法)
实现复杂度相对较高相对较低

段页式存储管理

是将段式和页式存储管理机制结合起来的一种虚拟存储技术。它继承了段式管理的逻辑模块化和页式管理的高效地址转换的优点,并试图克服各自的缺点。

1. 基本概念:

  • 段 (Segment): 逻辑地址空间被划分成若干大小不等的段,每个段对应一个逻辑程序模块或数据结构。

  • 页 (Page): 每个段又被进一步划分成大小相等的页。 页的大小是固定的,由系统决定。

  • 页框 (Page Frame): 物理内存被划分成大小相等的页框,每个页框的大小与页的大小相同。

  • 段表 (Segment Table): 每个进程都有一个段表,其中每个表项对应一个段,包含该段的基址、界限以及页表基址等信息。

  • 页表 (Page Table): 每个段都有一个页表,其中每个表项对应该段的一个页,包含该页在物理内存中对应的页框号以及访问权限等信息。

  • 段描述符 (Segment Descriptor): 包含段的基地址、界限、类型和访问权限等信息。通常在段表中。

  • 页表项 (Page Table Entry, PTE): 包含页的物理地址(页框号)、访问位、修改位和保护位等信息。

2. 地址转换过程:

一个逻辑地址由三部分组成:段号 (Segment Number, SN)、页号 (Page Number, PN) 和页内偏移量 (Page Offset, PO)。地址转换过程如下:

  1. 查找段表: 根据段号,在段表中查找对应的段描述符。

  2. 检查段描述符: 检查段描述符的访问权限和界限,确定该段是否可以访问,以及访问的地址是否越界。

  3. 获取页表基址: 从段描述符中获取该段的页表基址。

  4. 查找页表: 使用页号作为索引,在页表中查找对应的页表项。

  5. 检查页表项: 检查页表项的状态,包括存在位(Present bit)、访问位、修改位和保护位等。如果存在位为0,则发生缺页中断。

  6. 获取物理地址: 如果存在位为1,则从页表项中获取该页对应的页框号。将页框号和页内偏移量组合起来,得到物理地址。

  7. 访问内存: 使用计算出的物理地址访问内存。

3. 缺页中断:

如果在步骤5中发现存在位为0,则表示该页不在内存中,发生缺页中断。操作系统需要将该页从辅助存储器(如硬盘)加载到内存中的一个空闲页框,并更新页表,然后重新执行导致缺页中断的指令。

4. 优缺点:

优点:

  • 模块化: 保留了段式管理的模块化优势,便于程序的组织和管理。
  • 高效地址转换: 通过分页机制提高了地址转换效率,减少了外部碎片。
  • 灵活的内存分配: 可以根据程序的实际需求分配内存空间。
  • 内存保护: 提供了多层次的内存保护机制。

缺点:

  • 复杂性: 系统结构比单纯的段式或页式管理更加复杂。
  • 开销: 地址转换过程需要多次查找表,增加了系统开销。 但相比单纯的段式,地址转换效率得到了提升。
  • 内部碎片: 由于页的大小是固定的,可能存在内部碎片。

5. 与段式和页式存储管理的比较:

段页式存储管理结合了段式和页式存储管理的优点,并试图减轻它们的缺点。它比纯粹的段式存储管理效率更高,因为它避免了大量的外部碎片;同时它也比纯粹的页式存储管理更符合程序的逻辑结构。 然而,其实现复杂度也相对较高。

总而言之,段页式存储管理是一种比较复杂的虚拟存储技术,但它在平衡程序逻辑组织、内存利用率和地址转换效率方面取得了较好的折中,在许多操作系统中被采用。 然而,现代操作系统中,页式虚拟内存管理仍然占据主导地位,因为它在效率和实现复杂度上更具优势。 段式管理的概念更多体现在程序的组织和模块化方面,而不是直接的内存管理机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值