基本概念
Linux应用程序的定义:

Linux编程通常可以划分为用户态和内核态,这是Linux非常关键的隔离 机制,用户态代码无法直接访问硬件资源和内核核心数据 ,必须通过系统调用 (System Call)向内核发起请求,由内核代执行。因为用户态程序崩溃不会直接导致整个系统崩溃;内核态代码出错则可能引发系统宕机,因此内核态代码需严格保证稳定性。当用户态程序需要执行特权操作(如读写文件、分配内存)时,会触发陷入内核(Trap),完成后返回用户态继续执行。
| 层级 | 别称 | 运行程序 | 典型示例 |
|---|---|---|---|
| 用户态(User Mode) | 用户空间、用户态 | 用户程序、应用程序、后台服务 | ls、pwd、ps、浏览器、APP |
| 内核态(Kernel Mode) | 内核空间、内核态 | 内核程序、驱动程序 | 进程调度、内存管理、设备驱动、系统调用处理 |
典型的交互流程如下:
1.用户态程序(如ls)发起文件读取请求。
2.触发系统调用,CPU 切换至内核态。
3.内核态驱动 / 文件系统执行实际硬件操作。
4.执行完成后,CPU 切换回用户态,将结果返回给用户程序。
差异辨析
应用程序和驱动程序、单片机程序有何不同?

驱动程序通常静态编译,应用程序用gcc直接就能编译运行。
编写方法
