版权声明:本文为CSDN博主「诸葛一帆丶」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ivan804638781/article/details/79472386
1.什么是并发
并发是指具有有处理多个任务的能力,不一定要同时。
2.什么是并行
并行是指具有同时处理多个任务的能力。
3.并发和并行的关系/区别
“并行”概念是“并发”概念的一个子集。也就是说,你可以编写一个拥有多个线程或者进程的并发程序,但如果没有多核处理器来执行这个程序,那么就不能以并行方式来运行代码。
4.并发与竞争
如果多个线程/进程并发执行,并且都在对某一共享资源(硬件资源和软件上的全局变量、静态变量等)进行访问,则很容易导致竞争。
5.产生竞争情景
-对称多处理器( SMP)。多个CPU共同访问同一块共享资源,就会出现竞争。
-内核进程的抢占。一个低优先级的进程可能被另一个更高优先级的进程抢占。如果两个进程都访问了同一块共享资源,就会出现竞争。
-中断。中断可以打断正在执行的进程,若中断处理程序访问了进程正在访问的资源,则也会出现竞争。
6.竞争对共享资源的影响
如果在访问共享资源时不独占该共享资源,可能会造成资源异常(如变量值混乱、设备出错或内存块内容不是期望值等),进而导致程序运行异常甚至崩溃。
7.解决竞争问题
解决竞争问题的途径是保证对共享资源的互斥访问。
8.什么是互斥
互斥是指一个执行单元在访问共享资源的时候,其它的执行单元被禁止访问。
8.实现互斥方法
实现互斥有多种方法:信号量、互斥锁、自旋锁、临界区、
9.什么是同步
所谓同步,可以理解为执行一个任务时,在没得到结果之前,系统处于阻塞状态,只有这个任务结束之后才往下执行其它任务。
10.同步和互斥的关系
互斥要求两个任务不同时发生;同步要求两个任务按照一定次序依次发生(不同时发生);同步是一种特殊的互斥。即”同步是互斥的子集。“
11.什么是异步
所谓异步,可以理解为在执行一个任务时,系统直接返回去执行其他事,过段时间再去获取之前任务的结果。
12.同步和异步的区别
-同步就是一件事,一件事情一件事的做。异步就是,做一件事情,不引响做其他事情。例如:吃饭和说话,只能一件事一件事的来,因为只有一张嘴;但吃饭和听音乐是异步的,因为,听音乐并不引响我们吃饭。
中断:中断其实可以分为同步中断和异步中断,然后…它们俩还有一个名字,叫“异常”和“中断”…其实还可以叫它俩…“软件中断”和“硬件中断”,超级混乱…
同步中断/异常/软件中断:同步中断(它既然有“同步”的概念说明它和时钟应该会有点关系吧...)是指在一条指令结束完之后,CPU才会发出中断,而不是马上执行中断,比如系统调用,他就采用了同步中断(或者叫软中断/异常/软件中断);
软中断进入到异常向量中的SWI模式,而不是FIQ/IRQ模式;
硬中断一定是抢占的吧,CPU立即停止当前任务,保存中断上下文,切换到IRQ/FIQ模式
软中断我用同样的方式去理解的话,应该也是发生抢占,CPU先执行当前的任务,直到当前任务结束时,再产生中断,保存中断上下文,切换到SWI模式?
软中断触发条件:
这个我看过,更标准的说法应该是在每一个时钟周期CPU都会产生一次调度,这就是系统分时执行各个进程的;然后在每一次调度结束前,CPU都会判断当前是否产生软中断,如果产生了软中断那就会开始处理,保存中断上下文,执行软中断啥的
禁止内核抢占的函数:preempt_disable()和preempt_enable()
中断指的是发生在同一CPU下的抢占;而抢占可以是在不同CPU下发生的。因此,大致可以概括为,中断是抢占的一部分,抢占包括中断。