Linux应用编程介绍

基本概念

Linux应用程序的定义:

Linux编程通常可以划分为用户态和内核态,这是Linux非常关键的隔离 机制,用户态代码无法直接访问硬件资源和内核核心数据 ,必须通过系统调用 (System Call)向内核发起请求,由内核代执行。因为用户态程序崩溃不会直接导致整个系统崩溃;内核态代码出错则可能引发系统宕机,因此内核态代码需严格保证稳定性。当用户态程序需要执行特权操作(如读写文件、分配内存)时,会触发陷入内核(Trap),完成后返回用户态继续执行。

层级 别称 运行程序 典型示例
用户态(User Mode) 用户空间、用户态 用户程序、应用程序、后台服务 lspwdps、浏览器、APP
内核态(Kernel Mode) 内核空间、内核态 内核程序、驱动程序 进程调度、内存管理、设备驱动、系统调用处理

典型的交互流程如下:

1.用户态程序(如ls)发起文件读取请求。

2.触发系统调用,CPU 切换至内核态。

3.内核态驱动 / 文件系统执行实际硬件操作。

4.执行完成后,CPU 切换回用户态,将结果返回给用户程序。

差异辨析

应用程序和驱动程序、单片机程序有何不同?

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

编写方法

相关推荐
AlfredZhao2 天前
生产环境里,为什么不建议把普通端口直接暴露到公网?
linux·https·443·80
ForTime2 天前
HAL库大雷预警!STM32 HAL库CAN启动超时解决办法
嵌入式
大辉狼_音频架构2 天前
Vol. NXP SOF Arch
嵌入式
戴为沐3 天前
Linux内存扩容指南
linux
zylyehuo3 天前
Linux 彻底且安全地删除文件
linux
用户805533698034 天前
主线 U-Boot 上 RK3506:和闭源 rkbin 拔河的三个隐性契约
linux·嵌入式
用户034095297914 天前
linux fcitx 5 雾凇拼音 设置在中文输入法下仍然输入英文标点
linux
Web3探索者6 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
zylyehuo6 天前
Linux系统中网线与USB网络共享冲突
linux
荣--7 天前
在 strip 二进制 + 基址随机化的栈里做崩溃去重 —— 三阶段算法与一行 Crash Flag
嵌入式·崩溃分析·栈指纹·去重算法