linux内核

转载 2007年09月26日 18:23:00
 
Linux内核
内核是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序。它从用户那里接受命令并把命令送给内核去执行。

内核是操作系统的内部核心程序,它向外部提供了对计算机设备的核心管理调用。我们将操作系统的代码分成2部分。内核所在的地址空间称作内核空间。而在内核以外的统称为外部管理程序,它们大部分是对外围设备的管理和界面操作。外部管理程序与用户进程所占据的地址空间称为外部空间。通常,一个程序会跨越两个空间。当执行到内河空间的一段代码时,我们称程序处于内核态,而当程序执行到外部空间代码时,我们称程序处于用户态。

从UNIX 起,人们开始用高级语言(UNIX上最具有代表性的就是UNIX的系统级语言C语言)编写内核代码,使得内核具有良好的扩展性。单一内核(monolithic kernel)是当时操作系统的主流,操作系统中所有的系统相关功能都被封装在内核中,它们与外部程序处于不同的内存地址空间中,并通过各种方式(在 Intel IA-32体系中采用386保护模式)防止 外部程序直接访问内核结构。程序只有通过一套称作系统调用(system call)的界面访问内核结构。近些年来,微内核(micro kernel)结构逐渐流行起来,成为操作系统的主要潮流。1986年,Tanenbaum提出Mach kernel,而后,他的minix和GNU的Hurd操作系统更是微内核系统的典范。

在微内核结构中,操作系统的内核只需要提供最基本、最核心的一部分操作(比如创建和删除任务、内存管理、中断管理等)即可,而其他的管理程序(如文件系统、网络协议栈等)则尽可能的放在内核之外。这些外部程序可以独立运行,并对外部用户程序提供操作系统服务,服务之间使用进程间通信机制(IPC)进行交互,只在需要内核的协助时,才通过一套接口对内核发出调用请求。

微内核系统的优点时操作系统具有良好的灵活性。它使得操作系统内部结构简单清晰。程序代码的维护非常之方便。但是也有不足之处。微内核系统由于核心态只实现了最基本的系统操作,这样内核以外的外部程序之间由于独立运行使得系统难以进行良好的整体优化。另外,进程间互相通信的开销也较单一内核系统要大许多。从整体上看,在当前的硬件条件下,微内核在效率上的损失小于其在结构上获得的收益,故而选取微内核成为操作系统的一大潮流。

然而,Linux系统却恰恰使用了单一内核结构。这是由于Linux是一个实用主义的操作系统。Linux Tovarlds以代码执行效率为自己操作系统的第一要务,并没有进行过一个系统的设计工作,而是任由Linux在使用中不断发展。在这样的发展过程中,参与Linux开发的程序员大多为世界各地的黑客们。比起结构的清晰,他们更加注重功能的强大和高效的代码。于是,他们将大量的精力放在优化代码上,而这样的全局性优化必然以丧失结构精简为代价,导致Linux中的每个部件都不能轻易被拆除。否则必然破坏整体效率。

虽然Linux是单一内核体系,但是它与传统的单一内核UNIX操作系统不同。在普通的单一内核系统中,所有的内核代码都是被静态编译联入的,而在 Linux中,可以动态装入和卸载内河中的部分代码。Linux将这些代码段称为模块。(module),并对模块给予了强有力的支持。在Linux中,可以在需要时自动装入和卸载模块。

Linux不支持用户态线程。在用户态中,Linux认为线程就是共享上下文(Context)的进程。Linux通过LWP(light weight thread)的机制来实现用户态线程的概念。通过系统调用clone()创建新的线程。

Linux的内核为非抢占式的。即,Linux不能通过改变优先权来影响内核当前的执行流程。因此,Linux在实现实时操作时就有问题。Linux并不是一个“硬”实时操作系统。

在Linux 内核中,包括了
进程管理(process management)、        1
定时器(timer)、                2
中断管理(interrupt management)、    3
内存管理(memory management)、        4
模块管理(module management)、        5
虚拟文件系统接口(VFS layer)、        6
文件系统(file system)、            7
设备驱动程序(device driver)、        8
进程间通信(inter-process communication)、9   
网络管理(network management)、        10
系统启动(system init)等操作系统功能的实现。 11   

相关文章推荐

Linux内核Major,Minor和磁盘数的关系

Linux 内核使用静态的Major number和Minor number来进行SCSI设备的寻址,而系统为SCSI设备保留的Major和Minor是有个数限制的。所以根据可用的Major numb...

深入剖析Linux内核与设备驱动-02

  • 2017年11月09日 15:02
  • 91.45MB
  • 下载

Linux内核升级LCD驱动的更换(开发板)

Linux内核升级LCD驱动的更换(开发板) 关键字 内核升级 ,更换驱动 ,LCD 概 述 本文给出了将一个已有的LCD驱动添加进一个新的linux内核中的方法 ...
  • myspor
  • myspor
  • 2011年04月11日 20:45
  • 7657

Linux内核设计与实现_第三版_中文版

  • 2017年11月02日 08:52
  • 36.78MB
  • 下载

ARM Linux内核源码剖析.pdf

  • 2017年11月03日 21:49
  • 109MB
  • 下载

Linux内核中Netfilter架构介绍

Netfilter概述          Netfilter/IPTables是Linux2.4.x之后新一代的Linux防火墙机制,是linux内核的一个子系统。Netfilter采用模块化设计,...
  • wuruixn
  • wuruixn
  • 2012年09月08日 10:06
  • 13898

深入Linux内核架构_CN.pdf

  • 2017年11月02日 10:53
  • 108.33MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux内核
举报原因:
原因补充:

(最多只允许输入30个字)