初识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 通用公共许可证,即 GPL(General Public License)Linux的开发使用了众多的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提供一套有效的延迟执行机制——下半部分、软中断、Tasklet和2.6版本引入的工作队列。
Linux内核的位置;
图解:
用户进程—运行在Linux内核之上的一个庞大软件集合。
系统调用—内核的出口,用户程序通过它使用内核提供的功能。
Linux内核—操作系统的灵魂,负责管理磁盘上的文件、内存,负责启动并运行程序,负责从网络上接收和发送数据包等等。
硬件—包括了Linux安装时需要的所有可能的物理设备。例如,CPU、 内存、硬盘、网络硬件等等。
Linux内核体系结构:
图解:
进程调度-控制着进程对CPU的访问。
内存管理-允许多个进程安全地共享主内存区域
虚拟文件系统-隐藏各种不同硬件的具体细节,为所有设备提供统一的接口。
网络-提供了对各种网络标准协议的存取和各种网络硬件的支持。
进程间通信(IPC)- 支持进程间各种通信机制,包括共享内存、消息队列及管道等。
Linux内核版本:
图解:
Linux内核具有两种不同的版本号,即实验版本和产品化版本。该机制用‘.‘分割数字表示,第一个数字表示主版本号,第二个数字表示从版本号,第三个数字表示修订版本号,第四个数字表示稳定版本号。从版本号为奇数是实验版,为偶数是产品化版本。例如:版本号为2.6.30.1的内核。
Linux内核源代码的结构:Linux内核源代码位于/usr/src/linux目录下,其主要结构目录如下
图解:
include/子目录包含了建立内核代码时所需的大部分包含文件,这个模块利用其它模块重建内核。
init/ 子目录包含了内核的初始化代码,这是内核开始工作的起点。
arch/子目录包含了所有硬件结构特定的内核代码,如arch/ 子目录下有i386、ARM和alpha模块等等。
drivers/ 目录包含了内核中所有的设备驱动程序,如字符设备、块设备,scsi 设备驱动程序等等。
fs/ 目录包含了所有文件系统的代码,如:ext3、ext4、NTFS模块的代码等等。
net/ 目录包含了内核的连网代码。
mm/ 目录包含了所有的内存管理代码。
ipc/ 目录包含了进程间通信的代码。
kernel/ 目录包含了主内核代码。
Linux内核源代码分析工具:
(1)Linux超文本交叉代码检索工具LXR(LinuxCross Reference);
(2)Windows平台下源代码阅读工具SourceInsight。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。