初识Linux内核

初识Linux内核

    Linux诞生于1991年,出自LinusTorvalds

    POSIX 表示可移植操作系统接口(Portable Operating System Interface)。POSIX是在Uni标准化过程中出现的产物。POSIX 1003.1标准定义了一个最小的Unix操作系统接口任何操作系统只有符合这一标准,才有可能运行Unix程序。

    GNU GNU Is Not Unix 的递归缩写,是自由软件基金会的一个项目。GNU 项目产品包括 emacs 编辑器、著名的GNU C Gcc编译器等,这些软件叫做GNU软件。GNU 软件和派生工作均适用 GNU 通用公共许可证,即 GPLGeneral Public LicenseLinux的开发使用了众多的GUN工具。GPL 允许软件作者拥有软件版权,但GPL规定授予其他任何人以合法复制、发行和修改软件的权利。

这些软件如下:

    (1)符合 POSIX 标准的操作系统内核、 Shell 和外围工具;

    (2)C 语言编译器和其他开发工具及函数库;

    (3)X Window 窗口系统;

    (4)各种应用软件,包括字处理软件、图象处理软件等。


Linux开发方式:

    (1)世界各地软件爱好者集体智慧的结晶

    (2)开放与协作的开发方式。提供源代码,遵守GPL

    (3)经历了各种各样的测试与考验,软件的稳定性好。

    (4)开发人员凭兴趣去开发,热情高,具有创造性。


Linux内核简介:

    Linus领导下的开发小组开发出的系统内核是所有Linux 发布版本的核心。内核开发人员一般在百人以上,任何自由程序员都可以提交自己的修改工作。采用邮件列表来进行项目管理、交流、错误报告。有大量的用户进行测试,正式发布的代码质量高。


Linux内核技术特点:

    (1)Linux内核被设计成单内核结构(Monolithic),相对于微内核而言;

    (2)2.6版本前的Linux内核是单线程结构——即同一时间只允许有一个执行线程在内核中运行,不会被调度程序打断而运行其他的任务,内核称为非抢占的;

    (3)Linux内核支持动态加载内核模块;

    (4)Linux内核被动地提供服务;

    (5)Linux内核采用虚拟内存技术,使得内存空间达到4GB。其中0-3G属于用户段,3-4G属于内核段;

    (6)Linux的文件系统实现一种抽象文件系统——虚拟文件系统(Virtual Filesystem Switch,VFS),该文件系统属于UNIX风格;

    (7)Linux提供一套有效的延迟执行机制——下半部分、软中断、Tasklet2.6版本引入的工作队列。


Linux内核的位置;

图解:

    用户进程—运行在Linux内核之上的一个庞大软件集合。

    系统调用—内核的出口,用户程序通过它使用内核提供的功能。

    Linux内核—操作系统的灵魂,负责管理磁盘上的文件、内存,负责启动并运行程序,负责从网络上接收和发送数据包等等。

    硬件—包括了Linux安装时需要的所有可能的物理设备。例如,CPU 内存、硬盘、网络硬件等等。

 

Linux内核体系结构:

图解:

    进程调度-控制着进程对CPU的访问。

    内存管理-允许多个进程安全地共享主内存区域

    虚拟文件系统-隐藏各种不同硬件的具体细节,为所有设备提供统一的接口。

    网络-提供了对各种网络标准协议的存取和各种网络硬件的支持。

    进程间通信(IPC) 支持进程间各种通信机制,包括共享内存、消息队列及管道等。

 

Linux内核版本:

图解:

    Linux内核具有两种不同的版本号,即实验版本和产品化版本。该机制用‘.‘分割数字表示,第一个数字表示主版本号,第二个数字表示从版本号,第三个数字表示修订版本号,第四个数字表示稳定版本号。从版本号为奇数是实验版,为偶数是产品化版本。例如:版本号为2.6.30.1的内核。

 

Linux内核源代码的结构:Linux内核源代码位于/usr/src/linux目录下,其主要结构目录如下

 

图解:

    include/子目录包含了建立内核代码时所需的大部分包含文件,这个模块利用其它模块重建内核。

    init/ 子目录包含了内核的初始化代码,这是内核开始工作的起点。

    arch/子目录包含了所有硬件结构特定的内核代码,如arch/ 子目录下有i386ARMalpha模块等等。

    drivers/ 目录包含了内核中所有的设备驱动程序,如字符设备、块设备scsi 设备驱动程序等等。

    fs/ 目录包含了所有文件系统的代码,如:ext3ext4NTFS模块的代码等等。 

    net/ 目录包含了内核的连网代码。

    mm/ 目录包含了所有的内存管理代码。

    ipc/ 目录包含了进程间通信的代码。

    kernel/  目录包含了主内核代码。

 

Linux内核源代码分析工具:

    (1)Linux超文本交叉代码检索工具LXR(LinuxCross Reference);

    (2)Windows平台下源代码阅读工具SourceInsight

 



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。