[Linux内核设计与实现]第1章Linux内核简介

操作系统和内核简介

  • 操作系统是指在整个系统中负责完成最基本功能和系统管理的那些部分。这些部分应该包括内核、设备驱动程序、启动引导程序、命令行Shell或者其他种类的用户界面、基本的文件管理工具和系统工具
  • 对于提供保护机制的现代系统来说,内核独立于普通应用程序,它一般处于系统态,拥有受保护的内存空间和访问硬件设备的所有权限。这种系统态和被保护起来的内存空间,统称为内核空间
  • 内核有时候被统称为管理者或者是操作系统核心

应用程序、内核和硬件的关系

[Linux内核设计与实现]第1章Linux内核简介

  • 运行于用户空间,执行用户进程
  • 运行于内核空间,处于进程上下文,代表某个特定的进程执行
  • 运行于内核空间,处于中断上下文,与任何进程无关,处理某个特定的中断

单内核与微内核设计之比较

原理 优势 劣势
单内核 从整体上作为一个单独的大过程来实现,同时也运行在一个单独的地址空间上。 简单、性能高。内核之间的通信微不足道,因为都在同一地址空间;内核可以直接调用函数,这与用户空间应用程序没什么区别 一个功能的崩溃会导致整个内核无法使用
微内核 内核按功能被划分成各个独立的过程。每个过程独立的运行在自己的地址空间上 安全:内核的各种服务独立运行,一种服务挂了不会影响其他服务 内核各个服务之间的调用涉及进程间的通信,比较复杂且效率低

Linux是一个单内核,即Linux内核运行在单独的内核地址空间上。不过Linux汲取了微内核的精华,还避其微内核设计上性能损失的缺陷,让所有事情都运行在内核态,直接调用函数,无需消息传递。至今,Linux是模块化的、多线程的以及内核本身可调度的操作系统(实用主义)

Linux内核与传统的Unix系统之间存在一些显著的差异:

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

Linux内核版本

[Linux内核设计与实现]第1章Linux内核简介