目录
1. 内核结构框图
由上图可以认识到 Linux 分为三个层次:用户级、内核级、硬件级。
系统调用作为用户级与内核级交互方式,分为2部分:与文件子系统的交互和与进程控制子系统的交互。
- 文件子系统管理文件包括:分配文件空间、管理空闲空间、控制对文件的存取以及为用户检索数据。
- 进程控制子系统负责进程同步、进程间通信、进程调度和存储管理。
Linux 内核主要包括5个模块:进程调度模块、内存管理模块、文件系统模块、进程间通信模块和网络接口模块。
- 进程调度模块:用来负责控制进程对CPU资源的使用。
- 内存管理模块:用于确保所有进程能够安全地共享机器主内存区。
- 文件系统模块:用于支持对外部设备的驱动和存储。(一些皆文件)
- 进程间通信模块:用于支持多种进程间的信息交换方式。通过系统调用实现进程间的信息交换。
- 网络接口模块:提供多种网络通信标准的访问并提供对多种网络硬件的支持。
所有的模块都要通过进程调度来运行。
举个栗子:用户空间调用 open 会通过系统调用进入到内核态调用 sys_call、然后调用 VFS 中的sys_open,VFS 会帮我们区分不同文件类型且根据主次设备号找到对应的设备调用驱动程序中的 open 函数,read、write 等类似。
2. Linux 架构图
最内层是硬件
Linux shell 概念:
shell 是一个程序,当我们在终端敲击命令行并回车的时候,系统就会启动一个 shell 程序, 此时它就会产生一个系统调用,操作 Linux 内核做出一系列的动作并返回数据。