在学习Linux驱动前,先了解一下Linux的整个系统结构,上层应用程序对底层硬件的操作,在中间会经历哪些过程?
一、Linux系统结构图以及代码关系:
用户空间占用3G,内核空间占用1G,用户空间可以有多个app(应用程序),它们可以同时调用一个内核。
代码关系:
Application--调用-->system call interface--调用-->kernel subsystem--调用-->device driver--指挥-->hardware
二、Linux kernel介绍
1. 内核是一个裸机程序
(1) 内核线程的栈小, 所以非静态局部变量不能过大
(2) 不支持浮点
(3) 驱动是内核的一部分,必须和内核一起编译一起运行
2.Linux内核5大功能模块:进程管理、内存管理、文件系统、设备管理、网络管理
3.在Linux中,一切皆文件,文件和设备在描述时要将属性和操作做方法放到一起统一描述(属性+操作方法),下图是Linux内核层