段、页、页框、页表、页表项

本文深入解析了分页式虚拟内存和段页式虚拟内存的工作原理。介绍了页、页框、页表、页表项的概念,以及它们在分页式虚拟内存中的作用。进一步探讨了段页式虚拟内存,包括段、段表、段表项、页、页框、页表、页表项等关键组件,并解释了它们如何共同工作以实现高效内存管理。

分页式虚拟内存:

页、页框、页表、页表项

:进程中的块(进程被分成许多大小相同的块)
页号
页框:内存中的块(内存被分成许多大小相同的块)
页框号
页的大小=页框大小(进程中的块和内存中的块大小相同)
页放入页框中的(进程的某一块放入内存中的某一个块中)(简单理解:进程放入内存中)
页表:进程中的每一页所对应的页框的位置(进程中的每一块对应在内存中的位置)
(一个进程对应一个页表)
(见下图对页表有更深的理解)
页表项:
逻辑地址(页号,偏移量) (逻辑地址就是虚拟地址)
物理地址(页框号,偏移量)
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述1KB=1024=2^10 所以页内偏移量是10位
页号16-10=6位 页的数量2^6=64页

在这里插入图片描述
页内偏移量位数:32-18=14位 页的大小:2^14
在这里插入图片描述
即 物理地址 = 页框号 * 页(框)的大小 + 偏移量
在这里插入图片描述

在这里插入图片描述

段页式虚拟内存(分段+分页):

段、段表、段表项、页、页框、页表、页表项

段:进程被分成大小不同的段(一个进程对应一个段表,每个段对应一个页表)
段表:每个段对应一个页表(一个段对应一个页表)(不同于分页中的 一个进程对应一个页表)
段表项包括:基地址(内存中的起始地址)、段的长度
页:段中的块被分成许多大小相同的块)
页号:
页框:内存中的块(内存被分成许多大小相同的块)
页框号:
页的大小=页框大小(中的块和内存中的块大小相同)
页放入页框中的(的某一块放入内存中的某一个块中)(简单理解:段放入内存中)
页表:中的每一页所对应的页框的位置(中的每一块对应在内存中的位置)
(每个对应一个页表)
页表项:
在这里插入图片描述

### 表与页表的区别及应用场景 页表操作系统中用于内存管理的两种不同数据结构,它们分别服务于分存储管理存储管理。以下是它们的主要区别及应用场景: #### 1. 数据结构的设计理念 - **表**:表主要用于分存储管理,它记录了每个的基地址长度。表中的每一对应一个,描述了该在物理内存中的起始位置大小[^2]。 - **页表**:页表用于分存储管理,它将进程的逻辑地址空间划分为固定大小的,并将这些映射到物理内存中的页表中的每一对应一个,描述了逻辑与物理之间的映射关系[^1]。 #### 2. 地址转换机制 - **表**:在分系统中,逻辑地址由内偏移量组成。通过表可以找到对应的基地址,然后加上内偏移量得到物理地址。 - **页表**:在分系统中,逻辑地址由内偏移量组成。通过页表可以找到对应的物理号,然后结合内偏移量计算出物理地址[^1]。 #### 3. 内存碎片问题 - **表**:分系统容易产生外部碎片,因为的大小不固定,导致内存中可能存在许多小的空闲块,无法被利用。 - **页表**:分系统由于的大小固定,能够有效避免外部碎片问题,但可能会引入内部碎片,即最后一未被完全利用的部分。 #### 4. 应用场景 - **表**:分存储管理更适合需要灵活组织内存的应用场景,例如程序代码、数据、堆栈等可以被划分为不同的。这种机制便于实现信息保护共享。 - **页表**:分存储管理适用于需要高效利用内存资源的场景,特别是在多任务环境下,能够提供更好的内存利用率地址转换效率。 #### 5. 性能与复杂性 - **表**:分系统的地址转换相对简单,但由于外部碎片的存在,可能需要更复杂的内存分配算法[^2]。 - **页表**:分系统的地址转换可能涉及多级页表查找,增加了复杂性,但通过缓存机制(如 TLB)可以显著提高性能[^1]。 ```python # 示例代码:模拟简单的页表表 class SegmentTable: def __init__(self): self.segments = {} # 号 -> (基地址, 长度) def add_segment(self, segment_id, base, length): self.segments[segment_id] = (base, length) class PageTable: def __init__(self): self.pages = {} # 号 -> 物理号 def add_mapping(self, page_id, frame_id): self.pages[page_id] = frame_id ``` ###
评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值