当前位置:首页 > 内存 > 正文

linux保留内存

  • 内存
  • 2024-09-03 05:48:35
  • 8032

一、Linux内核中如何申请和释放内存?

1.首先打开Linux命令窗口,可以使用Ctrl+Alt+T热键打开。

2、现在查看Linux系统当前内存使用情况,使用命令:free-m,total总内存,used已用内存,free空闲内存。

3、以下操作必须先获得高级用户权限,输入命令:sudo-i确认后输入高级用户的密码。

4、此时复制文件,增加内存使用量(即used的使用量)。输入命令:cp-r/etc~/


二、深入理解Linux内存管理(十)meminfo详解深入理解Linux内存管理第十部分重点是meminfo文件的详细讲解。meminfo是了解系统内存使用情况的关键文件,它包含了丰富的内存状态信息。让我们探索一下具有128MB内存的虚拟机的meminfo内容。
首先,MemTotal,即_totalram_pages的值,会根据具体场景进行修改,包括释放memblock、释放预留空间等。MemTotal主要由两部分组成:memblock释放的21,345个物理页和2,138页保留空间,总共23,483页(93,932KB)。
MemFree是所有区域中空闲页面的总和,包括基于percpu的内存和区域空间页帧,总共43,700KB。MemAvailable是一个预期值,反映系统潜在的可用内存,但不包括LRU中的匿名页,原因尚不清楚。
缓冲区和缓冲用于临时存储内存和硬盘文件数据。SwapCached是匿名页面与交换区域交互的临时存储。LRU管理已申请但未使用的页框,而Mlocked则统计内核锁定的内存。SwapTotal和SwapFree是关于交换空间的两个参数。
Meminfo还列出了AnonPages、Maped、Shmem、KReclaimable等字段,分别对应用户进程使用的匿名页面、文件页面、共享内存和可回收内核内存。还包括有关大页的信息,例如HugePages_Total、HugePages_Free等。
最后,MemTotal的配置可以总结为:剩余伙伴系统(MemFree)、内核态使用情况(如slab、内核栈、vmalloc)和用户态使用情况(包括进程内存、缓存),大页面)。了解了meminfo的这些细节之后,就可以回答第二个问题了,那就是配置MemTotal。


三、Linux进程内存管理?对于包含MMU的处理器,Linux系统提供了复杂的存储管理系统,允许进程访问高达4GB的内存。在Linux系统中,进程的4GB内存空间被分为两部分——用户空间和内核空间。用户空间地址一般分布在0~3GB之间(即PAGE_OFFSET,与Ox86中的OxC0000000相同,剩下的3~4GB是内核空间通常只能访问用户空间的虚拟地址而不能访问用户进程只能通过系统调用(代表用户进程在内核态执行)来访问内核空间。
各个进程的用户空间彼此完全独立。内核空间是映射的。由Ia不随进程而变化,是固定的,内核空间的虚拟地址到物理地址的映射是由所有进程共享的,并且内核虚拟空间是独立于其他程序的。Linux中划分的1GB内核地址空间。分为虚拟物理内存映射区域、花式页面映射区域、专用页面映射区域和系统存储映射区域。
对于x86系统,正常情况下,物理内存映射区域的最大长度为896MB,系统物理内存被顺序映射到这个内核空间区域。当系统的物理内存大于896MB时,超过物理内存映射区域的内存部分称为高端内存(而不超过物理内存映射区域的内存通常称为常规内存、内核)。访问高级内存时必须将其映射到高级页面映射区域。Linux保留了内核空间顶部的FIXADDR_TOP~4GB区域作为存储区域。
当系统物理内存超过4GB时,必须使用CPU的扩展分页模式(PAE)提供的64位页目录项来访问4GB以上的物理内存,这需要CPU的支持。IntelPentiumPro以及添加了PAE功能的更高版本的CPU允许内存配置高达64GB,并且它们能够寻址36位物理地址空间。
花式内存→特殊页映射区→存储区。