计算机在执行程序时。需将代码载入入内存中。CPU读取内存中的代码并执行。

早期的计算机在没有引入 虚拟存储器之前,需将整个待执行的程序载入到内存中,由于内存空间有限,当待载入的程序过大时就会出现故障(多进程。则须要占用很多其它的内存空间)。

现代计算机引入虚拟存储器的概念,通过将对内存进行抽象。将其作为存储在硬盘上数据的快速缓存,仅仅将当前进程部分代码缓存到主存中(当前进程的程序较少时。能够所有缓存在主存中),从而提高了主存的利用率,使其同一时候能够容纳很多其它的进程同一时候执行。

简述
虚拟存储器是一个抽象概念,它为每一个进程提供一个假象,即每一个进程都在独立的使用主存。
每一个进程看到的是一致的存储器。称为虚拟地址空间。
地址空间最上面的区域是为操作系统中的代码和数据保留的。对所有的进程一样。底部存放用户进程定义的代码和数据。
进程的虚拟地址空间例如以下图:

虚拟存储器是对主存的的一种抽象,基本思想:把一个进程虚拟存储器的数据存储在磁盘中,用主存作磁盘的缓存。

即虚拟地址空间维护的是 磁盘中的数据,通过将要使用的数据缓存在主存中,使操作系统误以为数据一直在主存中(事实上,仅仅是在须要是在被缓存在主存中。假设长时间不须要则可能被swap出主存,存在磁盘中。ps:没有VM概念之前,执行的程序必须所有存储在主存中,引入之后,仅仅需保证此时正被执行的代码在主存中就可以。VM大大提高了。主存的利用率。是同一时候能够有很多其它的进程能够执行)。

寻址方式:物理和虚拟寻址
早期通过 物理寻址的方式訪问主存,即主存中每一个字节有一个唯一的物理地址。通过该物理地址,寻找该字节。
如今操作系统,通过虚拟寻址。CPU通过一个 虚拟地址来訪问主存,该地址在訪问主存之前被转换为一个物理地址。

当中。转换过程由 位于CPU中的MMU单元,通过訪问存储在主存中的页表完毕。

地址空间的概念
线性地址空间:地址空间的数据是连续的
物理地址空间
虚拟地址空间
主存中每一个字节都有一个选自物理地址空间的物理地址和一个选自虚拟地址空间的虚拟地址。

数据映射:虚拟存储器与物理存储器中间的传输数据
虚拟存储器 (VM) 被组织为一个由存在在磁盘上的N个连续的字节大小单元组成的数组。

每一个字节都有一个唯一的虚拟地址作为到数组的索引。
磁盘上的内容被缓存在主存中。通过将地址空间的数据进行分块,利用块大小作为磁盘和主存之间的传输单元。当中,VM系统将VM(指被虚拟化的磁盘)切割为称为虚拟页(virtual page )大小的块,物理存储器(指主存)被切割为称为物理页(也成为页帧)大小的块。物理页与虚拟页等大,通常为4k, 从而完毕数据映射。
虚拟存储器将主存作为缓存:

VM须要推断一个虚拟页是否被缓存在DRAM中;假设是。需确定存在哪个物理页中。
假设不命中。需推断这个虚拟页存在磁盘的哪个位置,在物理存储器中选择一个牺牲页。将虚拟页从磁盘复制到DRAM中,并替换该牺牲页,假设该牺牲页数据发生了改变。则须要将该牺牲页写回磁盘。

该过程称为swap。

上述功能有操作系统,MMU,以及存放在物理存储器中的页表(每一个进程都有一个页表,用于完毕 虚拟地址到物理地址的映射)来完毕。

页命中与缺页
即物理地址指数据在主存中的真实地址,虚拟地址是对主存的一种抽象,将存储在磁盘的数据,缓存在主存上。

页命中
CPU通过虚拟地址读取在VP2中的虚拟存储器中的数据(通过地址翻译将虚拟地址作为一个索引定位到PTE2,读取VP2相关信息)。VP2被缓存在DRAM中。使用PTE中的物理存储器地址(该地址指向PP1缓存页的起始地址),构造这个字的物理地址。

缺页
DRAM缓存不命中称为缺页。触发缺页异常,调用内核中的缺页异常处理程序。在磁盘和存储器之间传送页的活动称之为交换(swapping)或页面调度.

虚拟存储器--虚拟地址与物理地址相关推荐

  1. ARM32页表-虚拟地址到物理地址的转换

    ARM32的页表 页表就是用于将虚拟地址转换为物理地址的转换关系表.访问虚拟地址时,计算机通过页表找到对应的实际物理地址访问. 我们在上一节介绍了内存管理模块概图, 怎么完成从pgd 到 page的转 ...

  2. linux内核线性地址等于物理地址,Linux 从虚拟地址到物理地址

    我们都知道,动态共享库里面的函数的共享的,这也是动态库的优势所在,就是节省内存.C 编译出来的可执行文件几乎都会用到libc的库,假如没有这个共享的技术,每个可执行文件都要占一份libc库的内存,这将 ...

  3. Windows虚拟地址转物理地址(原理+源码实现,附简单小工具)

                                                                                                        ...

  4. 64位进程隐藏不蓝屏_浅析Linux 64位系统虚拟地址和物理地址的映射及验证方法...

    前言 有好久没更新了,这段时间发生了挺多大喜事哈.但是也还是有挺久没更新了,不得不意识到自己是个小菜鸡,就算是小菜鸡也要做一只快乐小菜鸡.就算更新慢但是我依然会持续更新,因为更文使我快乐. 虚拟内存 ...

  5. 用户的虚拟地址 linux 0 4gb,Linux驱动虚拟地址和物理地址的映射

    一般情况下,Linux系统中,进程的4GB内存空间被划分成为两个部分------用户空间和内核空间,大小分别为0~3G,3~4G. 用户进程通常情况下,只能访问用户空间的虚拟地址,不能访问到内核空间. ...

  6. Linux虚拟地址和物理地址的映射

    ➤背景 一般情况下,Linux系统中,进程的4GB内存空间被划分成为两个部分------用户空间和内核空间,大小分别为0~3G,3~4G.用户进程通常情况下,只能访问用户空间的虚拟地址,不能访问到内核 ...

  7. 简单的键盘按键记录(无码)/虚拟地址转物理地址/生成随机字符串/计算字符串哈希

    最近看到 一个 样本 ,里面有键盘 按键记录的功能 ,而且 实现也比较 简单,运行 记录 的效果还 不错 .主要思路如下 : //假代码 int i=0;for(i=0;i<0x100;i++) ...

  8. 虚拟地址 虚拟内存 物理地址

    物理内存和虚拟内存 我们先来了解一下,什么是物理内存,什么又是虚拟内存? 1.物理内存:指通过物理内存条而获得的内存空间,主要作用是在计算机运行时为操作系统和各种程序提供临时储存. 2.虚拟内存:对内 ...

  9. OS实战笔记(4)-- 虚拟地址和物理地址的转换

    在大学的时候,<操作系统原理>这门课我没有好好听,里面讲到过虚拟地址的相关知识.虽然在大学的时候,接过一两个项目(代码写的很烂,哈哈),偶尔也会自己练习几个编程题.但对虚拟地址.物理地址的 ...

最新文章

  1. 换血吃药改基因,硅谷富豪们想用钱收买死神丨视频
  2. 文巾解题 704. 二分查找
  3. Java面向对象part1
  4. mac如何看html5视频播放器,苹果Mac系统看HTML5视频教程介绍
  5. 搭建Harbor私有仓库
  6. 使用markdown语法记录笔记 1613957838
  7. anaconda中自带的qtdesigner做界面
  8. Vue is not defined;at App onLaunch function;at api getSystemInfo success callback function
  9. qpsk调制matlab仿真,QPSK调制解调仿真
  10. 晶振-电路中的心脏起搏器
  11. 计算机搜索栏历史记录,如何打开搜索历史记录
  12. 《指数基金》读书笔记
  13. 简单人物画像_10天学会画画 第5天:简单人物画法
  14. JAVA Class6
  15. rainyday.js 下雨效果插件使用方法
  16. 扫描枪识别条码为乱码
  17. layui.css地址,layui+高德获取经纬度(可点击更换位置)
  18. 开机后, 小键盘的灯不亮的解决方法
  19. 对于图片倾斜做矫正处理
  20. 怎么一次性给多段视频制作画中画,并进行智能合并

热门文章

  1. VS2003 下GridControl的列显示成图片+文字的形式实现
  2. (转)PWA(Progressive Web App)渐进式Web应用程序
  3. 解决ubuntu的chkconfig[/sbin/insserv 无法找到路径问题]
  4. 浅谈高性能数据库集群——读写分离
  5. PAT天梯赛 L1-050 倒数第N个字符串
  6. 一个APP“感知”北京门头沟的城市智慧
  7. Node.js实现简易爬虫
  8. 海量日志数据分析与应用》场景介绍及技术点分析
  9. Cocos2d-x使用iOS游戏内付费IAP(C++篇)
  10. VMware vSphere 5.1 学习系列之:安装 vCenter Server