os::虚拟内存

概念

虚拟内存是程序,或者多个程序执行,内存没有这么大,但是却能执行,就是用到虚拟技术

每个程序都有自己的空间,将空间分成多块每一块称为一页或者一个页面,然后通过分页技术映射到内存,当然不是所有的映射,只是某一块要执行,就做映射

分页

如果程序大小的是64k能在32k的计算机运行,那么必须有一个大小至少为64k的磁盘装入程序,

实现过程

当程序尝试访问某个地址,将虚拟地址映射到MMU,MMU检查到对应页面,参看到相应的映射,然后将对应的页面和页框映射,再由内存地址送到总线上去,

MMU比内存地址大如上图,所以不可能全部都能再内存中映射,怎么办?虚拟内存中有各记录当前也是不是再内存中能映射,访问页不在内存中映射是,于是使CPU陷入到操作系统,这个陷阱称为缺页中断(page fault),然后由操作系统访问找到很少使用的页框,将其内容更新到磁盘,然后将需要访问的页面中读到页框中,当然也对MMU两个页面的在或者不在做出改变

  • MMU内部即映射
    输出16位虚拟地址,4位的页号,和12位的位偏移量,用页号作为页表的索引,能找到对应的页表索引

页表

-页表结构

用虚拟页号作为页表的索引,将页表中得到的页框号也字节偏移量结合送往物理内存(中间有个寄存器)

  • 保护位:
    是指的是一个页允许的什么数据类型,现在常用的是3各读写执行,

  • 保护页面情况(保护位和修改位)

    • 保护位:
      在写入一页时由操作系统自动设置修改,主要是防止‘脏数据’当重新分配页框时,如果页面被修改过就要放到磁盘,如果没修改就丢弃
  • 高速缓存位
    居然能够映射到设备寄存器,而不是物理内存,大概就是在I/O中读写数据时,希望是I/O操作防止是高速缓存的副本

处理大内存的页表

多级页表

多级页表的原因是避免把全部页表一直保存在内存中

posted @ 2022-11-15 11:43  壹剑霜寒十四州  阅读(20)  评论(0编辑  收藏  举报