每天3分钟操作系统修炼秘籍(7):虚拟内存简介

点我查看秘籍连载

资源隔离:虚拟内存

前面描述的所有操作系统基础知识都是进程和CPU资源相关的内容,另一个操作系统中和进程相关的比较重要的话题是内存资源。

操作系统主要目的是执行程序,而程序在执行时,程序自身以及程序所访问的数据、所产生的数据都在内存里(至少所有数据的流向都会经过内存)。此外,现代操作系统可以同时运行多个进程,而每个进程都有属于自己的一部分内存。

操作系统必须负责管理这些同时运行的这些进程的内存,并且还要保证进程A不会访问到进程B的内存,从而实现进程的隔离。

操作系统使用了一个称为虚拟内存(Virtual Memory,VM)的概念来实现进程的内存管理,虚拟内存也称为地址空间或虚拟地址空间,和物理内存的称呼相对应。

每个进程都拥有一个属于自己的虚拟内存。进程在使用自己的虚拟地址空间时,任何虚拟地址都必须翻译成对应的物理内存地址才能使用到物理内存。

虚拟内存是操作系统对进程营造的另一个假象:让进程以为自己占有了所有的物理内存。但实际上,它只使用了物理内存的一部分,每个进程所实际使用的那部分物理内存由操作系统进行分配和回收,从而实现内存的管理。

虚拟内存的主要目标之一是对进程透明,进程不应该感知到内存被虚拟的这个事实,相反,还要让进程以为自己拥有所有的物理内存,想怎么使用就怎么使用,而不应该收到限制。

虚拟内存另一个目标是保护进程,进程A不允许访问到进程B的虚拟内存时,在进程A崩溃时也不应该让它影响到进程B,更不能让用户进程影响到操作系统本身。所以,每个进程都是完全隔离的,互不影响。

原文地址:https://www.cnblogs.com/f-ck-need-u/p/11675354.html

时间: 2024-10-31 16:15:33

每天3分钟操作系统修炼秘籍(7):虚拟内存简介的相关文章

每天3分钟操作系统修炼秘籍(8):虚拟内存分段

点我查看秘籍连载 进程的地址空间布局:分段 Linux的虚拟地址空间采用"分段+分页"结合的方式实现.先看分段,之后再介绍分页. 分段是将内存划分成各个段落(Segment),每个段落的长度可以不同,且虚拟地址空间中未使用的空间不会映射到物理内存中,所以操作系统不会为这段空间分配物理内存.这样的话,内核为刚创建的进程分配的物理内存可以很小,随着进程运行不断使用内存,内核再为进程按需分配物理内存.也就是说,尽管地址空间的范围和物理内存大小一样,但不会将全部空间映射到物理内存. 对于Lin

每天3分钟操作系统修炼秘籍(12):OOM和swap分区

点我查看秘籍连载 OOM和swap分区 进程的虚拟内存空间是映射到整个物理内存空间的,所以在进程自身看来它拥有了整个物理内存,它也能使用整个物理内存,只需在使用的时候请求操作系统帮忙分配更多空间即可. 但是,操作系统上并非只运行了一个进程,如果一个进程无休止的申请物理内存空间,最终会导致物理内存耗尽或即将耗尽,使得操作系统无法创建新进程,因为创建新进程需要为它分配虚拟内存. 所以,操作系统必须得监视物理内存的使用情况,在出现物理内存耗尽或即将耗尽的时候,如果进程继续请求分配内存,将报错out-o

每天3分钟操作系统修炼秘籍(2):并行的假象和分时系统

点我查看秘籍连载 假象:"并行"运行多个进程 现代操作系统都支持多任务同时执行.在这里,操作系统对我们用户"营造了一种假象",让CPU看上去是用不完的,能够不断地添加新的程序使它们同时运行. 但每核CPU在某一时刻都只能执行一个进程.使用操作系统的人是不会去关注CPU是单核还是多核的,每个人都希望操作系统能同时运行多个程序,比如可以同时看网页.发邮件.聊QQ.听音乐等. 所以操作系统提供的多程序同时运行是"伪并行".要想实现真正的并行运行多个进程

转:攻城狮修炼秘籍

漫校园生活,孜孜不倦的你,今天书多读一点! 海康威视为你的假期精心准备了精神的饕餮大餐! 把自己投入知识的海洋吧!为即将成为一名高冷俊俏的程序猿和媛而吹响最后的号角: 各类秘籍自助区 一.测试攻城狮 <软件测试> <测试之道> 二.硬件攻城狮 基础理论:工程数学.积分变换.信号与系统.数字信号处理.自动控制原理.英语 专业课程:数电.模电.嵌入式系统.热设计.DDR3.flash.开关电源 (若有实践经验,可只看基础理论) 三.应用软件开发攻城狮 必读: <UNIX环境高级编

[笔记]《HTML5秘籍》- HTML5简介

一.HTML5的故事 HTML的 基本思想--使用元素为内容添加结构--从Web诞生以来就没有变过. 1 XHML 1.0:更严格的标准 HTML5包含多个标准,这些标准之间彼此关联. HTML5核心.这一部分组要由W3C官方的规范组成,涉及新的语义元素.新的增强的Web表单微件.音频和视频支持以及通过JavaScript绘图的Canvas. 曾经属于HTML5的功能.这一部分源自WHATWG最初制定的HTML5规范,其中大多数功能需要JavaScript且支持富Web应用开发.最重要的包括本地

前端修炼の道 | &lt;div&gt; 标签简介

<div> 标签是最基本的,同时也是最常用的标签. 该标签是一个双标签,出现在主体区域中,主要作为一个容器标签来使用,在 <div> 标签中可以包含除 <body> 之外的所有主体标签. 每一对 <div></div> 标签在 HTML 页面中都会构建一个区块,我们可以通过 <div> 将页面划分成许多大小不一的区块,以便更好地控制和布局页面内容. 因此,<div> 的主要作用就是用来对 HTML 结构进行布局. [示例

老司机教你使用shel脚本15分钟部署LNMP

防伪码:我喜欢出发,只为到达的地方都属于昨天!          老司机教你使用shel脚本15分钟部署LNMP 一.环境简介 1.LNMP,顾名思义,就是Linux系统下Nginx+MySQL+PHP的一种网站服务器架构. 2.Linux是目前最流行的免费操作系统,代表版本有debian.centos.fedora.gentoo等, 今天我们使用CentOS-6.5作为LNMP架构的基础. 3.Nginx是一个高性能的HTTP和反向代理服务器,其性能稳定.功能丰富.运维简单.处理静态文件速度快

嵌入式操作系统内存管理有哪几种,各有何特性

嵌入式系统所用到的内存管理机制主要有以下两种: 1.虚拟内存管理机制: 有一些嵌入式处理器提供了MMU,在MMU具备内存地址映射和寻址功能,它使操作系统的内存管理更加方便.如果存在MMU ,操作系统会使用它完成从虚拟地址到物理地址的转换, 所有的应用程序只需要使用虚拟地址寻址数据. 这种使用虚拟地址寻址整个系统的主存和辅存的方式在现代操作系统中被称为虚拟内存.MMU 便是实现虚拟内存的必要条件.虚拟内存的管理方法使系统既可以运行体积比物理内存还要大的应用程序,也可以实现“按需调页”策略,既满足了

Linux 虚拟内存

什么是虚拟内存? 先直接摘抄一段 wikipedia 上的介绍. 虚拟内存是计算机系统内存管理的一种技术.它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换. 对于 C 语言里面的变量,我们可以使用 & 运算符来获得其地址, 既然是虚拟地址,就是指这个地址是虚拟的. 虚拟地址机制不是必须的,在简单的单片机中,编写的代码编译时都需要指定物理 RAM 空间分布,不会有虚拟地址的概念,