0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

虚拟存储器的工作原理 应用程序如何使用和管理虚拟存储器

西西 来源: Chinaunix 作者:windhawkgyang 2020-10-07 17:46 次阅读

进程是系统中运行的程序的一个实例,比如我们可以同时运行多个QQ程序,同时用Office打开多个文档等等,而系统展现给我们的多进程界面其实是多个进程交替共享CPU和主存资源。但是,共享会带来直接的问题,比如:如果有很多进程同时运行所要求的存储容量可能会超过我们的物理存储器,导致其中某些运行错误;或者进程修改了其他进程的存储器,也会导致直接的运行错误。所以,为了更好地管理存储器,现代系统引入了虚拟存储器,以作为实际主存的上一层抽象,使得所有进程所占用的存储空间获得了一致的形式。这个方面主要有两个主题:1.理解虚拟存储器是如何工作的;2.应用程序如何使用和管理虚拟存储器。今天我们先来理解一下虚拟存储器的工作原理

*******

物理和虚拟寻址

物理寻址——计算机系统的主存被组织成一个由M个连续字节组成的数组,可以记为0,1,2,3.。.M-1,每一个都有确定的物理地址(Physical Address,PA),早期的CPU直接发送物理地址给主存获取数据和指令。

虚拟寻址——现代系统CPU中集成了地址翻译硬件(MMU),可以将CPU识别的虚拟地址(VA)翻译为主存对应的PA。

#引入虚拟存储的一个好处就是,我们可以建立一个{VA}---》{PA}的映射,使得虚拟存储地址空间可以大于实际的地址空间#

******

虚拟存储器主要应用——缓存工具

如同我们在CPU和主存间加入高速缓存一样,系统也在主存和硬盘间加入虚拟存储来减少数据传递的时间。Windows下的虚拟内存就是一种虚拟存储器。

&页——虚拟存储器(VM)与物理存储器(PM)间数据交换的单位,虚拟页存储在磁盘上,物理页缓存在DRAM(主存)中

&页表——在物理存储器中存储着页表(数据结构),这张页表上记录着虚拟页到物理页的映射,每条记录称之为页表条目(Page Table Entry),基本格式为:有效位(1bit)+物理页号或磁盘地址

系统运行时,CPU发送一个虚拟地址请求,在虚拟存储器中的虚拟页表上查找PTE,此时:

若匹配且有效位为“1”,则说明该数据已经缓存在主存中,直接读取之后的物理页号获得数据;

若匹配但有效位为“0”,说明数据在VM上但没有存到PM上,这时需要替换掉PM上的一个页,来获得所要求的页;

实际中,所有现代系统都采用按需进行页面调度的方式,即有请求才替换页。

******

虚拟存储器主要应用——存储管理

直接的结果是,由于VM空间一般要大于PM空间,所以会出现共享PM空间地址的情况。比如进程需要使用相同的内核代码,调用相同的系统函数,C标准库中的函数。此时就可以多个进程共享一部分地址空间。节省了多进程的存储空间要求。

******

虚拟存储器的主要应用——存储器保护

系统中有太多的数据不允许用户随便访问和更改,比如进程的只读文本段,比如内核中的代码和数据,又比如其他进程的私有存储器。所以现代系统不约而同地为OS提供手段来控制存储器系统的访问。现实中可以在页表中加入更多的有效位来控制对特殊页面的读写操作,比如:

SUP位:是否只有超级用户才有权限读写

READ:是否有读权限

WRITE:是否有写权限

******

地址翻译

CPU向存储器发送的是虚拟地址,这允许CPU直接面对的是抽象的一致的存储器对象。但是这就需要MMU进行地址翻译的工作。MMU会利用页表基址寄存器来确定虚拟地址在虚拟页表中的PTE,而后进行PA的转换。主要步骤如下:

1.CPU生成一个虚拟地址发送给MMU

2.MMU生成PTE地址,并从高速缓存/主存请求得到它

3.高速缓存/主存向MMU返回PTE(记录)

4.判断:

若PTE有效位为真,则MMU读取PTE中的物理地址,并发送给高速缓存/主存

5.高速缓存/主存返回所请求的数据给CPU

若判断PTE有效位为假或失效,

6.MMU触发一次异常,控制转交给CPU异常控制处理程序

7.缺页处理程序确定出PM中的牺牲页,如果该页已经被修改,则写回磁盘

8.将缺页处理程序调入新的页面,并更新存储器中的PTE

9.缺页处理程序返回---》4

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10412

    浏览量

    206467
  • 计算机系统
    +关注

    关注

    0

    文章

    211

    浏览量

    23873
  • 虚拟存储器
    +关注

    关注

    0

    文章

    11

    浏览量

    8764
  • 存储管理
    +关注

    关注

    0

    文章

    30

    浏览量

    9132
  • 进程
    +关注

    关注

    0

    文章

    193

    浏览量

    13874
收藏 人收藏

    评论

    相关推荐

    求助 数据存储器 FLASH程序存储器 FLASH数据存储器的区别

    数据存储器 FLASH程序存储器 FLASH数据存储器 片内RAM数据存储器16M字节外部数据存储器
    发表于 11-29 09:50

    ARM的存储器映射与存储器重映射

    [table][tr][td=670][table][tr][td]arm处理本身所产生的地址为虚拟地址,每一个arm芯片内都有存储器,而这个芯片内的存储器的地址为物理地址。我们写
    发表于 03-24 11:57

    虚拟存储器组成部分

    Linux将虚拟存储器高端的1/4留给内核,剩下3/4全留给用户进程。虚拟存储器上中的程序主要由以下几个重要组成部分:
    发表于 08-07 07:00

    存储器工作原理

    单片机内部结构分析存储器工作原理
    发表于 02-04 07:46

    存储器工作原理

    单片机内部结构分析存储器工作原理
    发表于 02-04 07:51

    基于虚拟存储器的USB下载线该如何去设计?

    本文介绍一种基于虚拟存储器的USB下载线设计。
    发表于 05-27 06:07

    虚拟存储体系由哪几级存储器构成

    1. CPU是在(1)结束时响应DMA请求的。A. —条指令执行B. —段程序C. 一个时钟周期D. —个总线周期2. 虚拟存储体系由(2)两级存储器构成。A. 主存-辅存B. 寄存
    发表于 12-22 06:40

    虚拟存储器具有哪些功能和特征呢

    虚拟存储器具有哪些功能呢?虚拟存储器的特征有哪些呢?
    发表于 12-23 09:04

    聊聊存储器的相关知识

    虚拟地址物理地址等众多地址及MMU相关知识先聊聊存储器STM32单片机存储器关于编译生成的文件数据在存储器上的
    发表于 02-11 07:51

    虚拟存储器部件原理解析

    虚拟存储器部件原理解析
    发表于 04-15 14:25 2924次阅读

    存储器虚拟化的不同形式解析

    上,都可以找到存储器虚拟化技术的身影。另外,存储器虚拟化也可以在应用程序服务器或操作系统、基于网络的应用
    发表于 07-20 09:47 811次阅读

    一文知道虚拟存储器的特征

    虚拟存储器(Virtual Memory)是用户能作为可编址内存对待的虚拟存储空间,它使用户逻辑存储器与物理
    的头像 发表于 11-15 10:09 4025次阅读

    什么是虚拟存储器虚拟存储器的特征

    虚拟存储器存储管理中一个特别重要的概念,你要认真掌握虚存的定义和特征。此外,你还要知道为何要引入虚存、实现虚存技术的物质基础、虚存容量受到哪两方面的限制。
    发表于 11-25 16:37 1.5w次阅读

    存储器工作原理及如何选择存储器品牌

    存储器是用来存储程序和各种数据信息的记忆部件,更通俗地说,存储器就是用来存放数据的地方。存储器可分为主
    的头像 发表于 10-11 16:58 2742次阅读

    虚拟存储器简述

    虚拟存储器(Virtual Memory)的基本思想是对于程序来说,它的程序(code)、数据(data)、堆栈(stack)的总大小可以超过实际物理内存(Physical Memor
    发表于 06-29 14:10 1434次阅读
    <b class='flag-5'>虚拟</b><b class='flag-5'>存储器</b>简述