Linux内核管理--内存(一)

1)Linux把空闲的物理内存划出一部分用作buffer,cache

2)buffer cache是高速缓存环从,目的是为了解决磁盘读取速度远小于内存这个问题,cpu从内存直接读取最快;

3)但是物理内存有限,不可能所有数据都在物理内存,swap交换分区就出现了,内核会根据“”最近经常使用“”算法,把不经常使用的内存数据交换到swap;

4)有时可以发现物理内存充足,swap也使用了很多也是正常的,因为linux内存交换是不时在进行的,一个占用内存资源很大的程序开始时,会把不经常用的数据放到swap,这个程序结束时,资源释放了一些,但是交换到swap的也不会马上回到物理内存,除非有必要。

5)swap中的数据如果需要调用,会被重新交换进物理内存,如果这时候物理内存没有空间,它们会被退回到swap, 几次之后可能swap和物理内存都没有空间存储这些页面,系统就会假死。

6)free项看内存时,shared表示多个进程共享的内存资源,自己free和used时不能忽略buffer cache,真正的free数量是used+buffer/cached, 其实free命令输出的数值一个是内核视角(mem一行),一个是用户视角(加上buffer/cache)。

7)buffer是写操作缓冲块设备的,cache是记忆的文件。

时间: 2024-09-29 22:08:14

Linux内核管理--内存(一)的相关文章

Linux内核之内存管理(4)--缺页处理程序

本文主要解说缺页处理程序,凝视足够具体,不再解释. //以下函数将一页内存页面映射到指定线性地址处,它返回页面的物理地址 //把一物理内存页面映射到线性地址空间指定处或者说把线性地址空间指定地址address处的页面映射到主内存区页面page上.主要工作是在相关也文件夹项和页表项中设置指定页面的信息.在处理缺页异常函数do_no_page中会调用这个函数. 參数:address--线性地址:page--是分配的主内存区中某一页面指针 static unsigned long put_page(u

(笔记)Linux内核中内存相关的操作函数

linux内核中内存相关的操作函数 1.kmalloc()/kfree() static __always_inline void *kmalloc(size_t size, gfp_t flags) 内核空间申请指定大小的内存区域,返回内核空间虚拟地址.在函数实现中,如果申请的内存空间较大的话,会从buddy系统申请若干内存页面,如果申请的内存空间大小较小的话,会从slab系统中申请内存空间.有关buddy和slab,请参见<linux内核之内存管理.doc> gfp_t flags 的选项

【读书笔记::深入理解linux内核】内存寻址

我对linux高端内存的错误理解都是从这篇文章得来的,这篇文章里讲的 物理地址 = 逻辑地址 – 0xC0000000:这是内核地址空间的地址转换关系. 这句话瞬间让我惊呆了,根据我的CPU的知识,开启分页之后,任何寻址都要经过mmu的转换,也就是一个二级查表的过程(386) 难道内核很特殊,当mmu看到某个逻辑地址是内核传来的之后,就不查表了,直接减去0xC0000000,然后就传递给内存控制器了??? 我发现网上也有人和我问了同样的问题,看这个问题 这句话太让人费解了,让人费解到以至于要怀疑

Linux 内核开发 - 内存管理

1.1什么是内存管理 内存管理是对计算机内存进行分配和使用的技术.内存管理主要存在于多任务的操作系统中,由于内存资源极其有限,需要在不同的任务之间共享内存,内存管理的存在就是要高效.快速的非配内存,并在适当的时候回收和释放内存,以保各个任务正常的执行.最常见的内存管理机制有:段式内存管理和页式内存管理. 1.2内存中的地址 早期的16位计算中,寄存器的位宽只有16位,为了能访问到1M Bit的内存空间,CPU就采用了分段的方式来管理内存,将1M的内存分为若干个逻辑段,每个逻辑段的起始地址必须是1

Linux内核之内存管理完全剖析

linux虚拟内存管理功能 ? 大地址空间:? 进程保护:? 内存映射:? 公平的物理内存分配:? 共享虚拟内存.实现结构剖析 (1)内存映射模块(mmap):负责把磁盘文件的逻辑地址映射到虚拟地址,以及把虚拟地址映射到物理地址 (2)交换模块(swap)负责控制内存内容的换入与换出,淘汰最近没访问的页,保留最近访问的页. (3)core(核心内存管理模块):负责内存管理功能. (4)结构特定模块:实现虚拟内存的物理基础 内核空间和用户空间 Linux简化了分段机制,使得虚拟地址跟线性地址一样.

Linux 内核管理

Linux内核基础:Linux Kernel:  Linux内核的体积结构是单内核的,但充分借鉴了微内核设计体系的优点,为内核引入模块化机制,使得虽然是单内核,但工作在模块化的方式下,并且模块可以动态装载或卸载:Linux内核负责管理系统的进程.内存.设备驱动程序.文件和网络系统,决定着系统的性能和稳定性.如是我们在了解Linux内核的基础上根据自己的需要量身定制一个更高效更稳定的内核,就需要我们手动去编译和配置内核里的各项相关的参数和信息.  内核的组成部分: 1.Kernel:内核核心,一般

Linux内核管理风格

内核社区管理是一个很独特很有挑战性的事情, 各系统维护者拥有很大的权利,却又无法命令和管理社区参与者: 一边不停的拒绝人们各种功能提交,一边却希望开发者留在自己的领域继续贡献力量.这篇文章向您揭示,成功的社区维护者如何展示领导力(捣糨糊).祝大家 假期快乐! 这是一个简短的文档,描述了Linux内核的首选(或编造的,取决于您问谁)管理风格. 它的目的是在某种程度上参照 process/coding-style.rst 主要是为了避免反复回答 [1] 相同(或类似)的问题. 管理风格是非常个人化的

Linux内核 -- vm内存相关参数

查看方式:1.sysctl -a2.cat /proc/sys/vm/overcommit_memory 一.overcommit_memory 内核源码中的介绍:This value contains a flag that enables memory overcommitment.When this flag is 0, the kernel attempts to estimate(估算) the amountof free memory left when userspace requ

深入Linux内核架构-内存管理-脑图

这本书的引言里有作者写的 一句话:"是的,我们疯了.预先警告:你们也会一样." 确实,我也要疯了. 下载mmap