linux内核架构7个组成部分
system call interface(SCI),Process Management(PM),Memory Management(MM),Arch(体系结构相关代码,和处理器相关代码),Virtual File System(VFS),Network Stack,Device driver;
其中与驱动开发相关的是内存管理子系统和进程管理子系统
一、linux内存管理子系统
1.内存管理模型
内存管理子系统的职能
1.1虚拟地址和物理地址映射
1.2物理内存分配
2.地址映射管理
32位,则虚拟内存为4G,其中0G-3G为用户空间,
3G-4G为内核空间,内核空间分为4部分,直接映射区,vmalloc区,永久映射区,固定映射区
3.虚拟地址-物理地址的寻址方式
cr3寄存器的页目录基地址+32地址的高10位作为偏移在页目录里得到一个地址,该地址指向一个页表,该地址+中间10位的偏移,指向物理页的基地址,物理页的基地址+低12位的偏移找到物理存储单元
4.内核空间具体分析
直接映射区虚拟地址为3G+物理地址
vmalloc区虚拟映射与物理地址无线性关
永久内存映射区固定用来访问高段内存。
固定映射线性区虚拟地址和特殊寄存器建立关系
6.物理内存的分配
malloc、vmalloc调用分配
kmolloc提前分配
二、进程管理
1.进程与程序