linux内核基础

来源:互联网 发布:买车下个什么app软件 编辑:程序博客网 时间:2024/05/20 03:43

Linux内核简介

一、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内核架构

1. 系统调用接口

SCI 层为用户空间提供了一套标准的系统调用函数来访问Linux内核,搭起了用户空间到内核空间的桥梁。

2. 进程管理
进程管理的重点是创建进程(fork、exec),停止进程(kill、exit),并控制它们之间的通信(signal 或者 POSIX 机制)。进程管理还包括控制活动进程如何共享CPU,即进程调度。

3. 内存管理
内存管理的主要作用是控制多个进程安全地共享内存区域。

4. 网络协议栈

内核协议栈为Linux提供了丰富的网络协议实现。

5. 虚拟文件系统(VFS)
VFS隐藏各种文件系统的具体细节,为文件操作提供统一的接口。

6. 设备驱动
Linux 内核中有大量代码都在设备驱动程序中,它们控制特定的硬件设备。

7. 体系结构相关代码Architecture-depended code

与CPU密切相关的代码,如ARM、x86,是不同的微处理器可以使用同一套代码。


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

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
内核虚拟机


原创粉丝点击