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

Linux用户态进程的内存管理

上一篇我们了解了内存在内核态是如何管理的,本篇文章我们一起来看下内存用户态的使用情况,如果上一篇文章说是内核驱动工程师经常面对的内存管理问题,那本篇就是应用工程师常面对的问题。...相信大家都知道对用户态的内存消耗对象是进程,应用开发者面对的所有代码操作最后的落脚点都是进程,这也是说为什么内存和进程两个知识点的重要性,理解了内存和进程两大法宝,对所有软件开发的理解都会有了全局观(关于进程的知识以后再整理和大家分享...,在缺页中断的处理程序中读出虚拟地址和原因,去VMA中查,发现是用户程序在写malloc的合法区域且有写权限,Linux内核就真正的申请内存,页表中对应一页的权限也修改为R+W。...) malloc大于128k的内存,使用mmap分配内存,在堆和栈之间找一块空闲内存分配(对应独立内存,而且初始化为0) 内存的消耗VSS RSS PSS USS 首先,我们评估一个进程的内存消耗都是指用户空间的内存...这里我们用工具 procrank先来看下Linux进程的内存占用量 。 ?

2.8K30

Linux用户态进程的内存管理

上一篇我们了解了内存在内核态是如何管理的,本篇文章我们一起来看下内存用户态的使用情况,如果上一篇文章说是内核驱动工程师经常面对的内存管理问题,那本篇就是应用工程师常面对的问题。...相信大家都知道对用户态的内存消耗对象是进程,应用开发者面对的所有代码操作最后的落脚点都是进程,这也是说为什么内存和进程两个知识点的重要性,理解了内存和进程两大法宝,对所有软件开发的理解都会有了全局观(关于进程的知识以后再整理和大家分享...,在缺页中断的处理程序中读出虚拟地址和原因,去VMA中查,发现是用户程序在写malloc的合法区域且有写权限,Linux内核就真正的申请内存,页表中对应一页的权限也修改为R+W。...) malloc大于128k的内存,使用mmap分配内存,在堆和栈之间找一块空闲内存分配(对应独立内存,而且初始化为0) 内存的消耗VSS RSS PSS USS 首先,我们评估一个进程的内存消耗都是指用户空间的内存...这里我们用工具 procrank先来看下Linux进程的内存占用量 。 ?

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

Linux 内核 内存管理】内存管理架构 ① ( 内存管理架构组成 | 用户空间 | 内核空间 | MMU 硬件 | Linux 内核架构层次 | Linux 系统调用接口 )

文章目录 一、内存管理架构组成 ( 用户空间 | 内核空间 | MMU 硬件 ) 二、Linux 内核架构层次 三、Linux 系统调用接口 一、内存管理架构组成 ( 用户空间 | 内核空间 | MMU...硬件 ) ---- 内存管理架构 由 3 部分组成 : ① 用户空间 : 在 " 用户空间 " 中 , 使用 malloc 函数 申请 " 堆内存 " , 使用 free 函数 释放 " 堆内存..." ; ② 内核空间 : Linux 内核启动后 , 一直 驻留在内存 中 , 应用程序 不能 读写 内核空间数据 , 不能直接调用 内核源码 中的函数 ; 只能通过 " 系统调用 " 间接调用 内核函数...组成 ; 层次架构如下 : Linux 内核 需要 " 管理硬件 " , 如 : CPU 处理器 , 内存 , I/O 设备 , 网络设备 等 ; Linux 内核 还需要 向上层的 " 应用程序...⑤ 网络管理 : 内核 调用 网络接口 , 实现 网络管理 ; " 设备管理 " 对用户是透明的 , 用户不直到 Linux 内核是如何管理设备的 , 系统调用接口没有关于 " 设备管理 " 的调用接口

9.5K40

Linux内存描述之高端内存--Linux内存管理(五)

为了合理的利用逻辑4G空间,Linux采用了3:1的策略,即内核占用1G的线性地址空间,用户占用3G的线性地址空间。...你能很方便取得内核数据和用户进程的数据 1.3 应用程序线性地址和动态内存分配 应用程序能使用的最大线性地址就是3G, 根据linux应用的分区方法: -------------------------...目前现实中,64位Linux内核不存在高端内存,因为64位内核可以支持超过512GB内存。若机器安装的物理内存超过内核地址空间范围,就会存在高端内存。 5.3 用户进程能访问多少物理内存?...若把所有地址空间都给内存,那么用户进程怎么使用内存?怎么保证内核使用内存用户进程不起冲突? 让我们忽略Linux对段式内存映射的支持。...下图简单简单表达如何对高端内存进行映射 !对高端内存进行映射 Linux内存线性地址空间大小为4GB,分为2个部分:用户空间部分(通常是3G)和内核空间部分(通常是1G)。

12.2K22

Linux内存描述之内存节点node--Linux内存管理(二)

CPU访问本地内存的速度比访问远程内存的速度要快 Linux适用于各种不同的体系结构, 而不同体系结构在内存管理方面的差别很大....因此linux内核需要用一种体系结构无关的方式来表示内存....因此linux内核把物理内存按照CPU节点划分为不同的node, 每个node作为某个cpu结点的本地内存, 而作为其他CPU节点的远程内存, 而UMA结构下, 则任务系统中只存在一个内存node, 这样对于...系统中的NUMA结点都是从0开始编号的 3.1 linux-2.4中的实现 pgdat_next指针域和pgdat_list内存结点链表 而对于NUMA结构的系统中, 在linux-2.4.x之前的内核中所有的节点...-3.x~4.x的实现 node_data内存节点数组 在新的linux3.x~linux4.x的内核中,内核移除了pg_data_t的pgdat_next之指针域, 同时也删除了pgdat_list链表

7.6K20

Linux内存描述之内存页面page--Linux内存管理(四)

1 Linux如何描述物理内存 Linux把物理内存划分为三个层次来管理 层次 描述 存储节点(Node) CPU被划分为多个节点(node), 内存则被分簇, 每个CPU对应一个本地物理内存, 即一个...简单来说, 页是一个数据块, 可以存放在任何页框(内存中)或者磁盘(被交换至交换分区)中 我们今天就来详细讲解一下linux下物理页帧的描述 2 页帧 内核把物理页作为内存管理的基本单位....而不是在整个文件内的偏移 private 私有数据指针,由应用场景确定其具体的含义 lru 链表头,用于在各种链表上维护该页, 以便于按页将不同类别分组, 主要有3个用途: 伙伴算法, slab分配器, 被用户态使用或被当做页缓存使用...page被用户态使用或被当做页缓存使用时,用于将该page连入zone中相应的lru链表,供内存回收时使用。...3.2 内存页标识pageflags 其中最后一个flag用于标识page的状态, 这些状态由枚举常量enum pageflags定义, 定义在include/linux/page-flags.h?

8K11

Linux内存描述之概述--Linux内存管理(一)

2 (N)UMA模型中linux内存的机构 Linux适用于各种不同的体系结构, 而不同体系结构在内存管理方面的差别很大. 因此linux内核需要用一种体系结构无关的方式来表示内存....Linux内核通过插入一些兼容层, 使得不同体系结构的差异很好的被隐藏起来, 内核对一致和非一致内存访问使用相同的数据结构 2.1 (N)UMA模型中linux内存的机构 非一致存储器访问(NUMA)模式下...而内存管理的其他地方则认为他们就是在处理一个(伪)NUMA系统. 2.2 Linux物理内存的组织形式 Linux把物理内存划分为三个层次来管理 层次 描述 存储节点(Node) CPU被划分为多个节点..., 我们会在后面典型架构(x86)上内存区域划分详细讲解x86_32上的内存区域划分 因此Linux内核对不同区域的内存需要采用不同的管理方式和映射方式, 为了解决这些制约条件,Linux使用了三种区:...2.6 高端内存 由于能够被Linux内核直接访问的ZONE_NORMAL区域的内存空间也是有限的,所以LINUX提出了高端内存(High memory)的概念,并且允许对高端内存的访问

6.8K30

Linux内存描述之内存区域zone--Linux内存管理(三)

这样已经很好的表示物理内存了, 在一个理想的计算机系统中, 一个页框就是一个内存的分配单元, 可用于任何事情:存放内核数据, 用户数据和缓冲磁盘数据等等....Linux使用enum zone_type来标记内核所支持的所有内存区域 3.1 内存区域类型zone_type zone_type结构定义在include/linux/mmzone.h, 其基本信息如下所示...,ffff,f000这128T地址用于用户空间;而0xffff,8000,0000,0000以上的128T为系统空间地址, 这远大于当前我们系统中的内存空间, 因此所有的物理地址都可以直接映射到内核中,...位系统中, Linux内核虚拟地址空间只有1G, 而0~895M这个986MB被用于DMA和直接映射, 剩余的物理内存被成为高端内存....DMA”,”Normal” 和”HighMem” totalreserve_pages 每个区域保留的不能被用户空间分配的页面数目 ZONE_PADDING 由于自旋锁频繁的被使用,因此为了性能上的考虑

9K31

LinuxLinux用户用户组权限

用户用户用户信息保存在 /etc/passwd 用户密码信息 /etc/shadow 用户组信息 /etc/group 1.改变文件所有者为hechong chown hechong by-id...可以看到图中使用不同颜色标记了权限,红色区域表示所有者权限,蓝色区域表示用户组权限,紫色区域表示其他者权限。...下面以几个例子来学习修改文件的权限 1.使by-id所有者权限删除r,用户组权限添加w,其他者权限删除x。...chmod u-r,g-x,o-x by-id 2.使by-id所有者权限,用户组权限,其他者权限均删除w chmod a-w by-id 或 chmod -w by-id 3.使by-id所有者权限,...用户组权限,其他者权限更改为w chmod a=w by-id 4.使by-id所有者权限,用户组权限更改为x chmod ug=x by-id 5.使该目录下所有文件并包括该文件权限为rwx chmod

8210

Linux内存管理

本篇介绍 本篇介绍下Linux内存管理,用系统角度看内存的寻址和分配机制。 内容介绍 内存管理应该是系统中最难的模块之一了,而且历史也悠久,就先来简单回顾下。...分页机制可以完全避免内存碎片问题么? 公布下答案: 的确有分页机制就可以完全不需要分段机制,目前linux是在分段的基础上实现了分页,这个也有考虑到是兼容性问题。...; /* for /proc/PID/auxv */ struct percpu_counter rss_stat[NR_MM_COUNTERS]; struct linux_binfmt...接下来可以再看看malloc的操作: image.png mmap和munmap操作 mmap也是一种内存分配方法,通过创建文件映射的形式来访问内存,如果是指定fd,那就是文件映射,直接将用户空间地址和文件某个区间对应起来...mmap流程如下: image.png 缺页异常 linux 是在不得不使用物理内存的时候才会分配物理内存。这句话该怎么理解呢?

13.6K51

查看 Linux 系统中进程和用户内存使用情况

有许多工具可以查看 Linux 系统中的内存使用情况。一些命令被广泛使用,比如 free、ps。而另一些命令允许通过多种方式展示系统的性能统计信息,比如 top。...在这篇文章中,我们将介绍一些命令以帮助你确定当前占用着最多内存资源的用户或者进程。...$ alias mem-by-proc="ps aux | head -1; ps aux | sort -rnk 4" 下面是一些根据用户查看内存使用情况的命令: 按用户查看内存使用情况 使用 top...按照用户检查内存使用情况会更复杂一些,因为你需要找到一种方法把用户所拥有的所有进程统计为单一的内存使用量。...我们对每个任务使用 awk 命令以收集每个用户总的内存使用情况。在最后一步中,我们展示每个用户总的内存使用量(按照从大到小的顺序)。 #!

3.6K20

查看 Linux 系统中进程和用户内存使用情况

有许多工具可以查看 Linux 系统中的内存使用情况。一些命令被广泛使用,比如 free、ps。而另一些命令允许通过多种方式展示系统的性能统计信息,比如 top。...在这篇文章中,我们将介绍一些命令以帮助你确定当前占用着最多内存资源的用户或者进程。...$ alias mem-by-proc="ps aux | head -1; ps aux | sort -rnk 4" 下面是一些根据用户查看内存使用情况的命令: 按用户查看内存使用情况 使用 top...按照用户检查内存使用情况会更复杂一些,因为你需要找到一种方法把用户所拥有的所有进程统计为单一的内存使用量。...我们对每个任务使用 awk 命令以收集每个用户总的内存使用情况。在最后一步中,我们展示每个用户总的内存使用量(按照从大到小的顺序)。 #!

5.4K10

Linux 内存管理

操作系统内存管理包括物理内存管理和虚拟内存管理:       我们这篇主要介绍Linux的虚拟内存管理。...栈区是从高地址位向低地址位增长的,是一块连续的内在区域,最大容量是由系统预先定义好的,申请的栈空间超过这个界限时会提示溢出,用户能从栈中获取的空间较小。  ...四.虚拟地址管理 ---- 每个用户进程都可以有4 GB的虚存空 间....把页装入物理内存。   ·   五.swap对换空间 ----      32位Linux系统的每个进程可以有4 GB的虚拟 内存空间 ....例如:32位Linux的每个用户进程都可以访问4GB的线性地址空间, 而实际的物理内存可能远远少于4GB. 采用分页机制 ,Linux仅把可执行映像的一小部分装入物理内存

7.5K10

Linux内存修改

虚拟内存是为了满足物理内存不足采用的策略,利用磁盘空间虚拟出一块逻辑内存,用作虚拟内存的空间也就是交换分区。...作为物理内存的扩展,Linux会在物理内存不足时,使用交换分区的逻辑内存,内核会把暂时不用的内存块信息写到交换空间,这样物理内存就得到了释放,这块儿内存就可以用于其他目的,而需要用到这些内容的时候,这些信息就会被重新从交换分区读入物理内存...Linux内存管理采用的是分页存取机制,为了保证物理内存得到充分的利用,内核会在适当的时间把物理内存中不经常使用的数据块儿自动交换到虚拟内存中,而将充分使用的信息保留到物理内存中。...例如通过阿里云安装的系统,不会自动给我们分配Swap虚拟内存空间;Swap分区或虚拟内存文件,是在系统物理内存不够用的时候,由系统内存管理程序将那些很长时间没有操作内存数据,临时保存到Swap分区虚拟内存文件中...当那些程序要再次重新运行时,会再从Swap分区或虚拟内存文件中恢复之前保存的数据到内存中。

13.3K41

LinuxLinux用户用户组那些事

Hello,各位小伙伴周六早上好~ 今天也是元气满满,努力工作的一天呢~ 还是跟我一起看看今天分享的专题吧~ 今天呢,小编准备跟大家一起分享一下Linux下的用户用户组是怎么一回事。...会发现每一个进程都有一个相关联的用户,这些用户是干嘛的呢? 抛开进程不说 ,系统上的所有文件也都有所属的用户,和用户组。用户能否访问文件正是由文件的所属用户用户组的权限决定。...明白了用户是干嘛的,接下来我们就正式开始吧~ Part.2 用户用户组 1、用户基本说明 首先我们来看一张图: ? 用户分为超级用户(Superuser)root 以及其他普通用户。...处于相同用户组(Group)的一群用户,拥有相同的用户组权限。 前面提到文件既有所属用户,也有所属用户组。...2、创建用户基本操作 好啦,原理说清楚了,我们来看看用户用户组的一系列基本操作吧~ (1)id 查看用户信息 ? id查看当前登陆用户信息,也可以加上用户名查看特定用户信息。

10.8K20

Linux | 用户管理

1.用户的分类: ---- Linux是一个多用户操作系统,任何一个想要使用系统资源的用户,必须先向管理员申请账号,再以申请的账号进入系统。...用户UID为0,一般是0-999范围 普通用户: 只能访问他们所拥有的或者有相应权限执行的文件 用户UID为1000以后,可被超级用户指定UID 2.用户属性: ---- 所有用户的属性都分别存在一些系统文件内例如.../etc/passwd/etc/shadow /etc/group 2.1显示属性: Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性: 显示用户属性...2.2 账户介绍: Linux中/etc/shadow中的记录行与/etc/passwd中的一一对应,但只有超级用户才拥有该文件读权限,这就保证了用户密码的安全性 用户密码文件: head /etc/...shadow[此命令只有超级管理员可查看] image-1648691426003 用户:密码:用户UID: 2.3 组群 Linux中群组是对一个用户或者多个用户的分组控制管理,有效避免越权行为。

6.6K10
领券