虚拟内存、分段分页

什么是虚拟内存?

虚拟内存是一种内存管理技术,它让每个进程(运行中的程序)拥有自己的独立地址空间。虚拟内存的主要目的是通过在物理内存和硬盘之间进行数据交换,提供一个比实际物理内存更大的可用内存空间。

虚拟内存的实现方式
  1. 虚拟地址空间:每个进程认为它有一大块连续的内存可用,这叫做虚拟地址空间。操作系统会将这些虚拟地址映射到实际的物理内存地址。
  2. 地址转换:这种映射由硬件组件(如MMU,内存管理单元)和操作系统共同管理。MMU将虚拟地址转换为物理地址。
  3. 页面调度:操作系统会将不常用的内存页面(固定大小的数据块)暂时存储到硬盘上(称为换出或分页出),而将需要用到的页面从硬盘加载到物理内存中(称为换入或分页入)。

为什么需要虚拟内存?

  1. 扩展内存容量

    • 虚拟内存允许程序使用比实际物理内存更大的地址空间。比如一个拥有4GB物理内存的计算机,可以支持程序使用数十GB的虚拟内存。
  2. 进程隔离

    • 每个进程都有独立的虚拟地址空间,这样一个进程的错误(比如访问非法地址)不会影响到其他进程,提高系统的稳定性和安全性。
  3. 内存保护

    • 操作系统可以设置不同内存区域的访问权限(读、写、执行),防止恶意或错误的访问。例如,代码段可以设置为只读,数据段可以设置为读写。
  4. 简化编程

    • 程序员不必关心实际的物理内存布局,只需关注程序的逻辑地址。操作系统负责将虚拟地址映射到物理地址,简化了内存管理的复杂性。

什么是内存分段和分页?

虚拟内存的实现依赖于内存分段和分页这两种技术。

内存分段(Segmentation)

内存分段是一种逻辑上的内存管理方式,将内存分成若干个段,每个段对应不同类型的数据,如代码段、数据段和堆栈段。

分段的技术细节
  • 段描述符:每个段有一个段描述符,包含段基址(Base Address)和段限制(Limit)。
  • 段表:操作系统维护一张段表(Segment Table),其中记录了所有段的段描述符。
  • 段选择子:CPU中的寄存器保存段选择子,用于选择当前使用的段。
  • 段保护:每个段可以有不同的权限和属性,如只读、可读写、可执行等。
分段的优点
  • 逻辑结构清晰:将程序的不同部分分割成独立的段,方便管理。
  • 灵活性:段的大小可以动态调整,适应不同的需求。
  • 安全性:通过段描述符中的权限设置,防止非法访问。
内存分页(Paging)

内存分页是将虚拟内存和物理内存都划分为固定大小的块,虚拟内存的块称为页(Page),物理内存的块称为页框(Page Frame)。

分页的技术细节
  • 页表:每个进程有一个页表(Page Table),记录虚拟页面到物理页框的映射关系。
  • 页号和偏移量:虚拟地址由页号(Page Number)和页内偏移量(Offset)组成,页号用于索引页表,找到对应的页框。
  • TLB(Translation Lookaside Buffer):一种高速缓存,用于加速虚拟地址到物理地址的转换。
分页的优点
  • 内存利用率高:由于页的大小固定,减少了内存碎片,提高了内存利用率。
  • 简化管理:操作系统通过页表管理内存映射,自动处理内存分配和回收。
  • 支持虚拟内存:可以方便地将不常用的页换出到硬盘,需要时再换入到物理内存。

虚拟内存的工作流程

  1. 进程请求内存:当一个进程需要访问内存时,它会生成一个虚拟地址。
  2. 地址转换:MMU使用页表将虚拟地址转换为物理地址。如果所需的页在内存中,直接返回物理地址;如果不在,则发生缺页中断。
  3. 处理缺页:操作系统暂停进程,找到所需的页并将其从硬盘换入到物理内存。可能需要将一些不常用的页换出到硬盘。
  4. 更新页表:更新页表中的映射关系,恢复进程继续执行。
  • 16
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Warren++

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值