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

Linux进程内存管理(二)

简单记录一下内存管理器的基本原理。这里就不深入代码内部了。 内存管理器的初始化 进程启动后,在 jemalloc 载入的时候会调用 jemalloc_constructor 执行一些初始化操作。...arena : 将内存切分成多个类别的固定大小,采用内存池的方式对内存区域进行管理,降低内存碎片。 system memory : 其实就是内核管理内存区域。...相关系统调用 接下来,介绍一下内存分配器相关的系统调用: brk/sbrk mmap 在介绍这几个系统调用之前,需要先对进程内存布局有所认识。 ?...64位进程内存布局 上图是一个 Linux 64位进程的地址空间布局的简图,jemalloc 能管理的就是 Heap 和 Memory map 两块的内存。 Text,存储程序的二进制代码。...参考文档 jemalloc Linux manpage jemalloc源码解析-内存管理

2.9K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux进程内存管理

    mm_struct结构描述了一个进程的整个虚拟地址空间,vm_area_truct描述了虚拟地址空间的一个区间(简称虚拟区)。...下图就是我们所说的由task_struct到mm_struct,进程的地址空间的分布。 ? 每一个进程都会有自己独立的mm_struct,这样每一个进程都会有自己独立的地址空间,这样才能互不干扰。...当进程之间的地址空间被共享的时候,我们可以理解为这个时候是多个进程使用一份地址空间,这就是线程。...arg_start,结束arg_end,环境段的开始env_start,结束env_end unsigned long saved_auxv[AT_VECTOR_SIZE]; struct linux_binfmt...vm_area_struct 数据结构来管理,包括虚拟内存的起始和结束地址,以及内存的访问权限等,通常命名为vma;vm_area_struct 数据结构的定义如下: ?

    3.3K21

    Linux用户态进程内存管理

    上一篇我们了解了内存在内核态是如何管理的,本篇文章我们一起来看下内存在用户态的使用情况,如果上一篇文章说是内核驱动工程师经常面对的内存管理问题,那本篇就是应用工程师常面对的问题。...下面闲话少说,开始本篇的内容——进程内存消耗和泄漏 进程的虚拟地址空间VMA(Virtual Memory Area) 在linux操作系统中,每个进程都通过一个task_struct的结构体描叙,每个进程的地址空间都通过一个...如,执行代码段时会发生缺页,Linux申请1页内存,并从硬盘读取出代码段,此时产生了IO操作,为major主缺页。...如,执行代码段时会发生缺页,Linux申请1页内存,并从硬盘读取出代码段,此时产生了IO操作,为major主缺页。 ?...这里我们用工具 procrank先来看下Linux进程内存占用量 。 ?

    2.9K30

    Linux用户态进程内存管理

    上一篇我们了解了内存在内核态是如何管理的,本篇文章我们一起来看下内存在用户态的使用情况,如果上一篇文章说是内核驱动工程师经常面对的内存管理问题,那本篇就是应用工程师常面对的问题。...下面闲话少说,开始本篇的内容——进程内存消耗和泄漏 进程的虚拟地址空间VMA(Virtual Memory Area) 在linux操作系统中,每个进程都通过一个task_struct的结构体描叙,每个进程的地址空间都通过一个...如,执行代码段时会发生缺页,Linux申请1页内存,并从硬盘读取出代码段,此时产生了IO操作,为major主缺页。...这里我们用工具 procrank先来看下Linux进程内存占用量 。 ?...一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS 推荐阅读: CPU是如何访问内存的? 物理地址和虚拟地址的分布 Linux内核内存管理算法Buddy和Slab

    2.8K41

    进程内存管理初探

    随着cpu技术发展,现在大部分移动设备、PC、服务器都已经使用上64bit的CPU,但是关于Linux内核的虚拟内存管理,还停留在历史的用户态与内核态虚拟内存3:1的观念中,导致在解决一些内存问题时存在误解...进程在访问虚拟地址空间的任意合法地址时,都要按照逻辑地址->线性地址->物理地址的顺序换算才能找到对应的物理地址;由于段式内存管理存在性能、访问效率的问题,以及Linux要兼容各种CPU,在Linux内核中所有的用户态进程使用的同一个段...Linux系统采用延迟分配物理内存的策略,用户态进程每次分配内存时分配的都是虚拟内存,表示一段地址空间已经分配出来供进程使用;当进程第一次访问虚拟地址时,才会发现虚拟地址没有对应的物理内存,系统默认会触发缺页异常...分配内存的系统调用 在Linux系统中,虚拟内存和物理内存都是由kernel管理的,当进程需要分配内存时,都需要通过系统调用陷入到内核空间分配,再虚拟内存起始地址返回到用户态;内核提供了多个系统调用来分配虚拟内存...进程分配内存核心函数 本节介绍brk、mmap、munmap函数的实现所用到的几个核心函数。 几个关键的数据结构 在介绍进程如何分配到虚拟内存之前,先了解几个进程内存管理相关的数据结构。

    2.4K71

    Linux进程管理

    前言 只有光头才能变强 回顾前面: 看完这篇Linux基本的操作就会了 Linux用户和权限管理看了你就会用啦 这篇主要讲解在Linux进程管理。...为了区分每一个运行的程序,Linux给每个进程都做了标识,称为进程号(process ID),每个进程进程号是唯一的。...运行后台进程的方法是在命令行最后加上 “&” 进程和作业的区别: 进程:操作系统的概念,由操作系统负责管理 作业:shell程序的概念,由shell程序负责管理 一个操作系统可以启动多个shell程序,...pid -9 free:查看内存使用状况 top :查看实时刷新的系统进程信息 进程调度的优先权nice命令: 进程运行后调整优先级:renice命令。...四、总结 本文主要是总结了Linux下操作进程和自动化任务知识~~~这两个知识点在Linux下也是很重要的,是学习Linux的基础~ 继续完善上一次的思维导图: ?

    6.8K00

    Linux进程内存管理之缺页异常

    通过《Linux进程内存管理之malloc和mmap》我们知道,这两个函数只是建立了进程的vma,但还没有建立虚拟地址和物理地址的映射关系。...当进程访问这些还没建立映射关系的虚拟地址时,处理器会自动触发缺页异常。 ARM64把异常分为同步异常和异步异常,通常异步异常指的是中断(可看《上帝视角看中断》),同步异常指的是异常。...由于内存和磁盘的读写性能差异较大,Linux会在内存充裕时将空闲内存当作swap cache,用来缓存磁盘数据,以提高I/O性能。相对的在内存紧张时Linux会将这些缓存回收,将脏页回写到磁盘中。...内核中使用swap_info_struct结构体来管理swap分区,一个swap_info_struct对应一个swap分区。...换入操作结束后,对应swap area的页引用减1,当减少到0时,代表没有任何进程引用了该页,可以进行回收。

    2.6K42

    linux进程管理

    一.基本介绍 1.在 LINUX 中,每个执行的程序(代码)都称为一个进程。...每一个进程都分配一个 ID 号 2.每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程 3.每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。...进程名称 #停止所有相同的进程名称 四.ps指令详解 BSD风格 详解 user 用户名称 pid 进程号 %cpu 进程占用cpu百分比 %%mem 进程占用物理内存的百分比 vsz...进程占用虚拟内存的大小 rss 进程占用物理内存的大小 tty 终端名称(后台则为?)...监听指定进程 交互操作: P 以cpu使用率排序,默认就这个 M 以内存使用率排序 N 以pid排序 u 监听具体用户 k 终止指定进程 q 退出top

    8K10

    Linux进程管理

    进程的概念 Linux系统中进程的类型 分为三种不同的类型,分别是: 交互进程:由一个启动的进程,交互进程既可以在前台运行,也可以后台运行。...批处理进程:不与特定的终端相关联,提交到等待队列中顺序执行的进程。 守护进程:在Linux在启动时初始化,需要时运行于后台的进程。...进程的启动方式 手工启动:1、前台启动  2、后台启动 调度启动:事先进行设置,根据用户要求自行启动 查看系统中的进程 ps命令:Process Status ps命令的使用参见ps命令和每天一个linux...top命令 - display Linux tasks top命令的使用参见top命令和每天一个linux命令:top命令 top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具...,类似于Windows的任务管理 命令格式 top [参数] 命令功能 显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等 命令参数 使用实例 控制系统中的进程 了解守护进程

    1.7K20

    Linux进程管理

    占用率 %MEM:实际内存占用率 VSZ:进程占用虚拟内存大小,单位KB RSS:进程占用物理内存大小,单位KB TTY:从哪个终端启动 STAT:目前进程所处的状态属性 START:进程开始运行时间...:正处于中断休眠状态的进程,该进程可能是在等某个中断消息 T:已停止工作的进程,因其被跟踪所以存在 X:已经死亡的进程,通常不会看到这类进程 Z:已经僵死的进程,通常不会看到这类进程 <:高优先级进程...N:低优先级进程 s:会话的管理者 +:进程会使用前台的终端 l:多线程进程 2....实时显示进程命令 top # top 几个新字段: PR:进程的优先级 NI:该进程的优先级值 VIRT:进程使用的虚拟内存总量 RES:进程使用的物理内存总量 SHR:进程使用的共享内存大小 按H键查看帮助信息...按P键按CPU使用率排序 按M键按内存占用率排序 4.

    2.5K10

    linux 进程管理

    一、进程介绍 在说进程如何管理之前我们要涉及到进程的一些相关概念 什么是进程进程(Process)是一个程序在其自身的虚拟地址空间中的一次执行活动。...进程的属性 ​ 在Linux系统中总是有很多进程同时在运行,每一个进程都有一个识别号,叫做PID(Process ID),用以区分不同的进程。...在linux中,我们可以通过fg、bg、jobs、kill等来对工作进行管理和调度,这些工作都是我们手动执行的,而那些由系统开启的工作该如何管理呢?...管理这些后台工作我们可以使用两种命令ps和top [root@zutuanxue ~]# ps #静态进程管理命令,可以帮助我们查看到ps命令在执行那一刻后台进程的状态 -A 所有进程,等同于-...,那么后台的进程该如何管理呢?

    2.2K30

    Linux 进程管理

    多用户是指多个用户可以在同一时间使用同一个linux系统;多任务是指在Linux下可以同时执行多个任务,更详细的说,linux采用了分时管理的方法,所有的任务都放在一个队列中,操作系统根据每个任务的优先级为每个任务分配合适的时间片...进程分类 按照进程的功能和运行的程序分类,进程可划分为两大类:  系统进程:可以执行内存资源分配和进程切换等管理工作;而且,该进程的运行不受用户的干预,即使是root用户也不能干预系统进程的运行...Linux进程的结构 Linux中一个进程内存里有三部分数据,就是“数据段”、“堆栈段”和“代码段”。...Linux进程树 他们的关系是管理和被管理的关系,当父进程终止时,子进程也随之而终止。但子进程终止,父进程并不一定终止。...父进程和子进程的关系是管理和被管理的关系,当父进程终止时,子进程也随之而终止。但子进程终止,父进程并不一定终止。

    4.2K10

    Linux进程管理

    Linux 进程管理 1、进程管理介绍 1.1 什么是进程进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。...1. 5进程管理的作用 判断服务器健康状态:运维工程师最主要的工作就是保证服务器安全稳定的运行。...进程管理最主要的工作就是判断服务器当前运行是否健康,是否需要人为干预。如果服务器的 CPU 占用率、内存占用率过高,就需要人为介入解决问题了。...生成信号的事件可以是错误或外部事件(如I/O请求或计时器过期),或者来自于明确请求(如使用信号发送命令) 下表列出了系统管理员用于日常进程管理的基本信号。...Linux通过预期服务等待时间的表示来实施平均负载计算。 Linux不仅计算进程数,也作为独立的任务计算线程数。运行中线程和等待I/O资源的线程的CPU请求队列对应于R和D进程状态。

    4.9K41

    Linux进程管理

    Linux进程管理是系统管理中的一个重要部分,它可以帮助管理员了解和控制系统中运行的所有进程。本文将详细介绍Linux进程管理的相关知识,并提供示例来演示如何管理进程。 什么是进程?...Linux进程状态 在Linux中,每个进程都有一个状态,这个状态指示了进程当前的状态。Linux进程状态可以分为以下几类: 运行状态(R):表示进程正在运行。...停滞状态(T):表示进程已经停止运行,例如进程被发送了一个停止信号,但是进程还没有完全终止。 常用Linux进程管理命令 在Linux中,有很多命令可以用来管理进程。...以下是一些常用的Linux进程管理命令: ps:显示当前系统中运行的所有进程。 kill:发送信号给一个进程,可以用来终止或修改进程的状态。 top:实时显示系统中运行的进程和系统资源的使用情况。...示例 以下是一些示例,演示如何使用常用的Linux进程管理命令: 查看所有正在运行的进程: ps -ef 查找名为httpd的进程的PID: pidof httpd 终止PID为123的进程: kill

    2.7K00

    Linux 进程管理

    本篇介绍 本篇介绍下Linux进程管理相关的内容,包括进程状态,切换等。...sched_rt_entity rt; struct sched_dl_entity dl; const struct sched_class *sched_class; // 内存相关...根据static_prio和调度策略计算出来的优先级 unsigned int rt_priority;// 实时进程的优先级 调度策略 目前Linux内核中默认实现了5个调度类...的用处了,也就是swtich_to之所以需要第三个参数,是因为需要知道切换到当前进程的前一个进程信息,而前一个进程又不一定是当前切换的目标进程,因此就需要用第三个参数传递。...多核调度 SMP结构的多核处理器比较常见,结构如下: image.png linux使用sched_domain数据结构描述调度层级,使用sched_group描述调度组,调度组是负载均衡调度的最小单位

    10.2K30

    Linux 进程管理

    1.1 什么是进程进程是 UNIX/Linux 用来表示正在运行的程序的一种抽象概念,所有系统上面运行的的数据都会以进程的形态存在。...1.2 进程的组成部分 一个进程由一个地址空间和内核内部的一组数据公同组成,地址空间是由内核标记出来供进程使用的一组内存页面(页面是管理内存的单位,页面大小通常是 1KB 或 8KB)。...Linux 有三个特殊进程,idle 进程(PID=0),init 进程(PID=1),kthreadd(PID=2)。...init 进程 Linux 的所有进程都是有 init 进程创建并运行的。首先 Linux 内核启动,然后在用户空间中启动 init 进程,再启动其他系统进程。...参考文献 《鸟哥的Linux私房菜》 《Linux系统管理技术手册》 极客时间《趣谈Linux操作系统》

    7K31

    Linux 内存管理

    操作系统内存管理包括物理内存管理和虚拟内存管理:       我们这篇主要介绍Linux的虚拟内存管理。...物理内存管理在另外一篇:《操作系统内存管理(思维导图详解)》       1、程序的进程内存的数据结构  一.Linux 进程内存数据结构 ---- 1、存储(没有调入内存)阶段:       可以看到一个可执行程序在存储...并且提供段 内分页管理机制 .   为 Linux虚拟内存管理机制提供了支持 。        ...六.分页机制管理 ----          Linux使用分页管理机制来更加有效地利用物理内存.当创建一个进程时.仅仅把当前进程的一小部分真正装入内 存.其余部分需要访问时.处理器产生一个页故障.由缺页中断服务程序根据缺页虚拟地址和出错码调用写拷贝函数...例如:32位Linux的每个用户进程都可以访问4GB的线性地址空间, 而实际的物理内存可能远远少于4GB. 采用分页机制 ,Linux仅把可执行映像的一小部分装入物理内存

    7.7K10

    Linux 内核 内存管理内存管理系统调用 ⑤ ( 代码示例 | 多进程共享 mmap 内存映射示例 )

    文章目录 一、进程一描述 二、进程二描述 三、mmap 进程共享内存展示 一、进程一描述 ---- 在上一篇博客 【Linux 内核 内存管理内存管理系统调用 ④ ( 代码示例 | mmap 创建内存映射...| munmap 删除内存映射 ) 中 , 完成了 进程一 的程序 , 在该进程中 , 创建并打开文件 , 为该文件设置大小 , 使用 mmap 创建 " 文件映射 " , 并通过直接访问内存的方式...; 二、进程二描述 ---- 进程二 的源码 , 与上一篇博客 【Linux 内核 内存管理内存管理系统调用 ④ ( 代码示例 | mmap 创建内存映射 | munmap 删除内存映射 ) 中 进程一..., 该内存页的内容可以 读取 写入 // MAP_SHARED : 指定映射关系 , 指的是该映射是进程的共享内存空间 // fd : 文件描述符 , 被映射的文件 //...mmap_demo_02.c 文件中 , 执行 gcc mmap_demo_02.c -o mmap_demo_02 命令 , 编译该源码 , 编译出的可执行文件为 mmap_demo_02 ; 三、mmap 进程共享内存展示

    3.6K30
    领券