Linux内核概述
Linux简介
1991年,Linus Torvalds为当时新推出的Intel 80386微处理器计算机设计了一款操作系统,Liux由此诞生.当时对Minix感到失望的他从一个简单的终端仿真程序开始,不断改进完善,逐渐演变为早期的Linux.
Linux是类UNIX,但不是UNIX.它借鉴了UNIX的许多设计,并且实现了UNIX的API,但并没有使用UNIX的源码,必要时,其实现可能和UNIX大相径庭.但它并没有抛弃UNIX的设计目标,并且保证了应用程序接口的一致.
Linux是一个非商业化的产品,实际上,它是一个互联网上的协作开发项目.任何人都可以开发内核,Linux是自由(公开)软件.当然,并不是无限自由,其使用GPL第2版作为限制条款.也就是说,你可以自由地获取内核代码并修改,但如果你希望发布你修改的内核,其他使用你的内核的人也要享有你曾经享有过的所有权利,当然,包括全部的源代码.
Linux用途广泛,包含许多的内容,其基础为内核、C库、工具集和系统的基本工具。现在Linux也支持X Windows,例如GNOME。
Linux内核
与操作系统的外在表现(例如X Windows)不同,Linux内核是操作系统的核心,通常一个内核由中断服务程序、调度程序、内存管理程序、网络、进程间通信等系统服务程序共同组成。现代系统提供了保护机制,内核拥有受保护的内存空间和访问硬件设备的所有权限,称为内核空间。
应用程序通过系统调用
来与内核通信.例如调用库函数(例如C库函数),由库函数调用系统调用来由内核代为操作.
单内核与微内核
操作系统内核分为两大阵营:单内核与微内核(第三阵营是外内核,主要用于科研系统中).
单内核整体作为一个单独的大进程,通常以单个静态二进制文件的形式存放于磁盘中,所有内核服务都在这样一个大内核地址空间上运行.内核可以直接调用函数,设计者认为这种模式简单且高效.大多数UNIX都设计为单内核.
微内核被划分为多个独立进程,称为服务器.理想情况下,只有强烈请求特权服务的服务器才运行在特权模式下,其他服务器都运行在用户空间.不过,所有服务器都保持独立并运行于各自的地址空间上,因此不能像单核那样直接调用函数,而是通过消息传递
处理内核通信:系统采用进程间通信(IPC)机制.服务器间有效避免了彼此祸及对方.但是IPC机制开销多于函数调用,又涉及内核空间与用户空间的上下文切换,因此实际上大部分服务器或全部服务器都位于内核,这样就可以直接调用函数,以消除频繁的上下文切换,WindowsNT内核就是典型的微内核操作系统.
Linux是一个单内核,不过它也汲取了微内核的精华:模块化设计、抢占式内核、支持内核线程以及动态装载内核模块.并且Linux让所有事情都运行于内核态,直接调用函数,无需消息传递.至今,Linux是模块化的,多线程的以及内核本身可调度的操作系统.
Linux内核版本
Linux用3个或4个数字来代表不同的内核版本.第一个数字为主版本号,第二个为从版本号,第三个是修订版本号,第四个是稳定版本号.副版本号为偶数就是则稳定版,奇数则为开发版.