第一章 Linux内核简介

“do one thing, do it well.” —— Linus Torvalds

1. Linux简介

Linux诞生于1991年,由芬兰的大神Linus开发,现在Linux这个词主要指内核。
每个处理器在任何指定的时间点上的活动为下列情况之一:

  • 运行于用户态,执行用户进程
  • 运行于内核态,处于进程上下文,执行某个特定进程
  • 运行于内核态,处于中断上下文,处理某个中断

维基百科:Linux kernel
Linux 内核剖析

2. 单内核与微内核

概念 优点 缺点
单内核 单内核运行在一个单独的地址空间上,可以看做一个单独的整体,通常为一个单独的二进制文件 单内核运行在一个单独的地址空间上,可以看做一个单独的整体,通常为一个单独的二进制文件 一个服务崩溃导致整个内核无法使用
微内核 微内核按功能划分为多个独立的过程,每个过程运行在各自的地址空间上,服务之间通过信息传递通信 1.安全性提高:只有少数核心功能运行在特权模式下,其他服务运行在用户空间 2. 一个服务崩溃不影响其他服务 各服务之间通信比较复杂

Linux是单内核,运行在单独的地址空间上,同时吸收微内核有点,支持模块化设计、抢占式内核、内核线程、动态加载内核模块、内核态与用户态等,与传统Unix相比:

  • 支持动态加载内核模块
  • 支持对称多处理(SMP)机制
  • 内核可以抢占(preemptive),进程优先级
  • Linux内核不区分线程和进程,称task
  • 提供具有设备类的面向对象的设备模型、热插拔事件,用户空间的设备文件系统sysfs

3. 内核版本

linux内核分为:stable和development,举例说明:Linux-2.6.26.1
2:主版本号
6:副版本号
26:修订版本号
1:稳定版本号
副版本号为奇数表示开发版,为偶数表示稳定版

4. 常用社区

https://www.kernel.org/ 内核源码
http://lxr.free-electrons.com/ 内核源码在线阅读推荐
https://kernelnewbies.org/ 内核开发基础知识
https://lkml.org/ 内核 Mailing List
https://github.com/torvalds/linux github