初识linux内核,初识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内核_第1张图片

图解:

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

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

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

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

Linux内核体系结构:

初识linux内核,初识Linux内核_第2张图片

图解:

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

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

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

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

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

Linux内核版本:

初识linux内核,初识Linux内核_第3张图片

图解:

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

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

初识linux内核,初识Linux内核_第4张图片

图解:

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。

你可能感兴趣的:(初识linux内核)