1.为什么需要虚拟存储器?

程序在os中能够执行,需要经过,编译-链接-装入

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

要执行时,只需找到该文件,将其装入内存。装入的方式可以有多种,比如分页,分段等等。但是,必须将该程序完全装入内存

分页:将一个进程的逻辑地址空间(32位)分成若干大小相等的页。分页并不是随着虚拟存储器发展起来的。

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

os是根据文件系统找到的a.out,跟a.out的逻辑地址没有一点关系,假如a.out是3个页大小,就将这3个页分别装入内存,

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

  • 例子:内存为1G 每个程序的大小是100M,那么该os最多只能装10个程序。(K、M、G)

2. 虚拟存储器

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

即,程序在运行之前,没必要全部装入内存,仅把当前要运行的页装入即可,当程序运行时,如果需要其它页面,再进行页面调入或者置换。

  • 例子:内存为1G,硬盘为200G,每个程序的大小为2G。那么该os可以同时装100个程序进内存(甚至可以更多,此处是100,是因为硬盘大小的限制)。而此前的os一个程序也装不下。也就是说,在用户看来,内存的容量变为了200G,因为有100个2G的程序被装入内存了。但实际的内存只有1G,因此将这种存储系统称为虚拟存储器。

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

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

请求分页系统的页表项:

页号 实地址块号 状态位 修改位 外存地址

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

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

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

虚拟存储器的引入 使程序可以不必完全装入内存就能运行。虚拟存储器一般会用到分页、分段,但是,分页、分段并不是因为虚拟存储器才被发明的。

3. 虚拟内存

虚拟内存是用硬盘的一部分当内存,虽然把它当做内存用,但这块空间是在硬盘,速度比真实内存慢,所以说它是虚的。

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

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

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

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

  1. 虚拟存储器(虚拟内存Vitual Memory)

    因为Redis 是基于内存的操作,我们先从内存开始说起. 虚拟存储器(虚拟内存Vitual Memory) 名词解释:主存:内存:辅存:磁盘(硬盘) 计算机主存(内存)可看作一个由M 个连续的字节大小 ...

  2. 虚拟存储器 与虚拟内存详解

    在没有虚拟存储器之前 源程序在gcc –o 后生成的文件是可执行目标程序a.out,每条指令都有一个逻辑地址 32位.它存在硬盘上. 要执行时,只需找到该文件,将其装入内存. 装入的方式可以有多种,比 ...

  3. 虚拟内存与虚拟存储器的区别

    虚拟内存与虚拟存储器的区别 背景 虚拟内存 虚拟存储器 背景 在面试的时候经常会谈及虚拟存储器和虚拟内存,但好像对于虚拟内存和虚拟存储器这两个词语的定义,使用有些混淆,然后在查阅了一些后做了一些总结. ...

  4. 字节面试杂谈——操作系统

    目录 一.操作系统的定义 二.系统调用.用户态和核心态 三.进程和线程的区别,结合JAVA JVM运行时内存 四.进程的状态 五.进程间的通信方式 六.线程间的同步方式 七.进程的调度算法 八.内存管 ...

  5. 阅读笔记--现代操作系统

    1. 操作系统面试 1.https://www.nowcoder.com/discuss/325668?type=all&order=time&pos=&page=1& ...

  6. 西工大-计算机学院-复试-面试题目

    仅供参考,可以自行补充 计算机学院一系 1.操作系统的目录(分别学了哪些东西),什么是进程,进程调度是调度谁,进程的工作状态 (1)计算机操作系统的目录:全书共分12章 处理器管理,进程调度,存储管理 ...

  7. 关于计算机面试重难点 之 操作系统,字节架构师有话说

    用户态与核心态?哪些操作会导致用户态切换到核心态?# 用户态与核心态是指操作系统两种运行级别.操作系统核心的功能与服务(进程)运行在内核态,例如:进程管理.内存管理.设备管理.文件管理等:用户进程只能 ...

  8. 操作系统期末试卷解析(1)

     本文章仅仅是对<操作系统>中的一套试卷的选择题进行简单讲解,更加详细的内容均会附上链接,以便查阅和版权保护. 多道程序的定义:多道程序设计技术是在计算机内存中同时存放几道相互独立的程序, ...

  9. 【临时重发】2017年复旦自主命题专业课:《软件工程专业基础综合》考试大纲...

    2017-06-04 MSE热线 复旦MSE热线 说明:参考书目未指定,因为一般的国内本科阶段教材都能找到相应知识点 第一部分软件工程基础 考试题型:概念问答题.实践案例题 总分:50分 一.软件过程 ...

最新文章

  1. win10系统的“管理员”
  2. 【elementUI】el-tree搜索时加载子节点对应父节点、父节点对应子节点树
  3. ***程序一般的启动方式
  4. Linux编程之定制带级别的log
  5. 如何处理 android 方法总数超过 65536 . the number of method references in a .dex file exceed 64k
  6. VueJS 开发常见问题集锦
  7. 算法题目——电梯(HDU-1008)
  8. DEVONthink Pro作为浏览器插件脚本,如何使用
  9. ThreadLocal源码学习
  10. 简便word批量打印 - Office批量打印精灵(支持正版)
  11. 深入机器学习系列之:快速迭代聚类
  12. 什么是敏捷管理及scrum方法
  13. NOI OJ 1.3 15:苹果和虫子 C语言
  14. 微信支付 postman_微信刷脸支付补贴政策有哪些?
  15. VS生成的exe文件发给别人打不开的问题
  16. 【编程语言】Lua完全自学手册
  17. 苹果新一代iPad Pro规格配置怎样?
  18. 第22期状元简讯:支付宝母公司斥资11.8亿元控股天弘基金
  19. 新库上线 | CnOpenData中国上市公司股吧评论数据
  20. 编译原理学习笔记(十)~LR(1)分析

热门文章

  1. 计算机领域中的CAE,CAE
  2. ubuntu命令行启动浏览器_linux命令行下使用linux打开浏览器命令
  3. 多模态,感知,认知,推理
  4. c语言 程序开机自启
  5. 【优化】近端梯度下降(Proximal Gradient Descent)求解Lasso线性回归问题
  6. 中文词性标注的简单实现
  7. (转)Android单元测试
  8. 【原创】软件测试工程师-面试感悟-面试经验-面试官思维 分享
  9. VUE 嵌入 WPS插件
  10. 人机对话比拼,Chat GPT和文心一言谁更接近真实交流?”