linux内核结构框图:
- Unix和Linux系统内核都采用的都是如下图所示的结构,
其中可以看到三个层次:硬件级、内核级和用户级。
用户程序通过陷入完成由用户态到内核态的转换。
系统调用作为用户级与内核级交互方式,分为2部分:与文件子系统的交互和与进程控制子系统的交互。
文件子系统管理文件。包括:分配文件空间、管理空闲空间、控制对文件的存取以及为用户检索数据。
进程控制子系统负责进程同步、进程间通信、进程调度和存储管理。
-
其中用户应用程序由基础C和程序库组成,程序库提供应用程序支配内核干活的接口,程序库通过系统调用接口然后操控底层各种东西,比如:程序里面调用
open、read、write
函数,通过程序库到达系统调用,然后会在系统调用那里会调用sys_open、sys_read、sys_write
等函数,然后sys_open、sys_read、sys_write
等函数会根据程序里面函数的参数判断你要打开什么类型的文件会产生不一样的指令信息,然后系统调用那里的函数会去分析打开文件的类型(磁盘上的文或者串口等设备文件),然后进行操作。