zl程序教程

您现在的位置是:首页 >  其它

当前栏目

a.kernel-talk

Kernel Talk
2023-09-11 14:13:59 时间

==============================================================================

谈谈 linux kernel

在这个互联网的年代,还有什么比linux kernel更成功呢?没有.

也许你以为我要讲一讲linux kernel的历史了,NO,他的组织形式要比他的历史有价值的多
的多.如果你喜欢并使用了他,就让所有人看到你的想法(code),一些商业公司通过从linux
的kernel获得回报,反过来再贡献给kernel,这样的一个比较松散的组织推动了从大教堂到
集市的过渡,这里认可已经在过往的经历中取得的经验(UNIX)并将其视作自己的规范标准,
起码你不用总是跟在那些人的屁股后面追着问:我怎么从长城的山海关走到嘉峪关?依稀可
见的山脉(document)就在那里,攀登吧!

document!document!document!document!document!document!document!document!
!!!!!!!!!!!!!没有文档的开源项目就是一个已经死了的项目!!!!!!!!!!!!!!!!!!!
document!document!document!document!document!document!document!document!

kernel目录树

当你从官方网站(www.kernel.org)取来一份kernel拷贝解压出来时是一个目录树,这会让
你感到手足无措,我该从哪里开始呢?敲上两条命令编译一下就能用,NO,这是一个操作系统
并且是一个大工程,先让我们大致看一下目录树中各个目录是做什么的.

arch(架构)

包含和硬件体系结构相关的代码,每种平台占一个相应的目录.各个特定体系结构的目录只
是少有不同,其结构类似与内核的顶层目录.

block(块)

用于实现块设备的基本框架和块设备的I/O调度算法.

crypto(加密)

包含了各种密码算法的实现,内核的加密层实现.

Documentation(文档)

包含了大量文本文件,主要是内核各个方面相关的文档.

drivers(驱动)

这里包含了每个设备的驱动程序,每种设备占用一个目录,所占的空间相当大,但其中只有
少量成员会出现在编译后的内核中,尽管linux现在支持大量的驱动程序,但是对于每一个
具体的系统而言,进需要少量驱动程序.

firmware(固件)

这些固件通常是一种写入ROM中的一些机器码,内核本身不加载任何固件,而只是发一个通
知给用户空间,等待用户空间程序将固件的镜像文件推送给内核.

fs(file system 文件系统)

所有kernel支持的文件系统的源代码,每一种文件系统占一个子目录.

include(头文件)

知道C代码怎么编写,这个目录就不难理解,包含了所有具备公开导出函数的头文件,内核目
录树的头文件,各个部分的头文件都集中在这里,并且用子目录将这些头文件清晰的分割开
来.

init(初始化)

用于初始化内核的代码.

ipc(System V IPC 进程间通信)

进程间通信的手段有:管道 信号 消息队列 共享内存 信号量 套接口

kernel(内核)

包含了内核的核心组件的代码,这些包括进程管理,进程调度,中断处理,系统时钟管理,同
步机制,在线补丁,事件管理,电源管理等等.

lib(库)

包含了通用库,可用于内核的所有部分,包括用于实现各种树的数据结构和数据压缩并且还
实现了一个C库的子集.

mm(内存管理)

和平台无关的内存管理代码,和平台有关的代码放在arch/*/mm下,包括通用的分页模型的
框架,伙伴算法的实现和对象缓冲器slab的实现代码.

net(网络)

所实现的各种各样的网络协议,每种协议占用一个子目录.

samples(样例)

就是一些特性的样例.

scripts(脚本)

该目录不包括任何内核核心代码,包含了配置和编译内核或进行其它任务所需的所有的脚
本和实用程序.

security(安全)

该目录下的文件主要用于安全框架和密钥管理.

sound(声音)

存放了声音系统架构,包含ALSA(Advanced Linux Sound Architecture)音频框架,以及具
体声卡的设备驱动程序,其中还有OSS(Open Sound System)音频框架.

tools(工具)

关于内核的各种各样的工具.

usr(用户)

该目录中的代码为内核尚未完全启动时执行用户空间代码提供了支持.

virt(虚拟化)

内核虚拟化的代码,主要是kvm内核虚拟化.

==============================================================================