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

Linux内存管理--基本概念

Linux物理内存三级架构 对于内存管理,Linux采用了与具体体系架构不相关的设计模型,实现了良好的可伸缩性。它主要由内存节点node、内存区域zone和物理页框page三级架构组成。...• 内存节点node 内存节点node是计算机系统中对物理内存的一种描述方法,一个总线主设备访问位于同一个节点中的任意内存单元所花的代价相同,而访问任意两个不同节点中的内存单元所花的代价不同...Linux内核中使用数据结构pg_data_t来表示内存节点node。如常用的ARM架构为UMA架构。...又如,由于Linux内核采用 • 物理页框page 2....Linux虚拟内存三级页表 Linux虚拟内存三级管理由以下三级组成: • PGD: Page Global Directory (页目录) • PMD: Page Middle

1.6K90

Linux】--- Linux权限概念

二、Linux权限的概念 2.1 什么是权限 现实生活中权限的例子,即vip,门禁…。其作用就是,通过一定的条件,拦住一部分人,给另一部分人权力,来访问某种资源。...2.3 Linux中的用户 Linux下有两种用户:超级管理员(root)、普通用户。 超级管理员(root):可以再linux系统下做任何事情,不受权限约束 普通用户:在linux下做有限的事情。...Linux具有组的概念,主要是在多人协作的时候,更好的进行权限管理!...而在Linux中不通过后缀区分文件类型!但并不是说Linux不用后缀。 那通过什么区分呢?即ls -l第一个属性列。 Linux文件类型: -:普通文件。...这时就引入新的概念,粘滞位。当一个目录被设置为“粘滞位”(使用chmod +t filename指令),则该目录下的文件只能由:1. 超级管理员(root)删除;2.

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

3.1.1内存管理的概念

内存管理是操作系统设计中最重要和最复杂的内容之一,虽然 计算机硬件一直在飞速发展,内存 容量也在 不断增长,但是仍然不可能将用户进程所需要的全部程序和数据放入主存中,所以操作系统必须将内存空间进行合理地划分和有效地动态分配...操作系统对内存的划分和动态分配就是内存管理的概念。 有效的内存管理在多道程序设计中非常重要,不仅方便用户使用存储器,提高内存利用率,还可以通过虚拟技术从逻辑上扩充存储器。...内存的装入模块在装入内存时,同样有以下 三种方式: 1)绝对装入。在编译时,如果知道程序将驻留在内存的某个位置,编译程序将产生绝对地址的目标代码。...静态重定位的特点是在一个程序装入内存时,必须分配其要求的全部内存空间,如果没有足够的内存,就不能装入该作业。此外,作业一旦进入内存后,在整个运行期间不能在内存中移动,也不能再申请内存空间。...3.内存保护 内存分配前,需要保护操作系统不受用户进程的影响,同时保护用户进程不受其他用户进程的影响。

41510

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

e=56 所以, 低端内核和高端内存是内核的概念, 跟应用程序没有直接关系. 如果Linux物理内存小于1G的空间,通常内核把物理内存与其地址空间做了线性映射,也就是一一映射,这样可以提高访问速度。...一般 128M给高端内存分配用, 因为很少, 所以不用要赶紧释放掉 64bit的时候, 就不存在低端内存和高端内存概念了, 因为空间很大都可以直接管理了. 1.5 例子 区域 大小 MemTotal...ZONE_HIGHMEM即为高端内存,这就是内存高端内存概念的由来。...引入高端内存映射这样一个概念的主要原因就是我们所安装的内存大于1G时,内核的1G线性地址空间无法建立一个完全的直接映射来触及整个物理内存空间,而对于80x86开启PAE的情况下,允许的最大物理内存可达到...__free_pages(page,order); __free_pages(addr,order); 5 常见问题 5.1 用户空间(进程)是否有高端内存概念? 用户进程没有高端内存概念

12.2K22

Linux线程概念

即在完整的进程中,进程包括:若干个执行流,虚拟地址空间,页表,以及存在物理内存中属于该进程的数据和代码。 我们透过进程虚拟地址空间,可以看到进程的大部分资源,将进程资源合理分配给每个执行流。...线程的概念 首先我们得知道一件事:在Linux中,没有专门为线程设计的TCB,而是使用进程的PCB来模拟线程。...在教科书上面,对线程的概念是:在进程内部运行的一个执行流,属于进程的一部分,粒度要比进程更加细和轻量化。 我们可以对这句话进行解析:在进程内部运行,即线程在地址空间中运行。...看待Linux线程和接口: Linux进程是轻量级的进程,在进程中,OS创建线程,CPU调度线程。...I/O密集型应用典型的有网络下载,云盘,ssh,在线直播,看 影等等,主要使用的是内存和外设的I/O资源。 CPU+IO密集型应用:网络游戏等。

2.4K40

Linux进程概念

进程的概念 进程(Process)是计算机中的一个具有独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。...它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。...简单点说,进程就是一个运行起来(加载到内存)的程序 --> 进程在内存中的程序 --> 进程 PCB(process control block)的引入 进程信息被放在一个叫做进程控制块的数据结构中,可以理解为...在Linux中描述进程的结构体叫做 task_struct。 task_struct 是Linux内核的一种数据结构,它会被装载到 RAM(内存) 里并且包含着进程的信息。...内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针 上下文数据: 进程执行时处理器的寄存器中的数据[休学例子,要加图CPU,寄存器]。

45330

Linux 内核 内存管理】内存映射原理 ② ( 内存映射概念 | 文件映射 | 匿名映射 | 内存映射原理 | 分配虚拟内存页 | 产生缺页异常 | 分配物理内存页 | 共享内存 | 进程内存 )

文章目录 一、内存映射概念 二、内存映射原理 1、分配虚拟内存页 2、产生缺页异常 3、分配物理内存页 三、共享内存 四、进程内存段的内存映射类型 一、内存映射概念 ---- 内存映射 概念 : "...内存映射 “ 就是在 进程的 ” 用户虚拟地址空间 " 中 , 创建一个 映射 , " 内存映射 " 有 2 种情况 , ① 文件映射 , ② 匿名映射 ; 文件映射 : 有 文件 支持 的 内存映射..." 物理内存空间 “ 映射到 ” 虚拟内存空间 " , 其中的数据是随机值 ; 二、内存映射原理 ---- 1、分配虚拟内存页 分配 虚拟内存页 : 在 Linux 系统中 创建 " 内存映射 “ 时..., 会在 ” 用户虚拟地址空间 “ 中 , 分配一块 ” 虚拟内存区域 " ; 2、产生缺页异常 缺页异常 : Linux 内核在分配 " 物理内存 “ 时 , 采用了 ” 延迟策略 “ , 即进程第一次访问..., 并且在 " 页表 “ 中 , 将 ” 虚拟内存页 " 映射到 ” 物理内存页 " ; 三、共享内存 ---- 内存映射 与 共享内存 关系 : 文件映射 : 在进程间的 " 共享内存 " 就是使用

8.2K20

Linux - Linux内存管理

文章目录 概念 物理内存和虚拟内存 内存的监控 从内核的角度来查看内存的状态 从应用层的角度来看系统内存的使用状态 缓冲区(buffer)与缓存(cache)的异同 交换空间的使用 创建交换空间 激活和使用交换空间...移除交换空间 ---- 概念 内存管理是Linux系统重要的组成部分。...为了解决内存紧缺的问题,Linux引入了虚拟内存概念。为了解决快速存取,引入了缓存机制、交换机制等。...---- 物理内存和虚拟内存 直接从物理内存读写数据要比从硬盘读写数据要快得多,因此,我们希望所有数据的读取和写入都在内存中完成,而内存是有限的,这样就引出了物理内存与虚拟内存概念。...要深入了解Linux内存运行机制,需要知道下面提到的几个方面。 首先,Linux系统会不时地进行页面交换操作,以保持尽可能多的空闲物理内存

52.1K41

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

CPU访问本地内存的速度比访问远程内存的速度要快 Linux适用于各种不同的体系结构, 而不同体系结构在内存管理方面的差别很大....因此linux内核需要用一种体系结构无关的方式来表示内存....因此linux内核把物理内存按照CPU节点划分为不同的node, 每个node作为某个cpu结点的本地内存, 而作为其他CPU节点的远程内存, 而UMA结构下, 则任务系统中只存在一个内存node, 这样对于...UMA结构来说, 内核把内存当成只有一个内存node节点的伪NUMA 1.2 内存结点的概念 CPU被划分为多个节点(node), 内存则被分簇, 每个CPU对应一个本地物理内存, 即一个CPU-node...-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对应一个本地物理内存, 即一个...内存中的每个节点都是由pg_data_t描述,而pg_data_t由struct pglist_data定义而来, 该数据结构定义在include/linux/mmzone.h, line 615, 每个结点关联到系统中的一个处理器...简单来说, 页是一个数据块, 可以存放在任何页框(内存中)或者磁盘(被交换至交换分区)中 我们今天就来详细讲解一下linux下物理页帧的描述 2 页帧 内核把物理页作为内存管理的基本单位....地址空间是一个非常一般的概念. 例如, 可以用在向内存读取文件时....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内存管理(三)

因此相对于任何一个CPU访问本地内存的速度比访问远程内存的速度要快, 而Linux为了兼容NUMAJ结构, 把物理内存相依照CPU的不同node分成簇, 一个CPU-node对应一个本地内存pgdata_t..., 我们会在后面典型架构(x86)上内存区域划分详细讲解x86_32上的内存区域划分 因此Linux内核对不同区域的内存需要采用不同的管理方式和映射方式, 因此内核将物理地址或者成用zone_t表示的不同地址区域...Linux使用enum zone_type来标记内核所支持的所有内存区域 3.1 内存区域类型zone_type zone_type结构定义在include/linux/mmzone.h, 其基本信息如下所示...位系统中, Linux内核虚拟地址空间只有1G, 而0~895M这个986MB被用于DMA和直接映射, 剩余的物理内存被成为高端内存....Linux必须处理如下两种硬件存在缺陷而引起的内存寻址问题: 一些硬件只能用某些特定的内存地址来执行DMA 一些体系结构其内存的物理寻址范围比虚拟寻址范围大的多。

9K31

Linux内存管理

本篇介绍 本篇介绍下Linux内存管理,用系统角度看内存的寻址和分配机制。 内容介绍 内存管理应该是系统中最难的模块之一了,而且历史也悠久,就先来简单回顾下。...分页机制可以完全避免内存碎片问题么? 公布下答案: 的确有分页机制就可以完全不需要分段机制,目前linux是在分段的基础上实现了分页,这个也有考虑到是兼容性问题。...; /* for /proc/PID/auxv */ struct percpu_counter rss_stat[NR_MM_COUNTERS]; struct linux_binfmt...mmap流程如下: image.png 缺页异常 linux 是在不得不使用物理内存的时候才会分配物理内存。这句话该怎么理解呢?...因此看到物理可用内存不足并不表示需要换物理内存条了。

13.6K51

Linux进程概念(二)

Linux进程概念 进程状态 普通操作系统层面理解 运行与阻塞 挂起与阻塞 Linux是怎么做的 孤儿进程 进程优先级 什么是优先级 如何改变优先级 其他概念 进程状态 进程状态分有: 运行 新建...挂起与阻塞 现在内存中有一堆的进程,假如说有很多的进程再外设队列,但是现在的内存满了,这应该怎么办呢?...比如: 在Linux下,一个进程很大的数据,正在写入磁盘中,但是内存是有限的,如果内存满了,操作系统就会找到这个进程并且干掉他,那么数据就很容易丢失,这个时候就出现了深度睡眠,操作系统看到不会管他,除非这个进程运行完毕自己醒来或者是断电...Linux优先级的特点:本质就是PCB的几个整数而已。...其他概念 竞争性: 系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高效完成任务,更合理竞争相关资源,便具有了优先级。

1.1K00

Linux进程概念(一)

Linux进程概念 冯诺依曼体系结构 操作系统 操作系统是什么 操作系统与硬件的关系 操作系统如何管理硬件数据 操作系统与软件的关系 操作系统的安全 操作系统的服务 系统调用和库函数概念 进程的基本概念...是内存内存有一个坏处就是掉电易失,并且不能永久存储内部的数据,在玩一些单机游戏的时候都提示过如果不存档会丢失数据,这就是放在了内存里。...有一个概念叫做木桶原理,说:水桶里面能装多少水取决于最短的地方在哪里。 CPU也是同样的,如果从磁盘中拿数据读取运行,效率会非常慢,但是从内存中读取运行整体效率就提高了。...进程的基本概念 什么是进程 首先我们要知道,程序是在硬盘中的,想要运行这个程序就要放入内存中,然后通过CUP进行运作。 那么这么多程序加载进来怎么办呢?...因为如果bash进程亲自运行但是报错就会停止工作,bash都停止工作了,我们后续想继续用Linux系统就无法正常使用了。

41800

Linux系统-进程概念

Linux进程概念 零、前言 一、冯诺依曼体系结构 二、操作系统 三、进程 1、描述进程-PCB 2、查看进程 3、获取进程标示符 4、创建进程-fork() 5、进程状态 6、僵尸进程 7、孤儿进程...CPU,CPU得到结果再将数据写入内存,最后内存将数据刷新到网卡 朋友的电脑:输入设备网卡将数据写到内存内存再将数据给CPU,CPU得到结果再将数据写入内存,最后内存将数据刷新到显示器上 为什么运行程序必须先加载到内存...对于外设的输入输出效率会更慢,如果直接和CPU沟通会导致整个程序变得迟缓,所以由内存作为中间者和所有设备进行直接沟通 二、操作系统 概念: 任何计算机系统都包含一个基本的程序集合,称为操作系统...: 进程是程序的一个执行实例,从内核的角度上看进程是担当分配系统资源(CPU时间,内存)的实体 即进程=程序+内核的PCB 1、描述进程-PCB 概念: 进程信息被放在一个叫做进程控制块的数据结构中...,可以理解为进程属性的集合;在Linux中描述进程的结构体叫做task_struct Linux操作系统下的PCB是: task_struct-PCB的一种,task_struct是Linux内核的一种数据结构

1.1K20

Linux进程概念(三)

这样是可以的,但是非常不建议,因为这个程序相当于安装到了系统中,Linux下拷贝就是安装。...不过不用担心,重新登陆Linux就可以了,因为这是内存上的改变。 那么我们需要保留原来的并且再添加新的: 这样也不会影响原来的sl等。...在打开Linux的时候bash因为要处理用户的命令,这些命令也是程序,运行程序需要指定路径,所以操作系统就提前将这些指令的路径放在了专属的配置文件,在启动操作系统时将这个文件导入内存中形成一个内存级变量...首先来看看进程地址空间是什么原理: 在linux源码当中,地址空间是一个mm_struct的数据结构,大概是这样的 struct mm_struct { uint32_t code_start,code_end...程序在磁盘的时候是有地址的,逻辑地址(在linux当中也可以称为虚拟地址) 在进程指向进程地址空间的时候,CPU去读取指令,main函数,因为每一条指令都是有虚拟地址的,所以就能找到fun函数,还有a

52600

DPDK内存篇(一): 基本概念

请注意,虽然DPDK支持FreeBSD,而且也会有正在运行的Windows端口,但目前大多数与内存相关的功能仅适用于Linux*。...标准大页 现代CPU架构中,内存管理并不以单个字节进行,而是以页为单位,即虚拟和物理连续的内存块。这些内存块通常(但不是必须) 存储在RAM中。...对于NUMA来说,所有内存都是不同的:某一个CPU对一些内存的访问(如不在该CPU所属NUMA NODE上的内存)将比其他内存访问花费更长的时间,这是由于它们相对于执行所述内存访问的CPU所在的物理位置不同...内存分配和管理 DPDK不使用常规内存分配函数,如malloc()。相反,DPDK管理自己的内存。...也就是说,即使DPDK内存池的主题出现在几乎所有关于DPDK内存管理的讨论中,从技术上讲,内存池管理器是一个建立在常规DPDK内存分配器之上的库。

2K31
领券