Linux内核
文章平均质量分 88
卧栏听风
每一年都奔走在自己的热爱里!
展开
-
Slab块分配器详解
slab块分配器学习笔记——包括slab思想及数据结构、高速缓存描述符结构、每处理器数组缓存、内存回收等内容。原创 2022-09-07 21:45:00 · 1463 阅读 · 0 评论 -
linux内存管理系列——伙伴分配器
linux内存管理——伙伴分配器学习笔记原创 2022-09-02 18:52:14 · 323 阅读 · 0 评论 -
Linux 内核内存池原理与实现
实际开发中,为了避免频繁执行malloc/fre产生的内存碎片,通常会在程序中设计单独的内存管理模块,即内存池。原理:程序启动时为内存池申请一块比较大的内存区,程序在使用内存时全部是由内存池进行分配的,不再使用内存时,交给内存池回收,用于再次分配,优点在于内存分配效率的提升。...原创 2022-08-27 23:48:11 · 643 阅读 · 1 评论 -
引导内存分配器原理
Linux 内核学习笔记——引导内存分配器原理原创 2022-08-27 17:53:59 · 337 阅读 · 0 评论 -
Linux内核内存布局
内核内存布局64位Linux一般使用48位来表示虚拟地址空间,43位表示物理地址, 通过命令:cat /proc/cpuinfo。cat /proc/meminfoARM64架构处理器采用48位物理寻址机制,最大可寻找256TB的物理地址空间。对于目前应用完全足够,不需要扩展到64位的物理寻址。虚拟地址也同样最大支持48位寻址,所以 在处理器架构设计上,把虚拟地址空间划分为两个空间,每个空间最大支持256TB,linux内核在大多数体系结构上都把两个地址划分为:用户空间和内核空间。用户空间:0x原创 2022-01-16 22:56:48 · 1029 阅读 · 0 评论 -
虚拟地址空间布局架构
内存管理架构内存管理子系统架构可以分为:用户空间、内核空间及硬件部分3个层面。用户空间:应用程序使用malloc()申请内存资源/free()释放内存资源。内核空间:内核总是驻留在内存中,是操作系统的一部分。内核空间为内核保留, 不允许应用程序读写该区域的内容或直接调用内核代码定义的函数。硬件:处理器包含一个内存管理单元(Memory Management Uint,MMU)的部 件,负责把虚拟地址转换为物理地址。Linux内核整体架构及子系统Linux内核只是操作系统当中的一部分,对下管理原创 2022-01-16 22:45:58 · 463 阅读 · 0 评论 -
Linux 物理内存组织结构
物理内存组织结构系统调用mmap虚拟内存区域使用起始地址和结束地址描述。链表按起始地址递增排序。mmap指定的偏移单位是字节,mmap2指定的偏移单位是页。ARM64架构实现系统调用mmap。系统调用munmmap系统调用munmap用来删除内存映射,有两个参数:起始地址、长度。主要委托给do_munmap。vma = find_vma(mm, start); // 根据起始地址找到要删除的第一个虚拟内存区域vma如果只删除虚拟内存区域vam的部分,那么分裂虚拟内存区域vma根据结束地原创 2022-01-16 22:27:37 · 784 阅读 · 0 评论 -
内存映射原理
内存映射原理物理地址空间处理器在系统总线上看到的地址。使用RISC(Reduced Instruction Set Computer RISC 精简指令集)的处理器通常只实现一个物理地址空间,外围设备和物理内存使用统一的物理地址空间。有些处理器架构把分配给外围设备的物理地址区域称为设备内存。处理器通过外围设备控制器的寄存器访问外围设备,寄存器分为控制寄存器、状态寄存器和数据寄存器三大类。外围设备寄存器通常被连续编址,分为两种方式:I/O映射方式(I/O-mapped),内存映射方式(me原创 2022-01-16 02:03:04 · 6957 阅读 · 1 评论