`

Linux内核简介

 
阅读更多

1 Linux体系结构

由上图得知,Linux由用户空间和内核空间两部分组成。

为什么Linux系统会被划分称为用户空间与内核空间?

现代CPU通常实现两不同的工作模式,以ARM为例,实现了7中工作模式:

用户模式(usr),快速中断(fiq),外部中断(irq),系统模式(svc),数据访问终止(abt),系统模式(sys),未定义指针异常(und)。

X86也实现了4个不同的级别:Ring0-Ring3。Ring0下,可以执行特权指令,可以访问IO设备等,在Ring3则有很多限制。

Linux系统利用了CPU的这一特性,使用了其中的两级来分别运行Linux内核于应用程序,这样使得操作系统本身得到充分的保护。例如:如果使用X86,用户代码运行在Ring3,内核代码运行在Ring0。内核空间与用户空间是程序执行的两种不同状态,通过系统调用和硬件中断能够完成从用户空间到内核空间的转移。

Linux内核如何构成的?

2 Linux内核源代码

目录结构

Linux内核源代码采用树形结构进行组织,非常合理地把更能相关的文件都放在同一个子目录下,使得程序更具可读性。

内核源代码下载地址:www.kernel.org

*arch 目录

arch是architeture的缩写。内核所支持的每种CPU体系,在该目录下都有对应的子目录。每个CPU的子目录,有进一步分解为boot, mm ,kernel等子目录,分别包含控制系统引导,内存管理,系统调用等。

*block目录

部分块设备驱动程序

*crypto目录

加密、压缩、CRC校验算法

*documentation

内核的文档

*drivers目录

设备驱动程序

*fs目录

存放各种文件系统的实现代码。每个子目录对应一种文件系统的实现,公用的源程序用于实现虚拟文件系统vfs。

|| --devpts /*/dev/pts虚拟文件系统*/

|| --ext2 /*第二扩展文件系统*/

|| --fat /*MS的fat32文件系统*/

|| --isofs /*ISO9660光盘cd-rom上的文件系统*/

*include目录

内核所需要的头文件。与平台无关的头文件在include/linux子目录下,与平台相关的头文件则存放在相应的子目录中。

*init目录

内核初始化代码

*ipc目录

进程间通信的实现代码

*kernel目录

Linux大多数的关键的核心功能都是在这个目录实现(调度程序,进程控制,模块化)

*lib目录

库文件代码

*mm目录

Mm目录中的文件用于实现内存管理中于体系结构无关的部分

*net目录

网路协议的实现代码

*smaples

一些内核编程的范例

*scripts

配置内核的脚本

*security

Selinux的模块

*sound

音频设备的驱动程序

*usr

Cpio命令实现

*virt

内核虚拟机

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics