《linux内核设计与实现》第一章
第一章Linux内核简介:
1.3操作系统和内核简介
操作系统:系统包含了操作系统和所有运行在它之上的应用程序。操作系统是指整个在系统中负责完成最基本功能和系统管理的那些部分。这些部分包括内核、设备驱动程序、启动应到程序、命令行shell或者其他种类的用户界面、基本的文件管理系统工具。
内核:如果说用户界面是操作系统的外在表像,那么内核就是操作系统的内在核心。
内核空间:系统态和保护起来的内存空间。
内核的组成:
1.中断服务程序(响应中断)
2.调度程序(管理多个进程分享处理器的时间)
3.内存管理程序(管理进程地址空间)
4.系统服务程序(网络、进程间通信)
应用进程如何与内核通信:
通过系统调用的方式。应用进程调用库函数,再由函数库通过系统调用界面,让内核完成各种任务。(应用程序通过系统调用界面来陷入内核)
内核负责管理系统的硬件设备:
前提:硬件设备相遇系统通信,首先要发出一个异步的中断信号来打断处理器的执行(内核的执行)。
中断服务由内核负责。但是需要注意,中断服务程序运行在与所有进程都无关的,专门的中断上下文中运行。
1.4Linux内核和传统Unix内核的比较
Unix内核的特点:不可分割的静态可执行库。(硬件系统提供页机制MMU管理内存。)
Linux内核设计(主要讨论支持MMU的系统)
单内核:
最大的特点就是内核可以直接调用函数,所有的进程都处于内核态。它从整体上作为一个单独的大的进程来完成,同时也运行在一个单独的地址空间。
微内核:
功能被划分为多个独立的过程,每一个进程叫做一个服务器。有特权模式和用户模式两种,独立地运行在各自的地址空间。进程间采用IPC通信机制。
Linux内核和Unix的显著区别:
支持动态加载内核模块
支持对称多处理机制SMP
可以抢占
不区分线程和一般进程
提供具有设备类的面向对象的设备模型,热拔插事件,以及用户空间的设备文件系统
摒弃了Unix一些拙劣的特性,体现了*的精髓
1.5Linux版本号
例如2.6.26.1(第二位,即从版本号来判断内核是稳定还是开发状态。偶数则为稳定状态)
2:主版本号
6:副版本号(从版本号)
26:修订版本号
1:稳定版本号
总结:
内核虽然是由进程组成,但是它区别于普通应用进程。内核(系统态,进入内核空间执行,运行于进程上下文中),应用进程(用户态,进入用户空间执行,运行于内核空间)。处理器任何时间都运行在如下三个状态中的一个:运行于用户空间,执行用户进程;运行于内核空间,处于进程上下文,内核进程执行;运行于内核空间,处于中断上下文,处理中断。如下图:
Linux的内核是一个单内核。(但是Linux汲取了微内核的精华,是模块化的,多线程的,内核本身可调度的操作系统。)