Linux 内核

[TOC]

Linux 架构图

Linux 架构图

用户模式

应用程序(sh、vi、Text Editor等)

复杂库(KDE、glib等)简单库(opendbm、sin等)

C 库(open、open、socket、exec、calloc等)

内核模式

  • 系统中断、调用、错误等软硬件消息
  • 内核(驱动程序、进程、网络、内存管理等)
  • 硬件(处理器、内存、各种设备)

Linux Kernel+Shell = OS

内核划分

Linux 内核划分

内核的组成部分

Linux 内核组成部分

内核源代码目录结构

目录、文件 说明
Documentation/ 内核各部分的通用解释和注释
arch/ 和硬件体系结构相关
block/ 块设备驱动程序 I/O 调度
certs/
crypto/ 常用加密和散列算法(如 AES 、 SHA 等),还有一些压缩和 CRC 校验算法
drivers/ 设备驱动程序
firmware/
fs/ 支持的各种文件系统
include/ 头文件
init/ 内核初始化代码
ipc/ 进程间通信代码
kernel/ 内核部分,包括进程调度、定时器等,而和平台相关的部分在 arch/*/kernel/
lib/ 库文件
mm/ 内存管理,和平台相关部分在 arch/*/mm/
net/ 网络相关,实现各种网络协议
samples/
scripts/ 用于配置内核的脚本文件
security/ 主要是 SELinx 模块
sound/ ALSA 、OSS 音频设备驱动核心代码和常用设备驱动
tools/
usr/ 实现用于打包和压缩的 cpio 等
virt/
COPYING
CREDITS
Kbuild 内核的编译系统
Kconfig 给用户提供配置选择的功能
MAINTAINERS
Makefile 定义 Linux 内核编译规则
README
REPORTING-BUGS

内核的编译

推荐 make menuconfig

  • Makefile
  • 配置文件(Kconfig)
  • 配置工具

文件系统目录结构

Linux 根目录(即 “/”)

目录 说明
/bin 基本明命令, ls、cp、mkdir 等
/sbin 系统命令,mod probe、hwclock、ifconfig 等
/dev 设备文件存储目录
/etc 系统配置文件
/lib 系统库文件存放
/mnt 挂载存储设备等挂载目录
/opt 有些软件包安装位置
/proc 操作系统运行时,进程及内核信息存放。伪文件系统 proc 挂载目录,存在于内存
/tmp 临时文件
/usr 存放程序目录,如用户命令、用户库等
/var 存放系统日志等
/sys sysfs 文件系统映射目录

文件系统与设备驱动

文件系统与设备驱动

udev 用户空间设备管理

  • 设备和驱动分离,并通过总线进行匹配。
  • udev 利用内核通过 netlink 发出的 uevent 信息动态创建设备文件节点
设备管理 说明
udev
mdev udev 轻量级版本,集成于 busybox 中
vold Android 采用

附录

  1. Linux 驱动开发
  2. GCC 编译
  3. 每个Linux用户都应该知道的命令行技巧
  4. Linux 压力测试 stress
  5. 如何监控GPU卡的使用率(Linux)
  6. 20个命令行工具监控 Linux 系统性能