Linux 内核内存管理:虚拟地址空间、伙伴系统和块分配器
负责管理进程的执行,决定哪个进程可以运行以及运行多长时间。负责管理虚拟内存,允许进程使用比物理内存更多的内存。提供了一个统一的接口来访问不同的文件系统。负责处理网络通信。为硬件设备提供接口。允许用户空间程序请求内核服务。当发生硬件事件时通知内核。允许内核中的不同部分安全地共享数据。Linux 内核是一个复杂而强大的系统,它提供了对计算机硬件的低级访问以及对各种服务和功能的支持。它也是 Linux
Linux 内核架构:

Linux 内核架构可以分为以下几个主要组件:
-
进程调度器: 负责管理进程的执行,决定哪个进程可以运行以及运行多长时间。
-
内存管理单元 (MMU): 负责管理虚拟内存,允许进程使用比物理内存更多的内存。
-
虚拟文件系统 (VFS): 提供了一个统一的接口来访问不同的文件系统。
-
网络堆栈: 负责处理网络通信。
-
设备驱动程序: 为硬件设备提供接口。
Linux 内核架构还包括以下几个重要的概念:
-
系统调用: 允许用户空间程序请求内核服务。
-
中断: 当发生硬件事件时通知内核。
-
同步原语: 允许内核中的不同部分安全地共享数据。

Linux 内核是一个复杂而强大的系统,它提供了对计算机硬件的低级访问以及对各种服务和功能的支持。它也是 Linux 操作系统和其他基于 Linux 的操作系统的基础。
二、虚拟内存地址空间布局
2.1、用户空间
应用程序使用 malloc()申请内存,使用 free()释放内存,malloc()/free() 是 glibc 库的内存分配器 ptmalloc 提供的接口,ptmalloc 使用系统调用 brk/mmap 向内核以页为单位申请内存,然后划分成小内存块分配给用户应用程序。
2.2、内核空间
内核空间的基本功能:虚拟内存管理负责从进程的虚拟地址空间分配虚拟页,sys_brk 用来扩大或收缩堆,sys_mmap 用来在内存映射区域分配虚拟页, sys_munmap 用来释放虚拟页。
页分配器负责分配物理页,当前使用的页分配器是伙伴分配器。内核空间提供把页划分成小内存块分配的块分配器,提供分配内存的接口 kmalloc()和 释放内存接口 kfree()。块分配器:SLAB/SLUB/SLOB。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)