在没有虚拟存储器之前

源程序在gcc –o 后生成的文件是可执行目标程序a.out,每条指令都有一个逻辑地址 32位。它存在硬盘上。

要执行时,只需找到该文件,将其装入内存。

装入的方式可以有多种,比如分页,分段等等。但是,必须将该程序完全装入内存。

分页:将一个进程的逻辑地址空间(32位)分成若干大小相等的页。

使用分页方式时有一个问题,必须清楚:

os是根据文件系统找到的a.out,跟a.out的逻辑地址没有一点关系

假如a.out是3个页大小,

就将这3个页分别装入内存,

装入内存的过程中将逻辑地址转换为物理地址。

如果内存为1G 每个程序的大小是100M,那么该os最多只能装10个程序。

虚拟存储器的定义:

具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储系统。

即,程序在运行之前,没必要全部装入内存,

仅把当前要运行的页装入即可,当程序运行时,如果需要其它页面,再进行页面调入或者置换。

这样 假如内存为1G,硬盘为200G,每个程序的大小为2G。

那么该os可以同时装100个程序进内存(甚至可以更多,此处是100,是因为硬盘大小的限制)。而此前的os一个程序也装不下。

也就是说,在用户看来,内存的容量变为了200G,因为有100个2G的程序被装入内存了。

但实际的内存只有1G,因此将这种存储系统称为虚拟存储器。

接下来的问题是,在没有虚拟存储器之前,os根据文件名通过文件系统将程序的全部内容载入内存,现在仅装入了一部分,剩下的部分在需要时os该怎么找到?

每个进程都有一张页表。页表的作用是实现程序页号到实地址块号的映射。页表是放在内存中的。

请求分页系统的页表项:

页号

实地址块号

状态位

修改位

外存地址

这样os就可以根据外存地址将所需的页面从硬盘中找到装入对应的内存中了。

综上,逻辑地址跟硬盘一点关系都没有。

逻辑地址使每个进程可以独立对程序的指令进行了编号,这样使每个进程都感觉自己在独占内存。到执行的时候容易将其映射为物理地址。

虚拟存储器的引入 使程序可以不必完全装入内存就能运行。

虚拟存储器一般会用到分页、分段,

但是,分页、分段并不是因为虚拟存储器才被发明的。

明白了这些以后,虚拟内存就比较好理解了

虚拟内存是用硬盘的一部分当内存,虽然把它当做内存用,可这块空间毕竟是在硬盘,速度肯定不如真是内存,所以说它是虚的。

这块虚拟内存的主要用途是当真实的内存被用完以后,又发生页面置换时,可以先把该页面换到这个地方。即虽然页面被换出内存了,但认为其还在内存。这个地方可以被称为假的实地址。

这块硬盘采用的调度算法和其他地方不一样。它是专门为换入换出设计的。

在32位系统中,假如物理内存大于4G,虚拟内存将完全无用武之地。因为cpu只能访问4G的内存空间,没必要再用硬盘当内存了。

虚拟存储器 与虚拟内存详解相关推荐

  1. 计算机服务设置详解,Windows 虚拟内存详解服务器教程 -电脑资料

    window|详解 简单来讲就是文件数据交叉链接的活动文件, 二.虚拟内存的作用内存在计算机中的作用很大,电脑中所有运行的程序都需要经过内存来执行,如果执行的程序很大或很多,就会导致内存消耗殆尽.为了 ...

  2. 优化Windows XP虚拟内存详解(转)

    优化Windows XP虚拟内存详解(转)[@more@] 什么是虚拟内存? 虚拟内存是Windows XP为作为内存使用的一部分硬盘空间.即便物理内存很大,虚拟内存也是必不可少的.虚拟内存在硬盘上其 ...

  3. 操作系统中的虚拟内存详解

    https://blog.csdn.net/dan15188387481/article/details/49536317 操作系统中的内存管理技术是十分复杂的.现在的操作系统基本都使用逻辑地址和物理 ...

  4. linux存储--虚拟内存详解MMU、页表(十)

    内存是程序得以运行的重要物质基础.如何在有限的内存空间运行较大的应用程序,曾是困扰人们的一个难题.为解决这个问题,人们设计了许多的方案,其中最成功的当属虚拟内存技术.Linux作为一个以通用为目的的现 ...

  5. Windows 虚拟内存详解

    一.虚拟内存的含义 简单来讲就是文件数据交叉链接的活动文件.是WINDOWS目录下的一个"WIN386.SWP"文件,这个文件会不断地扩大和自动缩小.虚拟内存有如像CPU的L1和L ...

  6. 【Linux】Linux的虚拟内存详解(MMU、页表结构)

    内存是程序得以运行的重要物质基础.如何在有限的内存空间运行较大的应用程序,曾是困扰人们的一个难题.为解决这个问题,人们设计了许多的方案,其中最成功的当属虚拟内存技术.Linux作为一个以通用为目的的现 ...

  7. 虚拟内存详解之一 内存的使用和重定位

    虚拟内存是非常重要的操作系统概念.但在学习虚拟内存之前,我们需要学习一些内存的基本概念.重定向就是其中的一个. 我们先来看一个例子: 0 main:mov ax,0... 40 int 0x80 这段 ...

  8. 详解操作系统中虚拟内存与物理内存的关系

    点击链接: 一文理解虚拟内存.物理内存.内存分配.内存管理 - 知乎 目录 一.虚拟内存与物理内存 1.1 虚拟内存 1.2 虚拟内存与物理内存 二.C/C++中虚拟内存分配模型 2.1 C语言中内存 ...

  9. 详解进程的虚拟内存,物理内存,共享内存

    ​ 目录 写在前面: 一.关于内存的两个概念 1.1 虚拟内存 1.2 驻留内存 二.详解top命令中VIRT.RES和SHR 2.1 top命令中ⅥRT.RES和SHR的含义 三.进程的smaps文 ...

最新文章

  1. iOS11、iPhone X、Xcode9 适配指南
  2. Android操作系统11种传感器介绍
  3. python 修改array_python 基础_ 数组的 增删改查3
  4. HDOJ1012 u Calculate e
  5. iOS10推送适配完整说明
  6. AutoCAD .NET二次开发(一)
  7. about command : wget
  8. 玩转Android Camera开发(一):Surfaceview预览Camera,基础拍照功能完整demo
  9. 叶子结点和分支节点_C++笔试题之求完全二叉树叶子节点数
  10. JAVA后端开发浅谈
  11. 构建Arduino和TFT LCD条形码扫描仪
  12. 饮用水公司配送管理系统可行性报告
  13. 台式计算机关机后自行重启,台式电脑关机后自动重启怎么办?台式电脑关机后自动开机的处理办法...
  14. GPU图形图像渲染原理
  15. vi/vim 解决按了ctrl+s之后无反应
  16. Postman任务栏图标丢失
  17. 多吃巧克力多笑脑子会更聪明
  18. Oracle汉字实现拼音码函数
  19. jenkins简介及自动发包
  20. Libsvm和Liblinear的使用经验谈

热门文章

  1. 对Java字符类型的深入了解(转贴) .
  2. 操作系统-进程调度实验报告
  3. 解决虚拟机桥接网络没有 VMnet0 的问题
  4. vue+elementUI上传图片
  5. unity中射线碰撞检测总结
  6. 使用HBuilder开发移动APP
  7. 常用网络测试命令——arp命令、traceroute命令
  8. Photoshop CC2019 快捷键壁纸 快捷键大全
  9. 抓取chrome所有版本密码
  10. windows11 显示文件后缀名