Linux内核概述——之一

Linux内核概述

 

Linux内核模块

Linux内核主要由进程调度(SCHED)、内存管理(MM)、 虚 拟 文 件 系 统 (VFS)、网络接口(NET)和进程间通信(IPC)5个子系统组成。

                           就5个子系统搞定一个就是搞定20%了,是不是信心大增?咳咳~~

 

进程调度控制系统中的多个进程对CPU的访问,使得多个进程能在CPU中“微观串行,宏观并行”地执行。进程调度处于系统的中心位置,内核中其他的子系统都依赖它,因为每个子系统都需要挂起或恢复进程。

内存管理的主要作用是控制多个进程安全地共享主内存区域。当CPU提供内存管理单元(MMU)时,Linux内存管理完成为每个进程进行虚拟内存到物理内存的转换。Linux  2.6引入了对无MMU CPU的支持

Linux虚拟文件系统(VFS)隐藏各种了硬件的具体细节,为所有的设备提供了统一的接口。而且,它独立于各个具体的文件系统,是对各种文件系统的一个抽象,它使用超级块super  block存放文件系统相关信息,使用索引节点inode存放文件的物理信息,使用目录项dentry存放文件的逻辑信息。

网络接口提供了对各种网络标准的存取和各种网络硬件的支持。

进程通信支持提供进程之间的通信,Linux支持进程间的多种通信机制,包含信号量、共享内存、管道等,这些机制可协助多个进程、多资源的互斥访问、进程间的同步和消息传递。

 

Linux内核源代码目录结构

l   arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录,如i386、arm、powerpc、mips等。

l   block:块设备驱动程序I/O调度。

l   crypto:常用加密和散列算法(如AES、SHA等),还有一些压缩和CRC校验算法。

l   Documentation:内核各部分的通用解释和注释。

l   drivers:设备驱动程序,每个不同的驱动占用一个子目录,如char、block、net、mtd、i2c等。 

l   fs:支持的各种文件系统,如EXT、FAT、NTFS、JFFS2等。

l   include:头文件,与系统相关的头文件被放置在include/linux子目录下。

l   init:内核初始化代码。

l   ipc:进程间通信的代码。

l   kernel:内核的最核心部分,包括进程调度、定时器等,而和平台相关的一部分代码放在arch/*/kernel目录下。

l   lib:库文件代码。

l   mm:内存管理代码,和平台相关的一部分代码放在arch/*/mm目录下。

l   net:网络相关代码,实现了各种常见的网络协议。

l   scripts:用于配置内核的脚本文件。

l   security:主要是一个SELinux的模块。

l   sound:ALSA、OSS音频设备的驱动核心代码和常用设备驱动。

l   usr:实现了用于打包和压缩的cpio等。

 

关于Linux内核补丁

内核如果是git下来的,本地可以通过gitlog来查询,如果没有可以在kernel.org上查,链接如下:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/

 

你可能感兴趣的:(Linux,内核相关)