目录的层级结构

在Linux2.6以后的内核版本当中,一个内核任务可以被抢占,从而提高系统的实时性。可以极大地增强
系统的用户交互性。就如用户觉得鼠标单击的时候得到了更快速的相应。但是2.6以后的内核还是存在一些
不可抢占的区间,例如中断上下文,软中断上下文和自旋锁锁住的区间。如果给Linux打上RT-Preempt补丁,
则软中断和中断都被线程化了,自旋锁也被互斥体替换,Linux内核变得能支持硬实时,Linux2.6以后的内核
仍然存在中断,软中断,自旋锁等原子上下文进程无法抢占执行的情况。原因是Linux本身只提供软实时能力
的原因。
改进的线程模型。
2.6以后的内核版本使用NPTL模型,操作速度得以极大的提高。
虚拟内存的变化
从虚拟内存的角度来看,新内核融合了r-map(反向映射)技术,显著改善虚拟内存在一定大小负载下的性能
建立方向映射,通过页结构体快速寻找到页面的映射。
文件系统
内核增加了对日志文件系统的支持。解决了之前版本的不足。增加了对POSIX标准访问的控制支持,可以给
指定的文件在文件系统中潜入元数据。
音频
高级Linux音频体系结构。
新的音频体系结构支持USB音频和MIDI设备。并支持全双工重放等功能。
总线,设备和驱动模型(这个比较关心)
总线,设备,驱动三者之间因为一定的关系性而实现对设备的控制。总线是三者联系起来的基础。通过一种
总线类型,将设备和驱动联系起来。总线类型中的match()函数用来匹配设备和驱动,当匹配操作完成之后就会执
行驱动程序中的probe()函数。
电源管理
支持高级配置和电源接口。用于调整CPU在不同负载下工作于不同的时钟频率。目前内核电源管理相对比较完

联网和IPSee
内核加入了对IPSee的支持。删除了原来内置的HTTP服务器khttpd,加入了对新的NFSv4 客户机/服务器的支持。
并且改进了对IPV6的支持。
用户界面层
内核重写了帧缓冲/控制台层,人机界面曾还加入了对近乎所有接口设备的支持。
在 ARM Linux的代码在时钟,DMA,pinmux,计时器刻度等诸多方面都进行了优化,删除了arch/arm/mach-xxx/include/mach
头文件目录,以至于Linux3.7以后的内核可以支持多平台,即同一份内核镜像运行于多家SoC公司的多个芯片,实
现一个Linux可使用所有的ARM系统。


Linux内核的组成


Linux内核源码包含如下:
arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录,目前为止支持30种左右的体系结构
在arch目录下,存放的是各个平台以及各个平台的芯片对Linux内核进程调度,内存管理,中断等的支持,以及每个
具体的SoC和电路板的板级支持代码。
block:块设备驱动程序I/O调度
crypto:常用加密散列算法(如AES,SHA)还有一些CRC校验算法
documentation:内核部分的通用解释和注释。
driver:设备的驱动程序,每个不同的驱动占用一个子目录
fs:所支持的各种文件系统
include:头文件,与系统相关的头文件放置在include/linux子目录下。
init:内核的初始化代码,著名的start_kernel()就位于init/main.c当中。
ipc:进程间通信的代码。
kernel:内核最核心的部分,包括进程调度,定时器等,而和平台相关的一部分代码放在arch/*/kernel目录下。
lib:库文件代码.
mm:内存管理代码,和平台相关的则放在arch/*/linux
net:网络相关的代码,实现各种常见的网络协议。
scripts:用于配置内核的脚本文件
security:主要是一个SELinux的模块
sound:ALSA,OSS音频设备的驱动核心代码和常用设备驱动。
usr:实现用于打包和压缩的cpio等
include:内核API级别头文件。


内核一般要做到drives与arch的软件按构架的分离,驱动当中不包含板级信息,让驱动跨平台。同时内核的通用部分
则与具体的硬件剥离。


先到这里,爱你YZ

你可能感兴趣的:(目录的层级结构)