内存 二、 Linux 内存地址空间 三、 Linux 内存分配算法 四、 内存使用场景 五、 内存使用那些坑 ---- Linux 内存是后台开发人员,需要深入了解的计算机资源。...合理的使用内存,有助于提升机器的性能和稳定性。本文主要介绍Linux 内存组织结构和页面布局,内存碎片产生原因和优化算法,Linux 内核几种内存管理的方法,内存使用场景以及内存使用的那些坑。...从内存的原理和结构,到内存的算法优化,再到使用场景,去探寻内存管理的机制和奥秘。 一、走进Linux 内存 1、内存是什么?...项目地址:https://github.com/YunaiV/ruoyi-vue-pro 二、 Linux 内存地址空间 1、Linux 内存地址空间 Linux 内存管理全貌 2、内存地址——用户态...它们是通过页表映射的 当它们移动到新的位置,页表项也会相应的更新 6、slab 算法——基本原理 基本概念 Linux 所使用的 slab 分配器的基础是 Jeff Bonwick 为 SunOS 操作系统首次引入的一种算法
文章目录 一、查看 Linux 操作系统位数 二、查看 Linux 操作系统软硬件信息 一、查看 Linux 操作系统位数 ---- 在 64 位的 Linux 中 , 使用 48 位 表示 "...虚拟地址空间 " ; 使用 45 位 表示 " 物理地址空间 " ; 执行 getconf LONG_BIT 命令 , 可以查看 Linux 操作系统 是 32 位还是 64 位的 ;...得到结果 64 , 说明该系统是 64 位 Ubuntu Linux 操作系统 ; 二、查看 Linux 操作系统软硬件信息 ---- 执行 cat /proc/cpuinfo 命令 , 可以查看..." Linux 内核位数 “ 和 ” 系统的软硬件信息 " ; 输出内容解析 : vendor_id : GenuineIntel CPU 制造商 GenuineIntel cpu family :...物理核心 在 CPU 中的编号 cpu cores : 1 逻辑核心 所在的 物理核心数 apicid : 0 区分不同的逻辑核心编号 , 该编号不一定连续 ; bogomips : 5807.99 Linux
今天给大家分享Linux虚拟内存相关的知识,希望的对大家能有所帮助! 1、虚拟内存 毋庸置疑,虚拟内存是操作系统中最重要的概念之一。我想主要是由于内存的重要”战略地位”。...Linux 提出 SWAP 的概念,Linux 中可以使用 SWAP 分区,在分配物理内存,但可用内存不足时,将暂时不用的内存数据先放到磁盘上,让有需要的进程先使用,等进程再需要使用这些数据时,再将这些数据加载到内存中...,通过这种”交换”技术,Linux 可以让进程使用更多的内存。...但 64位机器并没有 64位总线,而且其最大内存还要受限于操作系统,Linux 目前支持最大 256G 内存。...8.2 直接操作物理内存 操作系统使用了虚拟内存,我们想要直接操作内存该怎么办呢? Linux 会将各个设备都映射到 /dev/ 目录下的文件,我们可以通过这些设备文件直接操作硬件,内存也不例外。
逻辑地址 现代操作系统都采用的是逻辑地址,即我们在程序中定义的地址都是逻辑上的并不是真正的物理地址,原因是因为在多道程序中是不能确定到程序运行后的物理地址的,有可能被其他程序占用,有可能会动态的改变其地址...内存保护 为了安全,当程序装入到内存后,实际上每一个进程只能访问自己对应的地址空间范围,而不能访问其他程序的地址空间,所以操作系统实现方式如下。...,然后需要那些数据再加载到内存,而如果内存不够用,那么就将内存中的一部分进程唤出即挂起,然后将其对应的内存进行释放,此时就能够腾出内存使用,被挂起的进程的pcb依然在内存中,这是为了方便后面一旦使用到此程序的时候需要通过...8、内存的回收 在动态分配的时候进行内存回收的时候,如果存在相邻的空间,那么回收后需要进行合并 内存的记录 os如何知道那些内存没有被使用呢,可以通过两种方式。...根据时间局部性原理和空间局部性原理,一个指令如果当前时间被访问很有可能会被继续访问例如可能循环语句,而空间局部性则是如果一个相邻的地址被访问,那么相邻的地址很有可能马上会被访问,如数组,所以一般操作系统会在
一、内存管理概述 创建进程首先要将程序和数据装入内存中。...非连续的方式又分为两种: 分页存储管理; 基本分页存储管理方式:一次性的将所有的页面装入内存; 请求分页存储管理方式:动态的将页面装入内存中; 分段存储管理; 这是整个内存管理的重点,所以单独成章讲解...二、基本分页存储管理方式 1、基本概念 分页技术就是将整个内存分为很多个 块 ,同时也将进程分为很多个 块,然后将这些块一一对应的塞进内存里去就可以了。 那为什么叫分页而不叫分块呢?...当我们访问的页面不在内存中时,会发生 缺页中断 。...3、地址变换机构 请求分页的地址变换较为复杂,这里大致的叙述一下: 先查询快表中有没有,没有则查内存,如果内存中也没有就发生缺页中断,缺页中断处理完成之后会将一个新的页面调入内存中,这时还会将这条记录写进快表中
程序运行时必须提供对内存资源的最大申请量。 内存分配表与分区的分配、回收 用于固定分区管理的内存分配表是一张分区说明表,按顺序每个分区说明表中对应一个表目。...系统初次启动后,在内存中出操作系统区之外,其余空间为一个完整的大空闲区,当有程序要求装入内存运行时,系统从该空闲区中划分出一块与程序大小相同的区域进行分配。...解决碎片的办法:在适当时刻进行碎片整理,通过移动内存中的程序,把所有空闲碎片合成一个连续的大空闲区且放在内存的一端,而把所有程序占用区放在内存的另一端,称为“移动技术”或“紧凑技术”或“紧缩技术”。...提高内存的利用率,便于作业动态扩充内存。采用移动技术需要注意以下问题: 移动技术会增加系统的开销。增大了系统运行时间。 移动是由条件的,不是任何在内存中的作业都能随时移动。...通过分区管理,内存真正成了共享资源,有效地利用了处理机和I/O设备,从而提高了系统的吞吐量和缩短了周转时间。在内存利用率方面,可变分区的内存利用率比固定分区高。
3.连续分配内存 内存通常分为两个区域,分别驻留操作系统和用户进程。由于中断向量通常位于低内存,操作系统也放在低内存。...在可变分区方案里,系统中有一个表用来记录那些内存占用还是未占用。当有新进程需要内存时,为该内存寻找足够大的孔,从这个孔中为该进程分配所需的内存,孔内未分配的内存可为其他进程所用。...进程需要在内存中以便运行,不过进程可以暂时从内存中交换到备份存储,当需要再次执行时再调回到内存中。如果进程地址绑定方式是在汇编时或加载时所定的,他只得移到原来内存空间。...内存的分配是以帧为单位进行的,每个进程平均可有半个帧大小的内部碎片。 分页使用户视角的内存与实际物理内存想分离。用户无法访问其他用户程序占用的内存。...这可能消耗大量物理内存。为解决这个问题,可以使用反向页表。 6.分段 采用分页内存管理有一个不可避免的问题:用户视角的内存和实际内存的分离。
很多小伙伴对swap分区(内存数据换入换出)这个名词可能不陌生,有了这个技术,系统才能实现承载计算机内存总量的多进程运行。...操作系统会把暂时不用的内存数据写到磁盘等其他存储中,以此来释放更多的内存空间执行当前需要更多内存的进程。...但是换入换出过度频繁时虽然可能不发生进程申请不到内存而导致失败的问题,但却在一定程度上降低了进程执行的效率,毕竟内存与磁盘读写速度相差几个数量级,那么是否有其他技术能解决内存数据换入换出速度过慢的问题。...这就是本文要提到的内存压缩技术,为了节约内存资源,操作系统引入了内存压缩技术对内存数据进行压缩,内存压缩不是上来就直接进行的,因为虽然是纯内存操作,但是也涉及数据的压缩解压缩问题,也会占用CPU算力,所以内存充足的情况下一般不会进行内存压缩...上图展示的是linux系统用到的zswap内存压缩技术,如上图所示,zswap延迟了内存换入换出的频率,为换页过程提供了缓存区,从而可以通过批量操作磁盘来降低单次读写磁盘的低效问题。
引言 内存管理无疑是操作系统最重要的工作之一,本文我们就来详细介绍一下操作系统是如何管理内存的,分段、分页机制又是什么,线性地址、逻辑地址、物理地址、虚拟地址分别指的又是什么。 2....分页机制 一旦置位了 CPU 中 CR0 寄存器的最高位而启动了分页机制,我们得到的线性地址就需要通过 MMU(内存管理单元)进行分页机制才能转换成物理内存上的物理地址。...,让需求近于无限内存的软件可以在有限的内存环境下使用,于是有了将内存分块,并且将暂时不用的块放到磁盘上的分页机制,同时这个过程对于程序开发人员来说是完全透明的。...同时,二级页表每个表项也是 4 字节,共计 1024 个表项,所以也占用一个页面,即 4KB 内存,这样,总计可以寻址 102410244KB = 4GB 内存,恰好是 32 位操作系统的线性地址空间大小...,最终都必须要得到物理地址才能在物理内存上进行操作。
分页机制也是按需分配,这是操作系统的核心思想。...MMU访问页表是硬件实现的,但页表的创建和填充需要Linux内核来填充。通常,一级页表和二级页表存放在主存储器中。 内存管理总览 系统调用 Linux内核把用户空间分为两部分:用户空间和内核空间。...在用户空间分配的是虚拟内存,因此,在堆上分配的也是虚拟内存。 vm_area_struct Linux内核把这些地址称为进程地址空间。...之所以会发生这种情况,是因为Linux内核在给某个进程分配内存时,会比进程申请的内存多分配一些。...每个进程都有一个管理进程的数据结构,操作系统中叫做PCB,进程控制块,linux内核中就用task_struct描述进程控制块,task_struct内容非常多,后面我们会详细讲解,今天我们只关注mm成员
以下主要讲述进程到内存的映射 1.内存管理发展历程 1.1单进程DOS时代 DOS时代 - 同一时间只能有一个进程在运行,单进程 windows9x开始,多个进程可以装入内存 引发问题: 内存撑爆...1.2 内存管理 为了解决上面说的问题,引入现在的内存管理系统:使用虚拟地址、分页装入、软硬件结合寻址。...1.2.1 解决内存撑爆 将内存分页(内存不够用),内存中分成固定大小的页框(4K),把程序(硬盘上)分成4K大小的块,用到哪一块,加载那一块,加载的过程中,如果内存已经满了,会把最不常用的一块放到swap...在加载的过程中,如果内存已经满了,会把最不常用的一块放到swap分区(linux交换分区), 把最新的一块加载进来(LRU算法)。 ?...通过下图再深入了解 P1,P2,P3,P4 4个进程都认为自己是独占整个内核的,实际上是共享操作系统内核。 MMU给每一个进程分配他们的内存资源。
操作系统内存换出---15 有换入,就应该有换出!...上一节主要讲了内存的换入,那么有换入就必须要有换出。 要换出就需要考虑该将当前物理内存中那一部分数据换出,这就涉及到相关算法,就和进程的调度算法一样。...,并且请求调页的对内存的高效利用体现也就不明显了,甚至他额外带来的开销会更加影响系统运行。...如果此时内存中的没有空闲页了,那么就需要利用clock算法换出一个页到磁盘中去 (换出) 实现换入换出是为了支持虚拟内存,而实现虚拟内存是为了支持段页结合,实现段页是为了实现操作系统对内存的高效管理...操作系统高效管理了内存,就可以让程序载入进内存后可以执行起来,程序执行起来后就成为了一个进程。 因此,操作系统本质是以进程带动的,多进程推进的,同时内存有效工作的一张图
前言 内存管理是操作系统中经典的话题。小型嵌入式系统一次只需要执行一个任务,对内存管理没有要求。现代的操作系统通常要同时执行多个进程,多个进程所占用的内存之和通常超出物理内存的容量大小。...所以,现代操作系统的设计者就要想办法来调和系统的多任务同时运行、软件体积膨胀和有限的物理内存容量之间的冲突,想尽办法做到鱼和熊掌兼得。这就是本文所介绍的操作系统的内存管理。...本文所介绍的主要是: 操作系统为何实现物理内存的抽象? 操作系统如何给进程分配内存空间? 操作系统为何要引入虚拟内存这个概念? 操作系统的虚拟内存为什么以及如何进行分页?...操作系统的虚拟内存中常见的页面置换技术有哪些? 操作系统如何在内存紧张的时候通过交换(置换)合理的协调多个进程所占用的虚拟内存?...在动态分配内存时,操作系统必须对其进行管理,操作系统需要知道哪些内存在使用,哪些内存未使用(可以再次被分配)。
Linux操作系统概述 一、Linux起源 Linux创始人——林纳斯 · 托瓦兹 Linux 诞生于1991年,作者上大学期间实现的 Linux的特点:开源、免费、拥有最为庞大的源码贡献者 Linux...的吉祥物是企鹅(因为林纳斯小时候被企鹅咬过,印象深刻) 二、Linux 的含义 狭义:由Linus 编写的一段内核代码。...广义:广义上的Linux 是指由Linux内核衍生的各种Linux发行版本。 三、Linux发行版
Linux环境部署过程 1....OK 第三个历程: 配置网卡地址 OK 第四个历程: 进行分区操作 OK /boot 分区 == 系统启动文件数据 / 根分区 == C盘 swap 交换分区 == 在内存不够用临时将磁盘空间充当内存空间使用...第五个历程: 预装初始软件 ok 第六个历程: 设置管理员密码 123456 02. linux系统管理操作 1) 系统网络配置: 方式一: 图形界面配置: nmtui -- 地址 掩码...分钟之后关闭系统 shutdown -c --- 取消关机计划 重启: 推荐 立即重启: ① shutdown -r now ② reboot 延迟重启: shutdown -r 5 Linux
但是,当Linux物理内存超过1G时,线性访问机制就不够用了,因为只能有1G的内存可以被映射,剩余的物理内存无法被内核管理,所以,为了解决这一问题,Linux把内核地址分为线性区和非线性区两部分,线性区规定最大为...DMA Zone通常很小,只有几十M,低端内存区与高端内存区的划分来源于Linux内核空间大小的限制。...因此,Linux 规定“内核直接映射空间” 最多映射 896M 物理内存。...1G) 2.3 Linux内核高端内存的理解 前 面我们解释了高端内存的由来。...4 页框管理 4.1 页框管理 Linux采用4KB页框大小作为标准的内存分配单元。
操作系统的发展 ? 类Unix系统目录结构 ubuntu没有盘符这个概念,只有一个根目录/,所有文件都在它下面 ?...Linux 目录 /:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。.../boot:放置linux系统启动时用到的一些文件,如Linux的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub。.../proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有 /proc/cpuinfo、/proc/interrupts、/proc...输出重定向命令:> Linux允许将命令执行结果重定向到一个文件,本应显示在终端上的内容保存到指定文件中。
Linux操作系统 [TOC] 因为使用的方便,实际上还是使用的带有图形化界面的linux操作系统,虽然理论上不带图形化界面的更能增长技术,但是过于复杂,所以更多还是使用图形化界面的……..../dev :dev 是 Device的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。.../media:linux 系统会自动识别一些设备,例如U盘、光驱等等,Linux 会把识别的设备挂载到这个目录下。.../proc:proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息...这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器: echo 1 > /proc/sys/net/ipv4
在日常运维工作中,大部分企业都会搭建自己的可视化监控大屏,但是对于小型企业或者是个人玩家来说这样做的成本和难度会大大提高,下面我就分享一个Shell脚本监控Linux服务器的CPU、磁盘、内存。 #!...bin/bash ############################################## #Filename: jiankong.sh #Description: 监控cpu、磁盘、内存使用率...split($1, vs, ","); v=vs[length(vs)]; sub(/\s+/, "", v);sub(/\s+/, "", v); printf "%d", 100-v;}'` #统计内存使用率...-F '[ %]+' '{print $5}'` function check(){ echo -e "CPU使用率:${cpuUsage}%\n磁盘使用率:${diskUsage}%\n内存使用率...echo "报警时间:${now_time}" > $logFile echo -e "CPU使用率:${cpuUsage}% --> 磁盘使用率:${diskUsage}% --> 内存使用率
因此操作系统引入了一层转换,隐式地把进程看到的地址(逻辑地址)转换成实际的物理内存地址(物理地址)。...地址翻译 操作系统在创建进程的时候需要把这个进程的页表放置到物理内存的某个位置(为简单起见,我们假设它存在内核中),然后把这个页表的内存地址写入到CPU中的页表基址寄存器(Page Table Base...如果preset bit为1,说明对应的页在物理内存中,PTE的内容表示对应的物理页(PFN);如果为0,说明这个页不在内存中,操作系统可以使用PTE来保存这个页在swap分区中的位置。...我们可以发现: 这里缺少了一个valid bit,linux用别的方式实现了valid bit,如果整个PTE的内容全为0,那么这个页是未映射的。...有些硬件采用了讨厌的段页式的混合寻址,现代操作系统已经不用这种模式了。
领取专属 10元无门槛券
手把手带您无忧上云