配套视频学习链接:https://www.bilibili.com/video/BV1HE411w7by?p=4&vd_source=d488bc722b90657aaa06a1e8647eddfc
目录
Linux应用程序编程
Linux应用程序编程
Linux文件I/O(input/output)
Linux文件I/O(五种I/O模型)
Linux多进程
Linux多线程
网络通信(socket编程)
Linux应用编程框架
Linux应用程序编程
- 应用编程即Linux系统编程
- 基于Linux内核之上,基于'系统调用’或者库函数的编程。
- Linux内核中设置了一组用于实现各种系统功能的子程序,称为系统调用。
- 系统调用由操作系统核心提供,运行于核心态;而普通的函数调用由函数库或用户自己提供,运行于用户态。
- '系统调用’在ARM系统中一般用'软中断’的方式来实现。
- ARM处理器工作模式:
用户模式(USR):正常程序执行模式,不能直接切换到其他模式
系统模式(SYS):运行操作系统的特权任务,与用户模式类似,但具有可以直接切换到其他模式等特权
快中断模式(FIQ):支持高速数据传输及通道处理,FIQ异常响应时进入此模式
中断模式(IRQ):用于通用中断处理,IRQ异常响应时进入此模式
管理模式(SVC):操作系统保护模式,系统复位和软件中断响应时进入此模式(由系统调用执行软中断SWI命令触发)
中止模式(ABT):用于支持虚拟内存和/或存储器保护,在ARM7TDMI没有大用处
未定义模式(UND):支持硬件协处理器的软件仿真,未定义指令异常响应时进入此模式
Linux应用程序编程
- 包含丰富的内容(可参照'系统调用'清单)
文件I/O
多进程
多线程
网络SOCKET编程
时间函数、文件系统操作
用户管理、内存管理等
Linux文件I/O(input/output)
- 一切皆文件(串口/LED等)
- 文件I/O(inputoutput)实际就是对文件的读写操作
open()
read()
write()
ioctl()
close()
文件描述符(句柄)
fd=open(“目录文件”)
- 标准I/O(带缓冲的IO)
可移植性更好
Linux文件I/O(五种I/O模型)
阻塞
非阻塞
信号
多路复用
异步
Linux多进程
- 多进程是多任务在Linux上的具体实现,多任务是操作系统的基本功能。
- 进程的三种状态:就绪、阻塞、运行。
- fork(),分岔
- 进程间通信
管道(匿名管道和命名管道)
信号
信号量
消息队列
共享内存
套接字
Linux多线程
- 单个进程内可以运行多个线程,线程是操作系统时间片调度的最小单位
- 每个线程可使用进程的全局变量
- 线程生成函数:pthread create()
- 线程同步(共用资源,合理分配资源的方式)
互斥锁
条件变量
读写锁
信号量
网络通信(socket编程)
网络通信是重点
很多操作系统的网络编程方式是一样的,都采用了socket方式