【操作系统】虚拟内存串讲

文章目录

    • 概述
    • 虚拟页管理
      • 请求页表
      • 物理地址的获取
      • 虚拟页大小与内存块大小的探讨

概述

  • 操作系统为每一个进程分配一个独立的虚拟内存空间,以分页系统为例,每个进程的虚拟页号都是从 0 开始的
    【操作系统】虚拟内存串讲_第1张图片
  • 不同的进程可以使用相同的虚拟页号,并且不会互相影响,这在物理内存上是不允许的
  • 一般情况下,虚拟页大小和内存块大小相等,并且虚拟页号比物理页号多得多
  • 而物理页号是由内存容量、内存块大小决定的,虚拟内存空间并不是真的从物理上扩充了内存,而是借用了外存和分页请求系统,从逻辑上扩充了内存
  • 虚拟内存是基于局部性原理的,简单来说就是一个进程可能需要 10GB 的内存,而内存只有 4GB,无法支持进程运行,但是在某个时间段内,可能进程只需要 1GB,因此可以让这个进程直接运行,需要用到的页调入内存,当内存空间不够时,再将某些页面调入外存
  • 在这种管理方式下,进程就好像运行在一个有 10GB 内存的计算机上,这就是“虚拟”

虚拟页管理

请求页表

  • 虚拟页和物理页不是一一对应的,例如虚拟页号 0 对应的内存块号可能是 666
  • 因此需要有虚拟地址到物理地址的转换机制,通过请求页表实现
    请求页表结构
    • 页号:虚拟页号
    • 物理块号:内存的块号
    • 状态位:虚拟页是否在内存中,只有状态位有效,物理块号字段才有效
    • 访问字段:记录虚拟页号在一段时间内的访问次数
    • 修改位:虚拟页在调入内存后,是否有被修改
    • 外存地址:虚拟页的磁盘(外存)块号

物理地址的获取

  • 当进程需要访问虚拟地址 A 时,操作系统将 A 中的页号(Virtual Page,VP)、页内偏移量(offset)提取出来
  • 查询求页表,找到页号 = VP 的表项
    • 若 VP 对应的 P 有效,那么通过(物理块号+offset)得到物理地址
    • 若 VP 对应的 P 无效,则需要通过外存地址字段,将虚拟页调入内存

虚拟页大小与内存块大小的探讨

  • 一般情况下,虚拟页大小和主存块大小是相等的,这样虚拟页的页内偏移量,就是主存块的块内偏移量
  • 但这并不是强制规定的,两者大小可以不同(24王道考研408计算机组成原理习题 4.3(大题3,2019)
  • 假设虚拟页内偏移量 k 位,虚拟页的页内偏移量和物理地址的低 k 位完全相同
  • 虚拟页大小和主存块大小不相等的情况
    【操作系统】虚拟内存串讲_第2张图片
    • 虚拟地址和物理地址都按字节编址,MAR 有 32 位
    • 可以看出,虚拟页的页内偏移量 12 位,而主存块内地址 6 位,显然虚拟页大小 > 主存块大小
    • 那么虚拟地址页号的高 20 位,只能映射内存块号的高 20 位,内存块号剩下的 6 位需要借助虚拟地址中页内偏移量的高 6 位

你可能感兴趣的:(计算机组成原理,计算机组成原理)