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

内核如何获得内存容量

  • 内存
  • 2024-08-26 11:23:23
  • 7098

一、一文剖析Linux内核的内存管理内存管理的主要工作是组织物理内存以及分配和回收物理内存。Linux引入虚拟地址是为了避免用户进程直接处理物理内存的潜在风险。虚拟地址具有以下功能:
1防止用户进程破坏内核操作并影响其他进程。
2.将逻辑地址映射到物理地址,每个进程都有独立的逻辑地址范围。
3.申请内存时,分配逻辑地址和物理地址,并建立映射关系。
Linux内存管理涉及三个主要部分:
1**物理内存组织**:Linux内存分为三个级别,包括页、区域和节点。
2.**物理内存分配**:分配分为大内存和小内存两种方式。大内存使用伙伴系统,而小内存使用slub分配。
3.**虚拟地址组织**:虚拟空间分为用户态和内核态。比例对于32位系统为1:3,对于64位系统自由分配。用户态的虚拟空间包括代码、数据、全局变量、堆、栈和mmap映射区,而内核态则分为直接映射区和动态映射区。
4.**虚拟地址映射**:通过页表将虚拟地址转换为物理地址。页表映射需要离散存储来减少内存使用,使用1K页来存储1K页表记录的索引。
5.**TLB和虚拟内存**:TLB存储虚拟地址和物理地址,虚拟内存使用硬盘作为虚拟内存,以提高运行程序的效率。尽管虚拟内存扩展了逻辑上可管理的内存容量,但内存和磁盘之间频繁的数据交换会降低性能。
综上所述,Linux内存管理通过虚拟地址、页表、直接映射和动态映射实现物理内存的有效组织和高效利用,保证系统稳定运行和程序执行安全。


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

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

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

3、接下来的流程,首先需要获得高级用户权限,输入sudo-i命令,确认后输入高级用户密码。

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

5、执行命令后,再次查看当前Linux系统内存使用情况,发现缓存使用了70MB内存。使用命令:free-m。

6、接下来释放占用的缓存:cat/proc/sys/vm/drop_caches回车,返回结果0。

/proc/sys/vm/drop_caches,回车继续输入:cat/proc/sys/vm/drop_caches,按回车,返回结果3,将/proc/sys/vm/drop_caches的值设置为3。

8、这样缓存释放已完成。再次运行Free-m命令可以看到已经释放了218MB内存。