一、并发与竞争简介
多个任务、中断都能访问的资源叫共享资源,在驱动开发中注意对共享资源的保护,防止共享资源的并发访问造成混乱。
1、什么是并发?
【答】:并发就是多个 “用户” 同时访问同一个共享资源,并发访问带来的问题就是竞争。
2、什么是竞争?
【答】:Linux 是多任务操作系统,肯定存在多个任务共同操作同一段内存或设备,这些任务可能会相互覆盖这段内存中的数据,造成内存数据混乱。
3、造成 Linux 系统并发产生的原因?
(1)多任务(线程)并发访问
(2)抢占式并发访问
(3)中断程序并发访问
(4)SMP(多核)核间并发访问
4、保护的内容是什么?
【答】:某个线程局部变量不需要保护,要保护的是多个线程都会访问的共享数据。如:全局变量,设备结构体成员。
二、原子操作
对于共享数据进行原子操作(不可分割的操作),一般原子操作用于变量或者位操作。
对于基本的赋值操作,如:a = 3,ARM 架构不支持直接对寄存器进行读写操作,它在 ARM 中执行的步骤:
ldr r0