Linux内核源码
参考目录:rk3588_linux_xxx\kernel
Linux内核源代码目录
·arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录,如i386、arm、arm64、 powerpc、mips等。Linux内核目前已经支持30种左右的体系结构。在arch目录下,存放的是各个平台以及 各个平台的芯片对Linux内核进程调度、内存管理、中断等的支持,以及每个具体的SoC和电路板的板级 支持代码。
·block:块设备驱动程序I/O调度。
·crypto:常用加密和散列算法(如AES、SHA等),还有一些压缩和CRC校验算法
·documentation:内核各部分的通用解释和注释。
·drivers:设备驱动程序,每个不同的驱动占用一个子目录,如char、block、net、mtd、i2c等。
·fs:所支持的各种文件系统,如EXT、FAT、NTFS、JFFS2等。
·include:头文件,与系统相关的头文件放置在include/linux子目录下。
·init:内核初始化代码。著名的start_kernel()就位于init/main.c文件中。
·ipc:进程间通信的代码。
·kernel:内核最核心的部分,包括进程调度、定时器等,而和平台相关的一部分代码放在arch/*/kernel 目录下。
·lib:库文件代码。
·mm:内存管理代码,和平台相关的一部分代码放在arch/*/mm目录下。
·net:网络相关代码,实现各种常见的网络协议。
·scripts:用于配置内核的脚本文件。
·security:主要是一个SELinux的模块。
·sound:ALSA、OSS音频设备的驱动核心代码和常用设备驱动。
·usr:实现用于打包和压缩的cpio等。
·include:内核API级别头文件。
进程
使用task_struct结构体来描述进程,包含描述该进程内存资源、文件系统资源、文件资源、tty资源、信号处理等的指针。
./kernel/include/linux/sched.h
Linux的线程采用轻量级进程模型来实现,在用户空间通 过pthread_create()API创建线程的时候,本质上内核只是创建了一个新的task_struct,并将新task_struct的 所有资源指针都指向创建它的那个task_struct的资源指针。