内存管理
文章平均质量分 89
迷之印记
这个作者很懒,什么都没留下…
展开
-
内存管理小解
内核在内存中的位置在默认情况下,Linux内核被装载到一个内存中固定的位置,该位置在编译时确定,配置选项PHYSICAL_START用于确定内核在内存中的位置。Linux内核的初始化start_kernel—>setup_arch—>…内存相关的初始化工作:创建列表,包括系统占据的内存区以及空闲内存区。通过setup_memory确定每个结点可用的物理内存页的数目,初始化bootm内存分配器(采用位图来管理内存页),分配各种内存区等。通过page_init初始化内核页表(用户空间原创 2021-05-31 21:40:33 · 114 阅读 · 0 评论 -
Linux设备驱动程序简介
简介1.总线系统分类总线名称特点PCI支持热插拔ISA古老的总线,IBM引入SBusSUN公司设计IEEE1394(FireWare)USB通用外部总线SCSI用于寻址硬盘并口和串口简单效率低下2.与外设的交互方法I/O端口I/O内存映射轮讯和中断3. 访问设备内核采用主从设备号来标记匹配的驱动程序 ,b为块设备,c为字符设备。/dev中的设备节点在基于磁盘的文件系统中动态创建,由udevd守护进程负责管理(创建和原创 2020-08-10 14:42:43 · 274 阅读 · 0 评论 -
进程虚拟内存管理
概述在32位linux系统中,每一个进程拥有3GB的虚拟内存空间,所有进程共享1GB的内核空间。对每一个进程来讲,都有一个task_struct结构体,包含该进程的所有信息,其中就包括最为重要的mm_struct,它提供了进程在内存布局中的所有必要信息。相关的数据结构mm_struct操作系统运用了面向对象的思路对mm_struct进行封装,Linux就是通过mm_struct实现了内存管理。一个进程的虚拟地址空间主要由两个数据结构进行描述,一个是mm_struct,另一个是vm_area_stru原创 2020-07-22 19:53:53 · 662 阅读 · 0 评论 -
内存管理---Slab原理分析
概念介绍什么是slab?slab是slab内存分配器从buddy system申请页面的基本单位。然而slab的大小不是固定的,slab从属于某个kmem cache实例,不同的kmem cache实例,其slab的大小是不同的。slab的大小必须是2^order个pages,order不能超过buddy system所支持的最大的order。slab内存分配器从buddy system分配了slab之后,会将其挂在对应的kmem cache实例的node节点。什么是object?object是s转载 2020-07-21 15:30:26 · 1824 阅读 · 0 评论