Linux内核开发与优化-内核结构

Linux内核开发与优化-内核结构

一、Linux 内核七大组成部分

图片[1]-Linux内核开发与优化-内核结构-乔伊社区
  1. 系统调用接口
  2. 进程管理
  3. 内存管理
  4. 设备驱动
  5. 虚拟文件系统
  6. 网络协议栈
  7. 体系结构相关

二、系统调用接口(SCI)

  • 作用:用户空间 ↔ 内核空间的唯一桥梁,提供标准函数供应用访问内核
  • 常用系统调用分类:
    • 进程控制:fork、clone、execve、exit、pause、getpid、waitpid、nice
    • 文件读写:open、close、creat、read、write、lseek、fcntl、poll、umask
    • 文件系统:access、chdir、chmod、chown、mkdir、rmdir、readdir
    • 系统控制:ioctl、reboot、time、uname
    • 内存管理:mmap、munmap、sync
    • 网络 / Socket:socket、bind、listen、accept、connect
    • 用户管理:getuid、setuid、getgid、setgid

系统调用 vs 库函数调用

表格

对比项系统调用库函数调用
汇编指令INT / IRETCALL / RET
堆栈切换用户栈 ↔ 内核栈无堆栈切换
运行空间内核态(高权限)用户态
开销大(上下文切换)小(普通过程调用)
移植性依赖内核,较差平台通用,好
本质操作系统入口普通功能函数

三、进程管理(PM)

  • 核心工作:创建 / 终止进程、进程调度、进程间通信
  • 关键函数:fork/exec(创建)、kill/exit(停止)
  • 基本概念:
    • 进程:程序的运行实体
    • 多任务:CPU 按时间片轮流执行多个进程
    • 调度程序:负责选择下一个运行进程
  • 进程间通信(IPC):信号、管道、共享内存、信号量、套接字

四、内存管理(MM)

  • 作用:管控进程对物理内存的访问,安全共享内存
  • 核心任务:内存分配 / 回收、虚拟地址→物理地址转换
  • 关键机制:虚拟内存(用有限物理内存支撑大量进程)

五、设备驱动(DD)

图片[2]-Linux内核开发与优化-内核结构-乔伊社区
  • 地位:内核代码量最大(约占 50%),最常开发的模块
  • 特点:运行在高特权级,可直接操作硬件;出错易导致系统崩溃
  • 设备分类:
    1. 字符设备:顺序读写、按字节访问,无随机存取例:鼠标、键盘、串口、控制台
    2. 块设备:随机访问、按块读写例:硬盘、U 盘、CD-ROM、闪存
    3. 网络设备:收发数据帧 / IP 包例:网卡

六、虚拟文件系统(VFS)

图片[3]-Linux内核开发与优化-内核结构-乔伊社区
  • 作用:屏蔽底层差异,为所有文件系统提供统一接口
  • 支持:Ext4、XFS、FAT、NTFS、NFS、proc、sysfs 等
  • 好处:应用只用一套接口(open/read/write),无需关心底层文件系统类型

七、网络协议栈

图片[4]-Linux内核开发与优化-内核结构-乔伊社区
  • 特点:稳定、支持协议丰富,Linux 网络能力核心
  • 基于 TCP/IP 模型,实现网络连接、数据传输

八、体系结构相关(Arch)

  • 与 CPU 架构强相关:x86、ARM、MIPS 等
  • 作用:统一内核上层代码,提升移植性,移植只需改这部分
© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容