Linux内核简介一、Linux体系结构从上图获知,Linux由用户空间和内核空间两部份组成。为何Linux系统会被界定为用户空间与内核空间?现代CPU一般实现了不同的工作模式,以ARM为例,实现了7种工作模式:用户模式(usr)、快速中断(fiq)、外部中断(irq
Linux内核简介
一、Linux体系结构
从上图获知,Linux由用户空间和内核空间两部份组成。
为何Linux系统会被界定为用户空间与内核空间?
现代CPU一般实现了不同的工作模式linux社区,以ARM为例,实现了7种工作模式:用户模式(usr)、快速中断(fiq)、外部中断(irq)、管理模式(svc)、数据访问终止(abt)、系统模式(sys)、未定义指令异常(und)
X86也实现了4个不同的级别:Ring0—Ring3。Ring0下linux 内核 引导 文件系统,可以执行特权指令,可以访问IO设备等,在Ring3则有好多限制。
Linux系统借助了CPU的这一特点,使用了其中的两级来分别运行Linux内核与应用程序,这样使操作系统本身得到充分的保护。诸如:假如使用X86,用户代码运行在Ring3,内核代码运行在Ring0。
内核空间与用户空间是程序执行的两种不同状态,通过系统调用和硬件中断才能完成从用户空间到内核空间的转移。
二、Linux内核构架
1.系统调用插口
SCI层为用户空间提供了一套标准的系统调用函数来访问Linux内核,搭起了用户空间到内核空间的桥梁。
2.进程管理
进程管理的重点是创建进程(fork、exec)linux 内核 引导 文件系统,停止进程(kill、exit),并控制它们之间的通讯(signal或则POSIX机制)。进程管理还包括控制活动进程怎么共享CPU,即进程调度。
3.显存管理
显存管理的主要作用是控制多个进程安全地共享显存区域。
4.网路合同栈
内核合同栈为Linux提供了丰富的网路合同实现。
5.虚拟文件系统(VFS)
VFS隐藏各类文件系统的具体细节,为文件操作提供统一的插口。
6.设备驱动
Linux内核中有大量代码都在设备驱动程序中,它们控制特定的硬件设备。
7.体系结构相关代码Architecture-dependedcode
与CPU密切相关的代码,如ARM、x86,是不同的微处理器可以使用同一套代码。
二、linux内核源码目录结构
Linux内核源代码采用树状结构进行组织linux论坛,特别合理地把功能相关的文件都置于同一个子目录下,致使程序更具可读性。
内核源代码下载地址:
1.arch目录
arch是architecture的简写。内核所支持的每种CPU体系,在该目录下都有对应的子目录。每位CPU的子目录,又进一步分解为boot,mm,kernel等子目录,分别包含控制系统引导,显存管理,系统调用等。
|--x86/*英特尔cpu及与之相兼容体系结构的子目录*/
||--boot/*引导程序*/
|||--compressed/*内核解压缩*/
||--tools/*生成压缩内核映像的程序*/
||--kernel/*相关内核特点实现方法,如讯号处理、时钟处理*/
||--lib/*硬件相关工具函数*
2.block目录
部份块设备驱动程序
3.crypto目录
加密、压缩、CRC校验算法
4.documentation
内核的文档
5.drivers目录
设备驱动程序
6.fs目录
储存各类文件系统的实现代码。每位子目录对应一种文件系统的实现,公用的源程序用于实现虚拟文件系统vfs。
||--devpts/*/dev/pts虚拟文件系统*/
||--ext2/*第二扩充文件系统*/
||--fat/*MS的fat32文件系统*/
||--isofs/*ISO9660光碟cd-rom上的文件系统*/
7.include目录
内核所须要的头文件。与平台无关的头文件在include/linux子目录下,与平台相关的头文件则置于相应的子目录中。
8.init目录
内核初始化代码
9.ipc目录
进程间通讯的实现代码
10.kernel目录
Linux大多数关键的核心功能都是在这个目录实现。(调度程序,进程控制,模块化)
11.lib目录
库文件代码
12.mm目录
mm目录中的文件用于实现显存管理中与体系结构无关的部份(与体系结构相关的部份在那里实现?)
13.net目录
网路合同的实现代码
||--802/*802无线通信合同核心支持代码*/
||--appletalk/*与苹果系统连网的合同*/
||--ax25/*AX25无线INTERNET合同*/
||--bridge/*桥接设备*/
||--ipv4/*IP合同族V4版32位轮询模式*/
||--ipv6/*IP合同族V6版*/
14.samples
一些内核编程的范例
15.scripts
配置内核的脚本
16.security
SElinux的模块
17.sound
音频设备的驱动程序
18.usr
cpio命令实现
19.virt
内核虚拟机