首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

物理内存如何组织管理的

真是因为内存资源的不足,在计算机的整个过程中衍生出各种各样的内存管理方法。 而内存管理的终极目标就是合理的不浪费的使用物理内存Linux针对如何合理的使用物理内存,软件上设计了多种的内存管理方法。...今天我们就来讨论下Linux如何组织物理内存的,通俗的说就是如何管理电脑的内存条的。 Linux使用节点(node),区域(zone),页(page)三级结构来描述整个物理内存。...在32位系统中,假设我们物理内存4G的。...比如当地址宽度的位数39位的时候。用户空间和内核空间大小一样大,大小512G。 假设此时物理内存4G,则整个4G都可以全部映射到内核虚拟地址区间的。...假设一个page的大小4K的,内核会将整个物理内存分割成一个一个4K大小的物理页,而4K大小物理页的区域我们称为page frame ?

1.5K10
您找到你想要的搜索结果了吗?
是的
没有找到

kmalloc分配物理内存与高端内存映射--Linux内存管理(十八)

虚拟内存中连续、但物理内存中不连续的内存区,可以在vmalloc区域分配. 该机制通常用于用户过程, 内核自身会试图尽力避免非连续的物理地址。...持久映射用于将高端内存域中的非持久页映射到内核中 固定映射物理地址空间中的固定页关联的虚拟地址空间项,但具体关联的页帧可以自由选择....动态内存映射区 该区域由内核函数vmalloc来分配, 特点 : 线性空间连续, 但是对应的物理空间不一定连续. vmalloc分配的线性地址所对应的物理页可能处于低端内存, 也可能处于高端内存....他们定义在tools/virtio/linux/kernel.h?v=4.7, line 46 这两个函数返回一个指向内存块的指针, 其内存块至少要有size大小. 所分配的内存区在物理连续的...., __GFP_DMA32, __GFP_HIGHMEM, __GFP_MOVABLE内存中分别有对应的内存域信息, 因此我们定义了内存域的掩码GFP_ZONEMASK, 参见include/linux

6.3K21

如何查看linux系统中空闲内存物理内存使用剩余内存

查看linux系统中空闲内存/物理内存使用/剩余内存 查看系统内存有很多方法,但主要的用top命令和free 命令 当执行top命令看到结果,要怎么看呢?...一些简单的计算方法:  物理已用内存 = 实际已用内存 - 缓冲 - 缓存 = 6811M - 350M - 5114M 物理空闲内存 = 总物理内存 - 实际已用内存 + 缓冲 + 缓存  应用程序可用空闲内存...= 总物理内存 - 实际已用内存  应用程序已用内存 = 实际已用内存 - 缓冲 - 缓存 top命令的结果详解 top命令 Linux下常用的性能 分析工具 ,能够实时显示系统 中各个进程的资源占用状况...内容如下: Mem: 191272k total  物理内存总量   173656k used  使用的物理内存总量   17616k free  空闲内存总量   22052k buffers  ...测量一个进程占用了多少内存linux为我们提供了一个很方便的方法,/proc目录为我们提供了所有的信息,实际上top等工具也通过这里来获取相应的信息。

19.7K41

Linux 内核 内存管理】物理内存组织结构 ⑥ ( 物理页 page 简介 | 物理页 page 与 MMU 内存管理单元 | 内存节点 pglist_data 与 物理页 page 联系 )

文章目录 一、物理页 page 简介 1、物理页 page 引入 2、物理页 page 与 MMU 内存管理单元 3、物理页 page 结构体 4、Linux 内核源码中的 page 结构体 二、内存节点...pglist_data 与 物理页 page 联系 内存管理系统 3 级结构 : ① 内存节点 Node , ② 内存区域 Zone , ③ 物理页 Page , Linux 内核中 , 使用 上述...3 级结构 描述 和 管理 " 物理内存 " ; 一、物理页 page 简介 ---- 1、物理页 page 引入 " 内存节点 " node 内存管理的 最顶层结构 , " 内存节点 " 再向下划分..., 就是 " 内存区域 " zone , " 内存区域 " 再向下划分 , 就是 " 物理页 " page ; 2、物理页 page 与 MMU 内存管理单元 在 Linux 内核中 , MMU 内存管理单元...结构体 " 物理页 " page Linux 内核 " 内存管理 " 中的 最小单位 , 物理页 中的 " 物理地址 " 连续的 , 每个 " 物理页 " 使用 struct page 结构体

6.7K10

物理内存管理

前言: 书接上回《内存映射技术分析》,继续来分析一下linux物理内存管理。 分析: 1,物理内存 PC上的内存条,或者手机上的内存芯片,物理上实实在在的内存,就是物理内存。...在linux-4.0.4/mm/page_alloc.c中: ? 其中MAX_ORDER11,所以order最大也就是10,因此linux上从buddy system可以申请最大的连续内存就是4M。...这里需要说明一下,对于Linux来说,一般都不需要连续的内存,因为系统跑起来之后,CPU在protected mode下访问的虚拟地址,MMU把不连续的物理地址映射成连续的虚拟地址就可以了。...10,sparse mem 物理内存上,如果存在巨大的hole,可以考虑使用sparse mem。...内存管理Linux的一个重点,也算是难点。熟悉并了解需要花些时间。作者当时也是夜深人静的时候printk打log一点一点看的。。。Orz 欢迎留言讨论。

2.6K70

操作系统如何管理物理内存的?

物理内存管理 本文操作系统系列第三篇,介绍物理内存管理。操作系统对内存的管理是非常复杂的,和程序的执行、硬件、编译器等密切相关。...地址生成 物理地址已经确定的,逻辑地址的生成依赖于编译器。 1.编译:将高级语言编译成汇编语言。...地址解析 下图CPU和计算机的基本架构,我们以此图来说明物理/逻辑地址在CPU和计算机中如何被解析处理的。...但在概念上两者完全不同,主要表现在下述三个方面: 1.页帧信息的物理单位,分页是为了实现非连续分配,以便解决内存碎片问题, 提高内存的利用率。...总结 程序在执行时,CPU看到的逻辑地址,当CPU读写数据时,由MMU根据逻辑地址找到对应的物理地址,然后到总线上读写数据。通过这种管理机制,可以更好地管理内存,在多道程序执行中做到隔离和共享。

2.5K261

Linux释疑:物理内存占用80%以上,正常吗?

Linux 系统(比如 CentOS/RadHat、Debian/Ubuntu)上配置 lnmp环境,通过探针查看物理内存使用率: 当然,也可以使用 top 命令查看: 从上面的图片可以看出 物理内存...Linux 特性: 充分利用物理内存,加快数据访问 在Linux中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉内存不够用了,其实不然。...主要特点,无论物理内存有多大,Linux 都将其充份利用,将一些程序调用过的硬盘数据读入内存,利用内存读写的高速特性来提高Linux系统的数据访问性能。...Linux 的这一特性,主要是利用空闲的物理内存,划分出一部份空间,做为 cache 和 buffers ,以此提高数据访问性能。 页高速缓存(cache) Linux内核实现的一种主要磁盘缓存。...具体地讲,通过把磁盘中的数据缓存到物理内存中,把对磁盘的访问变为对物理 内存的访问。

4.5K10

Linux 内核 内存管理】物理页释放 ( 物理页释放 __free_pages 函数 )

文章目录 一、物理页释放 __free_pages 函数 一、物理页释放 __free_pages 函数 ---- 页分配器 提供了 释放 物理页的 函数 __free_pages , 该函数定义在 Linux...内核源码的 linux-4.12\mm\page_alloc.c#4083 位置 ; __free_pages 函数参数分析 : struct page *page 参数 表示 要释放的 物理页 page...的 虚拟空间地址 ; unsigned int order 参数 表示 要释放的 物理页 的 " 阶数 " , 也就是 要释放的物理页大小 ; 阶 ( Order ) : 物理页 的 数量单位 ,...n 阶页块 指的是 2^n 个 连续的 " 物理页 " ; 参考 【Linux 内核 内存管理】伙伴分配器 ① ( 伙伴分配器引入 | 页块、阶 | 伙伴 ) __free_pages 函数源码...order == 0) free_hot_cold_page(page, false); else __free_pages_ok(page, order); } } 源码路径 : linux

12.6K20

物理内存与虚拟内存

同理我们现在大部分使用的32位的机子,32位的386以上CPU就可以支持最大4GB的物理内存空间了。...正在运行的一个进程,他所需的内存有可能大于内存条容量之和的,比如你的内存256M,你的程序却要创建一个2G的数据区,那么不是所有数据都能一起加载到内存物理内存)中,势必有一部分数据要放到其他介质中...所以,虚拟内存进程运行时所有内存空间的总和,并且可能有一部分不在物理内存中,而物理内存就是我们平时所了解的内存条。有的地方呢,也叫这个虚拟内存内存交换区。...关键的不要把虚拟内存跟真实的插在主板上的内存条相挂钩,虚拟内存它是“虚拟的”不存在,假的啦,它只是内存管理的一种抽象! 什么虚拟内存地址和物理内存地址呢。...总结起来说,虚拟内存地址的大小与地址总线位数相关,物理内存地址的大小跟物理内存条的容量相关。

2.1K31

Linux 如何管理内存的?

Linux 内存管理实现 内存管理系统操作系统最重要的部分之一。从计算机早期开始,我们实际使用的内存都要比系统中实际存在的内存多。...公平的物理内存分配 内存管理子系统允许系统中的每个正在运行的进程公平分配系统的物理内存。 共享虚拟内存 尽管虚拟内存让进程有自己的内存空间,但是有的时候你需要共享内存的。...下面我们就正式探讨一下什么 虚拟内存 虚拟内存的抽象模型 在考虑 Linux 用于支持虚拟内存的方法之前,考虑一个不会被太多细节困扰的抽象模型很有用的。...在虚拟内存系统中,所有的地址空间都是虚拟的而不是物理的。但是实际存储和提取指令的物理地址,所以需要让处理器根据操作系统维护的一张表将虚拟地址转换为物理地址。...现在,Linux 已确定页面错误合法的,因此必须对其进行处理。 ?

2.3K20

深入理解 Linux 物理内存分配全链路实现

前文回顾 在上篇文章 《深入理解 Linux 物理内存管理》中,笔者详细的为大家介绍了 Linux 内核如何对物理内存进行管理以及相关的一些内核数据结构。...通过以上内容的介绍,笔者觉得大家已经在架构层面上对 Linux 物理内存管理有了一个较为深刻的认识,现在物理内存管理的架构我们已经建立起来了,那么内核如何根据这个架构层次来分配物理内存呢?...,函数参数的含义也是一样,只不过一个返回物理内存页的虚拟内存地址,一个直接返回物理内存页。...关于物理内存分配的区域降级策略,笔者在前面的文章《深入理解 Linux 物理内存管理》的 “ 5.1 物理内存区域中的预留内存 ” 小节中已经详细地为大家介绍过了,但是之前的介绍只是停留在理论层面,那么这个物理内存区域降级策略在哪里实现的呢...关于物理内存区域中的紧急预留内存相关内容,笔者在之前文章 《深入理解 Linux 物理内存管理》一文中的 “ 5.1 物理内存区域中的预留内存 ” 小节中已经详细介绍过了。

47510

物理内存管理之zone详解

上一次说过了物理内存由node,zone,page三级结构来描述。而node根据当前的系统NUMA还是UMA系统。假设我们当前UMA系统架构,则只有一个node。 ?...我们本节则重点学习下ZONE,重点ZONE的数据结构,其中就可以看到ZONE中如何管理我们page的,就会看到buddy分配器。...WMARK_LOW:低水位,代表内存已经开始吃紧,需要启动回收页内核线性kswapped去回收内存 WMARK_HIGH:高水位,代表内存还是足够的。...,当系统内存出现不足的时候,系统就会使用这些保留的内存来做一些操作,比如使用保留的内存进程用来可以释放更多的内存 free_area:用于维护空闲的页,其中数组的下标对应页的order数。...最大order目前11。

3.2K10

一步一图带你深入理解 Linux 物理内存管理

所以本文的目的在深入理解虚拟内存管理的基础之上继续带大家向前奋进,一举击破物理内存管理的知识盲区,使大家能够俯瞰整个 Linux 内存管理子系统的整体全貌。...Linux 早期使用的就是这种内存模型,因为在 Linux 发展的早期所需要管理的物理内存通常不大(比如几十 MB),那时的 Linux 使用平坦内存模型 FLATMEM 来管理物理内存就足够高效了。...本文我们的主题 Linux 物理内存的管理,那么在 NUMA 内存架构下,这些 NUMA 节点中的物理内存区域 zone 管理的这些物理内存页,哪些在 CPU 的高速缓存中?...6.4 复合页 compound_page 相关属性 我们都知道 Linux 管理内存的最小单位 page,每个 page 描述 4K 大小的物理内存,但在一些对于内存敏感的使用场景中,用户往往期望使用一些巨型大页...总结 到这里,关于 Linux 物理内存管理的相关内容笔者就为大家介绍完了,本文的内容比较多,尤其物理内存页反向映射相关的内容比较复杂,涉及到的关联关系比较多,现在笔者在带大家总结一下本文的主要内容,

71731

Linux系统的ECS实例中如何查看物理CPU和内存信息

简述 Linux系统的ECS实例中如何查看物理CPU和内存信息 前情提示 系统: 一说 Powered By PUSDN - 平行宇宙软件开发者网www.pusdn.com ,转载请标明出处!...CPU个数 × 每颗物理CPU的核数 总逻辑CPU数 = 物理CPU个数 × 每颗物理CPU的核数 × 超线程数 通过如下命令,可以查看物理CPU和内存相关信息。...CPU:物理CPU就是插在主机上的真实的CPU硬件,在Linux下可以数不同的physical id 来确认主机的物理CPU个数。...核心数:物理CPU下一层概念就是核心数,我们常常会听说多核处理器,其中的核指的就是核心数。在Linux下可以通过cores来确认主机的物理CPU的核心数。...在Linux下可以通过 processors 的数目来确认逻辑CPU的数量。 超线程:超线程英特尔开发出来的一项技术,使得单个处理器可以象两个逻辑处理器那样运行,这样单个处理器以并行执行线程。

23230

Linpmem:一款功能强大的Linux物理内存提取工具

Linpmem一款功能强大的Linux物理内存提取工具,该工具专为x64 Linux设计,可以帮助广大研究人员在执行安全分析过程中快速读取Linux物理内存数据。...该工具类似Windows下的Winpmem,Linpmem不是一个传统的内存转储工具,该工具提供了一个API来从任何物理地址读取数据。...除此之外,Linpmem还提供了多种读取物理内存的访问模式,例如字节、dward、qward和缓冲区访问模式等,其中缓冲区访问模式适用于大多数情况。...功能介绍 1、支持使用多种访问模式从内存物理地址读取数据; 2、CRS信息服务(可以通过pid指定目标进程); 3、虚拟地址转物理地址转换服务; 工具下载 广大研究人员可以使用下列命令将该项目源码克隆至本地...确保安装好了linux-headers,具体的包名可能取决于Linux发行版的版本,下列命令可以检查是否已经安装好了linux-headers: ls -l /usr/lib/modules/`uname

8110

内存管理两部曲之物理内存管理

可以从物理和逻辑两方面来考虑扩充内存容量,物理扩容没啥技术含量,需要我们研究的自然如何从逻辑上扩充内存容量。 所谓逻辑扩充,就是说实际上物理内存的容量没有发生改变,但是它能装的东西却变多了。...前两种逻辑扩充技术已经成为历史,虚拟内存技术目前的主流。所以也有很多人把内存管理这块的内容直接区分为物理内存管理和虚拟内存管理,一目了然。...图片来源《现代操作系统 - 第 3 版》 前文说过,指令真正执行的时候会将虚拟地址最终转换为物理地址。 那么,页式管理中如何将虚拟地址(页面)和物理地址(页框)进行映射的呢?...从数学角度来说,页表一个函数,它的参数虚拟页号,结果物理页框号。...(页表项多了,页表自然也就大了)— 使用多级页表解决 先来看第一个问题,由于每次访问内存,都需要进行虚拟地址到物理地址的转换,因此,每条指令进行一两次或更多页表访问必要的,而页表又是存在于内存中的。

84910
领券