Linux操作系统从总体上可划分为Linux内核与应用程序两大部分,Linux内核是Linux操作系统的核心和灵魂,包括系统调用接口,进程管理模块,存储管理模块吗,虚拟文件系统,网络协议栈,处理器体系结构相关代码以及设备驱动等,例如下图。
这其中设备驱动程序是Linux内核最重要的组成成分,是硬件与Linux操作系统之间的接口,设备驱动采用操作的标准接口,根据硬件设备的具体工作方式通过读写硬件的寄存器,进行硬件的操作和控制。完成软件和硬件中间的数据交互,中断处理和DMA通信等工作。
系统调用接口可在Linux内核源码中找到,当使用时需要包含的头文件包括但不限于以下:等,主要的包括的操作接口有open,close,read,write,seek等等,以下是Linux设备驱动与文件系统间的关系图。
进程管理模块sched.c程序,其中有关进程调度的基本函数有schedule,sleep_on,weekup等,这些函数分别负责调度下一个将要运行的进程,以及负责对任务的筛选唤醒,等待和休眠等工作。
在Linux系统中几乎所有的东西都是文件,设备驱动也是采用文件操作接口实现。无论是字符设备还是块设备,用户对设备的操作都是通过虚拟文件系统转换为设备驱动与硬件操作函数的交互来实现。
为了避免无限扩大内核规模。以及支持新的设备和功能,Linux内核对设备驱动以及内核中的各功能采用可模块化的方式进行控制,当用户需要的时候可以动态加载,使用完成后可以动态卸载。另外,用户可以对Linux内核进行定制化的裁剪,去掉不需要的部分,保证了内核的紧凑性和可扩展性
以上就是本人对Linux操作系统架构的简单了解和学习。欢迎各位大佬指正和补充。
~~~完~~~