首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏bisal的个人杂货铺

    虚拟内存详解

    我们知道系统里的基本单位都是Byte字节,如果将每一个虚拟内存的Byte都对应到物理内存的地址,每个条目最少需要8字节(32位虚拟地址->32位物理地址),在4G内存的情况下,就需要32GB的空间来存放对照表 在系统启动时,操作系统将整个物理内存以4K为单位,划分为各个页。 之后进行内存分配时,都以页为单位,那么虚拟内存页对应物理内存页的映射表就大大减小了,4G内存,只需要8M的映射表即可,一些进程没有使用到的虚拟内存,也并不需要保存映射关系,而且Linux还为大内存设计了多级页表 内存与swap之间是按照内存页为单位来交换数据的,一般Linux中页的大小设置为4Kb。而内存与磁盘则是按照块来交换数据的。 32位机器上插入大于4G的内存是无效的,CPU访问不到多于4G的内存。

    4.3K10发布于 2020-04-10
  • 来自专栏hotarugaliの技术分享

    虚拟内存

    字节) V** 虚拟页号 TLBI TLB 索引 TLBT TLB 标记 image.png TLB(Translation Lookaside Buffer):翻译后背缓冲区/快表,是一个小的虚拟内存地址 简化加载:虚拟内存还使得容易向内存中加载可执行文件和共享对象文件。 简化共享:独立地址空间机制为操作系统提供了一个管理用户进程和操作系统自身之间共享的一致机制。 简化内存分配:虚拟内存为向用户进程提供一个简单的分配额外内存的机制。由于页面工作的方式,操作系统分配物理内存时,没有必要分配连续的物理内存页面。

    2.8K40编辑于 2022-03-01
  • 来自专栏烟草的香味

    虚拟内存

    等等吧 于是衍生成了虚拟内存的技术, 虚拟内存将内存存储在磁盘中, 待到需要的时候再读取到物理内存中. 分段 计算机中的一切问题, 都可以通过增加一个中间层来解决. 如此, 同时解决了上面的问题1, 3, 4. 但并没有解决内存使用效率低的问题. 进程能够看到的仍然只有虚拟内存, 不过, 操作系统将虚拟内存按照4k(比如) 的大小分成了很多块, 每一块称为一页. 其维护了虚拟内存中每一页到物理内存的映射关系, 这样就可以做到, 只将目前需要的部分内容读取到内存中. 因为有了虚拟内存的存在, 才可以在一个物理内存128m 的机器上, 运行需要内存200m 的进程, 虽然相比直接运行在物理内存上, 速度上要有一些牺牲. 在32位机器上, 虚拟内存最大为4G.

    2.7K20发布于 2021-02-04
  • 来自专栏木可大大

    漫谈虚拟内存

    虚拟内存是什么? 它是对主存和I/O设备的抽象,这一点在漫谈进程和线程中已经提及过,也就是说,虚拟内存是将内存看做硬盘的高速缓存,内存中只保存程序的活动区域,根据需要在硬盘和内存之间传输数据;同时,虚拟内存为每个进程提供一个一致的地址空间 ,需要4M空间来存放表,而且每个进程都需要4M,这是非常占用空间的。 假设只有3个物理页面,逻辑页面的访问次序是: 3 4 2 6。 [段页结合] 虚拟内存具体实现 这里介绍Linux中的虚拟内存的具体实现,如下图,task_struct结构体是进程描述符,属于进程管理(PCB),其中,mm(memory manage)表示内存管理,

    5.7K40发布于 2018-04-03
  • 来自专栏web服务器

    UbuntuLinux 修改 虚拟内存

    Ubuntu/Linux 修改 虚拟内存 查看虚拟内存使用情况 free -m 建立相关目录 , 一般用 /usr/swap sudo mkdir /usr/swap 建立一个 2G的虚拟内存文件 sudo

    3.6K20编辑于 2022-05-18
  • 来自专栏Linux内核那些事

    Linux虚拟内存管理

    Linux的内存管理分为 虚拟内存管理 和 物理内存管理,本文主要介绍 虚拟内存管理 的原理和实现。在介绍 虚拟内存管理 前,首先介绍一下 x86 CPU 内存寻址的具体过程。 比如在安装了4GB内存条的计算机中,能够寻址的物理地址范围为 0x00000000 ~ 0xFFFFFFFFF。在开启了分页机制的情况下,线性地址要经过分页单元转换才能得到 物理地址。 由于CPU只能对 物理地址 进行寻址,所以 线性地址 需要映射到 物理地址 才能使用,而映射是按 页(Page) 作为单位进行的,一个页的大小为4KB,所以32位的线性地址可以划分为 2^32 / 2^ 由于32位的线性地址可以划分为 2^20 个页,而每个线性地址页需要一个整型来映射到物理地址页,所以页表的大小为 4 * 2^20 (4MB)。 每个进程都可以使用4GB的虚拟内存地址,所以Linux内核需要为每个进程管理这4GB的虚拟内存地址。例如记录哪些虚拟内存地址是空闲的可以分配的,哪些虚拟内存地址已经被占用了。

    4.9K30发布于 2020-08-25
  • 来自专栏Windows技术交流

    powershell设置虚拟内存

    #虚拟内存最小1.25倍于物理内存 #虚拟内存最大2倍于物理内存 #如果物理内存>8GB #虚拟内存最小12GB #虚拟内存最大16GB $mem=Get-WmiObject -Class Win32 /how-to-determine-the-appropriate-page-file-size-for-64-bit-versions-of-windows 严格讲是这样: min(min(max(4GB ,3RAM), 1/8*$PartSize),磁盘剩余空间-2GB) -2GB是留白 ①在3倍物理内存和4GB大小之间取最大值,记为max(4GB,3RAM) ②在第①步的值和分区八分之一空间,这2个值取最小值记为 min(max(4GB,3RAM), 1/8*$PartSize) ③在第②步的值和磁盘剩余空间-2GB,这2个值取最小值记为min(min(max(4GB,3RAM), 1/8*$PartSize), 磁盘剩余空间-2GB),这个作为虚拟内存的最大值 这样有点复杂,我一般是按最开头那个办法来设置的

    1.5K10编辑于 2024-02-05
  • 来自专栏jiajia_deng

    查看虚拟内存信息

    以前介绍过 VMMap 工具是可以查看一个进程中的虚拟内存信息的,其内部的实现原理就是调用 VirtualQueryEx 函数(支持查看其他进程)得到一个进程的虚拟内存信息。

    1.9K20编辑于 2023-10-21
  • 来自专栏XINDOO的专栏

    虚拟内存介绍

    最终诞生了我们今天要说的虚拟内存虚拟内存简介 在虚拟内存中程序并不直接访问物理内存,而是和虚拟内存地址空间交互。操作系统和处理器将虚拟内存地址转化为物理内存地址。 虚拟内存机制也解决了内存有限的问题,因为操作系统可以给每个进程分配比实际内存大的多的虚拟内存空间。 现代虚拟内存将多个固定大小的整块物理内存合并成一个列表管理,解决了上述映射关系过大的问题,这种实现方式就叫做分页。其中每一块在虚拟内存中叫页面在物理内存中叫页框,每一个页面和页框是对应的。 虚拟内存的背后 当程序有了连续、整洁的虚拟内存空间后,操作系统和硬件在后台对物理内存做一些很疯狂的事了。 在必要时,虚拟内存机制将像往常一样负责将数据从硬盘驱动器移动到RAM。内存映射文件简化了程序员的工作也加快文件访问。更多信息参考这里。 虚拟内存也让统计内存消耗变得更加困难。

    2.1K20发布于 2021-01-22
  • 来自专栏Windows技术交流

    配置虚拟内存

    选择虚拟内存文件存放的驱动器,单击自定义大小,输入初始大小与最大值,单击设置,然后单击确定完成配置。建议不要选择系统盘来存放虚拟内存,请根据服务器的硬盘情况来选择。

    4K31编辑于 2022-11-01
  • 来自专栏服务器大本营

    什么是虚拟内存?服务器虚拟内存怎么设置最好?

    一、什么是虚拟内存虚拟内存有什么用处? 虚拟内存设置多少合适?  ,再下面会有一个【更改(C)】 的按扭4、打开设置之后就会弹出【虚拟内存】窗口,如图所示系统默认是把虚拟内存设置在系统盘(一般都系统盘安装在C盘了,个别没装在c盘的不在此列)选择C盘的盘符后,然后选择无分页文件 这样设置只是把系统默认在系统盘的虚拟内存设置成无了5、把系统盘的虚拟内存设置成无之后,就需要把虚拟内存设置在其他盘了,然后选择所要设置的盘符 假设设置在D盘,选择D盘之后,再选择自定义大小(C)项,在初始大小文本框里填写 :为了保证网站正常运行,服务器虚拟内存不要使用默认配置,需要设置一下,一般设置为2G-10G以上就是关于虚拟内存设置分享感谢您的阅读,服务器大本营助您成为更专业的服务器管理员!

    6.5K10编辑于 2024-02-19
  • 来自专栏用户画像

    3.2 虚拟内存管理

    3.2.1 虚拟内存的基本概念 1、传统存储管理方式的特征 各种内存管理策略都是为了同时将多个进程保证在内存中以便允许多道程序设计。

    1.4K20发布于 2018-08-24
  • 来自专栏技术分享

    虚拟内存管理技术

    虚拟内存的起因及其目标 background: 使用硬盘/磁盘使更多的程序在有限的内存中运行 比如: 游戏的内存大小 让我们必须拥有更大内存的电脑 理想的存储器 : 更大更快更便宜和非易失性的存储区 虚拟内存管理技术 在覆盖和交换技术无法处理的情况下,我们就需要另外使用其他的方法来解决程序在内存中的占比技术 目标: 像覆盖技术那样, 不是把程序的所有内容都放在内存中, 因而能够运行比当前的空闲内存空间还要大的程序 **基本特征: ** 大的用户空间 : (相当于把硬盘当作内存)通过把物理内存和外存相结合, 提供给用户的虚拟内存空间通常大于实际的物理内存, 即实现了这两者的分离. 如32位的虚拟地址理论上可以访问4GB, 而可能计算机上仅有256M的物理内存, 但硬盘容量大于4GB. 后备存储(二级存储) : 如果在内存中有空闲的物理页面, 则分配一物理页帧f, 然后转第4步; 否则转到第2步; 采用某种页面置换算法, 选择一个将被替换的物理页帧f, 它所对应的逻辑页为q, 如果该页在内存期间被修改过

    55010编辑于 2024-05-30
  • 来自专栏仙士可博客

    关于进程虚拟内存

      虚拟内存 虚拟内存是计算机系统内存管理的一种技术。 ,一般默认为 4kb 大小 页表(Page Table):操作系统给每个进程存储了一个页表,用于存储虚拟内存和物理内存的关联,页表存储的对应关系叫:页表条目(Page Table Entry,简称PTE ) 在创建进程后,操作系统将把页表存储进物理内存,使得MMU可以直接读取物理内存获取PTE 大页表: 操作系统可提供4kb,1Mb,1GB的页进行分配,而不是只能分配多个4k页 分级页表:当进程持续性申请 4GB内存时,会发现4kb的页有100万条,这时候寻找起来会十分复杂,操作系统将页表分级存储,1级存储2级的页表范围,2级存储3级的页表范围,3级页表存储实际的页表,这样就加快了查询速度 虚拟内存转换过程 在64位系统中,虚拟内存可以达到好几TB,不好做演示,这边按32位系统来说 在32位4G内存中,linux内核默认会真实占用1G空间,剩余3GB用于存储用户进程数据 同样在虚拟内存中,1GB内核空间也会存在

    2.4K10编辑于 2022-02-18
  • 来自专栏小新笔记坊

    CentOS设置虚拟内存

    一、停用虚拟内存 1.查看当前虚拟内存分区路径,一般位于/etc/fstab 2.停止正在使用swap分区 swapoff /dev/mapper/cl-swap 3.删除swap分区文件 rm -rf /dev/mapper/cl-swap 4.进入/etc/fstab注释掉fstab文件里开机自动挂载配置,内容如下: /dev/mapper/cl-swap swap swap count = 4194304:单位为b,表示虚拟内存大小为4G。 2.将交换文件格式化并转换为swap分区(提示不安全权限不用管,已经激活了) mkswap /var/swapfile 3.挂载并激活分区 swapon /var/swapfile 4.修改fstab 是一个用于动态调整Linux内核虚拟内存管理参数的命令。

    2.6K10编辑于 2024-03-12
  • 来自专栏编程我也会

    什么是虚拟内存

    创建一个进程时,操作系统(32位系统)会为该进程分配一个4GB 大小的虚拟内存。 之所以是4GB,是因为在 32 位的操作系统中,一个指针长度是4字节(32位,2的32次方个地址寻址能力是从 0x00000000~0xFFFFFFFF )即为 4GB 大小的容量。 一个进程用到的虚拟地址是由内存区域表来管理的,实际用不了4G。而用到的内存区域,会通过页表映射到物理内存。所以每个进程都可以使用同样的虚拟内存地址而不冲突,因为它们的物理地址实际上是不同的。 4的位置上取到数据返回 image.png 虚拟内存被分为一块块固定的大小,成为虚拟页(Virtual Page)简称VP,对应的物理内存也被分成一块块同样的大小,成为物理页(Physical Page image.png 上图中的内存中的vp4被替换成了VP3,valid的值从0变成1。

    2.5K30编辑于 2022-05-16
  • 来自专栏腾讯技术工程官方号的专栏

    虚拟内存 & IO & 零拷贝

    作者:mosun,腾讯 PCG 后台开发工程师 一、虚拟内存 1.1 虚拟内存引入 我们知道计算机由 CPU、存储器、输入/输出设备三大核心部分组成,如下: CPU 运行速度很快,在完全理想的状态下, 此时,科学家提出了一个概念:虚拟内存。 以 32 位操作系统为例,虚拟内存的引入,使得操作系统可以为每个进程分配大小为 4GB 的虚拟内存空间,而实际上物理内存在需要时才会被加载,有效解决了物理内存有限空间带来的瓶颈。 二级页表中的每一个 PTE 都负责映射到一个 4KB 的虚拟内存页面,和单页表的原理是一样的。 因此,对于大部分进程来说,它们的一级页表中有大量空置的 PTE,那么这部分 PTE 对应的二级页表也将无需存在,这是一个相当可观的内存节约,事实上对于一个典型的程序来说,理论上的 4GB 可用虚拟内存地址空间绝大部分都会处于这样一种未分配的状态

    2.4K20编辑于 2022-09-28
  • 来自专栏乌龟哥哥默认学习专栏

    ​Linux虚拟内存管理

    我们希望通过这种方式,使读者对Linux虚拟内存管理有更深入的理解。一、虚拟内存的基本概念在现代操作系统中,虚拟内存是一个非常重要的概念。 此外,虚拟内存还允许物理内存的超量使用,即所谓的“内存过量承诺”,这使得我们可以运行比物理内存还要大的程序。Linux操作系统采用了一种称为“分页”的技术来实现虚拟内存。 页的大小通常为4KB,但这可能会根据具体的系统配置有所不同。二、Linux虚拟内存管理的实现在Linux内核中,虚拟内存的管理主要涉及以下几个部分:页表管理、页面分配与回收、页面置换算法以及内存映射。 PGD是一个四级页表结构,它可以涵盖整个4GB的虚拟地址空间。具体的实现细节可以在arch/x86/mm/pgd.c文件中找到。2. 页面分配与回收当进程需要更多的内存时,内核会为其分配新的页面。 4. 内存映射在Linux中,进程可以通过系统调用(如mmap)来创建新的内存映射。这些映射可以是文件的映射,也可以是匿名映射(即没有对应文件的映射)。

    1.2K00编辑于 2023-11-29
  • 来自专栏用户画像

    3.2.8 虚拟内存管理

    (1)为什么要引入虚拟内存? 多道程序并发执行不仅使进程之间共享了处理器,还同时共享了主存。然而,随着处理器需求的增长,进程的执行速度会以某种合理平滑的方式慢下来。 2.虚存的大小<=计算机的地址位数能容纳的最大容量,比如你的地址是32位的,那么假设按字节编制,一个地址代表1B的存储空间的话,那么虚存的大小<=4GB(2的32次方B).这是因为如果虚存的大小超过4GB ,那么32位的地址将无法访问全部虚存,也就是说4GB以后的空间是浪费掉的,相当于没有一样,没有任何意义。 (3)虚拟内存是怎么解决问题的?会带来什么问题? 虚拟内存使用了外存上的空间来扩充内存的空间,通过一定的换入换出,使得整个系统在逻辑上能够使用一个远远超过其物理内存大小的内存容量。 因为虚拟内存技术调换页面时需要访问外存,会导致平均访存时间下降,如果使用了不合理的替换算法,则会大大降低系统性能。

    68920发布于 2018-08-27
  • 来自专栏漫漫全栈路

    ubuntu配置虚拟内存

    Step1:增加 swap 增加 2G swap 分区,只需要 修改 count=2k sudo dd if=/dev/zero of=/swap.disk bs=1M count=2k sudo mkswap -f /swap.disk sudo swapon /swap.disk or sudo dd if=/dev/zero of=/swap.disk bs=1M count=2k && sudo mkswap -f /swap.disk && sudo swapon /swap.disk ----

    2.2K110发布于 2018-03-07
领券