linux内核主要结构
用户程序:应用程序
库函数:应用程序中会调用大量的c库函数(文件io(open,read,write...
),进程,线程,网络等)
系统调用接口:库函数会触发一个软中断(0x80系统调用),进入系统调用,在内核中有用汇编实现一个系统调用接口,在应用程序/库函数中使用的open/read
等通过系统调用接口转换成对应的"sys_open","sys_read"系统函数。
文件子系统:文件io函数操作文件,需要文件系统,针对不同的文件系统还有一个抽象的虚拟文件系统(VFS),sys_open,read会根据操作的文件类型(普通文件、驱动文件),进入不同的的设备(块设备、字符设备),块设备会通过块设备的驱动程序去读写硬盘等,字符设备会根据会根据主设备节点寻找驱动通过驱动程序最终实现硬件的控制。
进程控制子系统:进程管理函数(进程fork,线程pthread,进程间通信)会通过系统函数,操作进程控制子系统,控制cpu的资源分配,有一些进程会通过文件系统操作系统文件或驱动文件控制对应硬件,有一部分会直接控制硬件???