当前位置: 首页 > news >正文

虚拟内存相关笔记

在这里插入图片描述
虚拟内存是计算机系统内存管理的一个功能,它允许程序认为它们有比实际物理内存更多的可用内存。它使用硬盘来模拟额外的RAM。当物理内存不足时,操作系统将利用磁盘空间作为虚拟内存来存储数据。这种机制提高了资源的利用率并允许更大、更复杂的应用程序的执行。

以下是虚拟内存的工作原理和组成:

  1. 分页与页表:

    • 为了实现虚拟内存,操作系统将虚拟地址空间和物理地址空间分成固定大小的块,称为页。
    • 每个虚拟页都有一个对应的物理页,但并不是所有虚拟页都一直保留在物理内存中。
    • 页表是一个数据结构,用于跟踪虚拟页和物理页之间的关系。
  2. 页面置换:

    • 当一个程序需要访问一个不在物理内存中的页时,会触发一个页面错误(page fault)。
    • 操作系统会选择一个物理页,将其内容写回到磁盘(如果该页被修改过),并从磁盘读取所需的页到该物理页中。
    • 页面置换算法(如最近最少使用LRU、先进先出FIFO等)用于确定应该替换哪个物理页。
  3. 交换空间或页面文件:

    • 当物理内存不足时,操作系统使用磁盘上的一部分作为虚拟内存,称为交换空间(Linux)或页面文件(Windows)。
    • 当一个页面从物理内存被移出时,它被存储在这个磁盘空间中。
  4. 优点:

    • 内存抽象: 应用程序不必关心物理内存的实际数量和位置,而是工作在一个连续的、统一的地址空间中。
    • 资源最大化: 虚拟内存允许多个进程共享有限的物理内存,而每个进程都认为它独占了所有的内存。
    • 安全性: 通过虚拟内存,每个进程都运行在其自己的地址空间,这防止了一个进程意外(或恶意地)访问或修改另一个进程的数据。
  5. 缺点:

    • 如果系统过度依赖虚拟内存(即频繁地进行页面置换),性能会受到严重影响,因为磁盘访问速度远慢于RAM。这种现象被称为"页面抖动"。

类比说明:
想象你是一位厨师,正在为一个大型晚宴做准备。你的厨房操作台是你的"物理内存",因为这是你直接使用食材和工具的地方。但是,你有太多的食材和工具,无法全部放在操作台上。这时,你的冰箱和储藏室就起到了"虚拟内存"的作用。

  1. 工作中: 当你制作一个菜肴时,你从冰箱或储藏室取出所需的食材和工具放到操作台上。同样地,当电脑运行一个程序时,它需要从硬盘(相当于你的冰箱/储藏室)中取出数据,放到物理内存(操作台)中。

  2. 空间不足: 如果操作台上的空间不足,你需要做出决策:将一些不急用的食材或工具放回冰箱或储藏室,为即将使用的食材腾出地方。同样,当电脑的物理内存不足时,它会将一些不常用的数据移至硬盘上的一个特定区域(虚拟内存),为即将使用的数据腾出空间。

  3. 取用速度: 从操作台拿东西总是比从冰箱或储藏室拿要快。同理,电脑从物理内存中取数据比从硬盘上的虚拟内存取数据要快得多。

  4. 过度依赖的问题: 如果你频繁地从冰箱和储藏室拿取东西,你的烹饪速度就会变慢。同样,如果电脑过于依赖虚拟内存,它的运行速度也会受到影响。

我们继续使用厨房的例子来解释分页和页表。

  1. 分页

    • 解释: 分页是将计算机的内存划分为许多固定大小的小块,这些小块就叫做"页"。
    • 厨房比喻: 想象你的操作台上有一个特别的蛋糕模型,这个模型可以将一个大蛋糕切成等大的小块。在这里,大蛋糕代表电脑的整个内存或一个大型程序,而蛋糕模型将大蛋糕分成了许多小块,每一小块蛋糕就是一个"页"。
  2. 页表

    • 解释: 页表是一个目录或索引,它记录了每个"页"的位置,无论是在操作台上(物理内存)还是在冰箱/储藏室中(虚拟内存)。
    • 厨房比喻: 想象在操作台旁边有一个食谱,这个食谱告诉你每一小块蛋糕现在放在哪里——是在操作台上,还是在冰箱里。如果你需要找到一个特定的蛋糕块,你只需要查看食谱,而不是去每个地方寻找。这个食谱就像是计算机的"页表",帮助电脑迅速找到每一个"页"的位置。

当程序在运行时,它可能需要某个特定的数据(也就是蛋糕的某一小块)。电脑首先会查看页表(食谱)以确定这个数据当前存储在哪里。如果它在操作台上(物理内存),那么电脑可以直接使用它;如果它在冰箱/储藏室(虚拟内存),那么电脑需要先将其移动到操作台上才能使用。

分页是计算机内存管理中的一种技术,用于将物理内存和虚拟内存分成固定大小的块。以下是分页的具体步骤和机制:

  1. 固定大小的块

    • 无论是物理内存(RAM)还是虚拟内存(通常在硬盘上),它们都被分为固定大小的块,这些块被称为"页"。常见的页大小有4KB, 8KB等,但这取决于操作系统和硬件架构。
  2. 虚拟地址与物理地址

    • 当程序运行时,它在一个叫做"虚拟地址空间"的地方生成地址。这些地址不直接对应物理内存的实际位置。
    • 物理地址是数据在RAM中的实际位置。
    • 分页的任务之一是将虚拟地址映射到物理地址。
  3. 页表的作用

    • 为了完成这种映射,操作系统维护了一个叫做"页表"的数据结构。页表为每一个虚拟页存储一个条目,指示这个虚拟页在物理内存中的位置。
    • 当CPU需要访问一个虚拟地址时,它首先查找相关的页表,找到物理地址,然后访问那个物理位置。
  4. 页失效

    • 如果一个程序试图访问的虚拟页不在物理内存中(这意味着它可能在硬盘的虚拟内存部分),则会发生"页失效"。此时,操作系统必须从虚拟内存中取出所需的页,并将其加载到物理内存中。为了给新页腾出空间,操作系统可能需要选择一个当前在物理内存中的页,并将其移出。

尝试使用一个更简单的比喻来帮助理解页失效和页面置换算法。

想象一下,你有一个小书桌和一个大书架。你正在研究一本书,但书桌上只能放5本书。你的书桌代表物理内存,而大书架代表虚拟内存。

页失效的情境:

  1. 你正在阅读一个新主题,需要从书架上取一本书。
  2. 但是,你的书桌已经放满了5本书,没有空间放新书。
  3. 这种情况,就像页失效,你需要的"数据"(书)不在"物理内存"(书桌)上。

页面置换算法:

  1. 既然书桌上没有空间,你需要决定放回书架的哪一本书来为新书腾地方。
  2. FIFO(先进先出): 你放回最早放到书桌上的那本书,无论你多久没读它。它就像排队,第一个来的书将是第一个离开的。
  3. LRU(最近最少使用): 你思考一下,然后放回你很长时间都没有看过的那本书,因为你认为短期内不太可能再需要它。

所以,这些"页面置换算法"就是你用来决定哪本书放回书架的方法,以便为新书腾出空间。计算机在决定哪一页数据从物理内存中移出以容纳新数据时,也采用类似的策略。

  1. 页面置换算法

    • 为了决定哪一页应该从物理内存中移出,操作系统使用页面置换算法。常见的算法包括LRU(最近最少使用)、FIFO(先进先出)等。
  2. 分页的优点

    • 通过使用分页,操作系统可以使得每个进程都认为它在使用整个连续的地址空间,而实际上,它的数据可以散布在物理内存的各个地方。
    • 分页还有助于保护进程之间的隔离,因为每个进程的地址空间是独立的。

相关文章:

虚拟内存相关笔记

虚拟内存是计算机系统内存管理的一个功能,它允许程序认为它们有比实际物理内存更多的可用内存。它使用硬盘来模拟额外的RAM。当物理内存不足时,操作系统将利用磁盘空间作为虚拟内存来存储数据。这种机制提高了资源的利用率并允许更大、更复杂的应用程序的…...

【linux】定时任务讲解

文章目录 一. 在某时刻只执行一次:at1. 设置定时任务2. 查看和删除定时任务 二. 周期性执行任务:cron1. 启动crond进程2. 编辑定时任务3. 查看和删除4. 用户权限4.1. 黑名单4.2指定用户 三. /etc/crontab的管理 一. 在某时刻只执行一次:at 1…...

安卓10创建文件夹失败

最近在做拍照录像功能,已经有了文件读写权限,却发现在9.0手机上正常使用,但是在安卓12系统上根本没有创建文件夹。经过研究发现,创建名称为“DCIM”的文件夹可以,别的又都不行。而且是getExternalStorageDirectory和ge…...

文件操作(c/c++)

文件操作可以概括为几步: 打开文件,写入文件,读取文件,关闭文件 FILE FILE 是一个在C语言中用于文件操作的库函数,它提供了一系列函数来实现文件的创建、打开、读取、写入、关闭等操作。FILE 库函数可以帮助开发者处理…...

设计模式-适配器

文章目录 一、简介二、适配器模式基础1. 适配器模式定义与分类2. 适配器模式的作用与优势3.UML图 三、适配器模式实现方式1. 类适配器模式2. 对象适配器模式3.类适配器模式和对象适配器模式对比 四、适配器模式应用场景1. 继承与接口的适配2. 跨平台适配 五、适配器模式与其他设…...

C. Queries for the Array - 思维

分析: 分析出现矛盾的地方,也就是可能遇到0,并且已有字符串的长度小于等于1,另一种情况就是,遇到了1并且已有字符串不是排好序的,或者遇到了0已有字符串是排好序的,那么可以遍历字符串&#xff…...

音频——硬件拓扑

文章目录 硬件拓扑I2S 数据通路五线模式四线模式两线 TX两线 RX 典型应用硬件连接数据流 硬件拓扑 控制路径:UART/I2C/SPI数据路径:I2S 简略图如下 I2S 数据通路 五线模式 四线模式 两线 TX 两线 RX 典型应用 硬件连接 控制信号:SPI 用…...

Oracle表索引查看方法总结(查看oracle表索引)

Oracle表索引查看方法总结 Oracle是当前应用最广泛的关系数据库,也是多数大型企业使用的数据库。Oracle表索引在提高查询效率方面起着至关重要的作用,掌握该方法也是技术人员必备技能之一。本文总结了几种常见的查看Oracle表索引信息的方法,…...

react css 污染解决方法

上代码 .m-nav-bar {background: #171a21;.content {height: 104px;margin: 0px auto;} }import React from "react"; import styles from ./css.module.scssexport default class NavBar extends React.Component<any, any> {constructor (props: any) {supe…...

volatile 关键字 与 CPU cache line 的效率问题

分析&回答 Cache Line可以简单的理解为CPU Cache中的最小缓存单位。目前主流的CPU Cache的Cache Line大小都是64Bytes。假设我们有一个512字节的一级缓存&#xff0c;那么按照64B的缓存单位大小来算&#xff0c;这个一级缓存所能存放的缓存个数就是512/64 8个。具体参见下…...

又一关键系统上线,理想车云和自动驾驶系统登陆OceanBase

8 月 1 日&#xff0c;理想汽车公布 7 月交付数据&#xff0c;理想汽车 2023 年 7 月共交付新车 34,134 辆&#xff0c;同比增长 227.5%&#xff0c;并已连续两个月交付量突破三万。至此&#xff0c;理想汽车 2023 年累计交付量已经达到 173,251 辆&#xff0c;远超 2022 年全年…...

SIEM(安全信息和事件管理)解决方案

什么是SIEM 安全信息和事件管理&#xff08;SIEM&#xff09;是一种可帮助组织在安全威胁危害到业务运营之前检测、分析和响应安全威胁的解决方案&#xff0c;将安全信息管理 (SIM) 和安全事件管理 (SEM) 结合到一个安全管理系统中。SIEM 技术从广泛来源收集事件日志数据&…...

Go 自学:map关联数组

以下代码展示了如何建立一个map。 我们可以使用delete删除map中的元素。 我们还可以使用loop遍历map中的所有元素。 package mainimport ("fmt" )func main() {languages : make(map[string]string)languages["JS"] "Javascript"languages[&qu…...

c#多态(override)的使用

方法重写&#xff08;override&#xff09;:多态&#xff0c;通过父类类型对象&#xff0c;调用子类当中对应方法的实现。 细节&#xff1a;子类当中的override方法会“抹杀”父类当中对应virtual方法 不使用多态时&#xff0c;父类调用子类方法时&#xff0c;会调用父类的方法…...

kafka 动态扩容现有 topic 的分区数和副本数

文章目录 [toc]创建一个演示 topic生产一些数据使用消费者组消费数据增加分区无新数据产生&#xff0c;有旧数据未消费有新数据产生&#xff0c;有旧数据未消费 增加副本创建 json 文件使用指定的 json 文件增加 topic 的副本数使用指定的 json 文件查看 topic 的副本数增加的进…...

【数据结构】Golang 实现单链表

概念 通过指针将一组零散的内存块串联在一起 &#xff0c; 把内存块称为链表的“结点”。 记录下个结点地址的指针叫作后继指针 next &#xff0c;第一个结点叫作头结点&#xff0c;把最后一个结点叫作尾结点 。 代码实现 定义单链表 在 golang 中可以通过结构体定义单链表…...

云服务器利用Docker搭建sqli-labs靶场环境

一、安装宝塔面板 使用xshell、electerm、SecureCRT等远程终端连接登陆上云服务器&#xff0c;在Linux宝塔面板使用脚本安装 安装后&#xff0c;如下图&#xff1a;按照提示&#xff0c;在云服务器防火墙/安全组放行Linux宝塔面板的端口 在浏览器打开上述网址&#xff0c;登…...

jQuery成功之路——jQuery介绍和jQuery选择器概述

一、jQuery介绍 1.1 jQuery概述 jQuery的概述 jQuery是一个快速、简洁的JavaScript框架。jQuery设计的宗旨是“write Less&#xff0c;Do More”&#xff0c;即倡导写更少的代码&#xff0c;做更多的事情。JQuery封装了JavaScript常用的功能代码&#xff0c;提供了一套易于使…...

极限五分钟,在宝塔中用 Docker 部署升讯威在线客服系统

最近客服系统成功经受住了客户现场组织的压力测试&#xff0c;获得了客户的认可。 客户组织多名客服上线后&#xff0c;所有员工同一时间打开访客页面疯狂不停的给在线客服发消息&#xff0c;系统稳定无异常无掉线&#xff0c;客服回复消息正常。消息实时到达无任何延迟。 本文…...

Java--静态字段与静态方法

1、静态字段 如果将一个字段定义为static&#xff0c;每个类只有一个这样的字段。而对于非静态的实例字段&#xff0c;每个对象都有自己的一个副本。 例如&#xff1a; class Employee {private static int nextId 1;private int id;... }其中&#xff0c;每一个Employee对…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...