![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
RTOS-操作系统
小超电子笔记
有些时候走着走着,天就亮了。
展开
-
【嵌入式之RTOS】什么是互斥量?
互斥量(Mutex,全称为Mutual Exclusion Object)是一种常用的同步原语,用于保护对共享资源的访问,确保同一时间只有一个线程或任务能够访问该资源。通过合理使用互斥量,可以确保程序的稳定性和可靠性。互斥量可以看作是一个特殊的锁,它维护了一个内部状态,用于跟踪互斥量的拥有者。当一个线程或任务获得了互斥量之后,其他试图获取该互斥量的线程或任务将被阻塞,直到互斥量被释放。在这个例子中,两个线程分别调用increment函数,通过互斥量来保护对shared_value的访问,确保数据的一致性。原创 2024-07-30 21:33:20 · 343 阅读 · 0 评论 -
【嵌入式之RTOS】什么是著名的食客问题
例如,在多线程编程中,我们需要小心处理共享资源的访问,避免死锁和资源竞争问题。哲学家们交替进行思考和吃饭的行为。然而,由于筷子的数量有限,哲学家们可能会陷入死锁的状态,即每个人都拿起了左边的筷子,却都在等待右边的筷子,结果没有人能开始吃饭。著名的“食客问题”(Dining Philosophers Problem)是一个经典的计算机科学问题,用来说明并发编程中的资源竞争和死锁问题。这个问题最初是由荷兰计算机科学家Edsger Dijkstra提出的,用于探讨如何有效地分配有限的资源,避免死锁和饥饿等问题。原创 2024-07-30 21:31:22 · 150 阅读 · 0 评论 -
【嵌入式之RTOS】死锁问题详解
死锁(Deadlock)是多任务或多线程环境中一个常见的问题,尤其是在实时操作系统(RTOS)中,如果处理不当,会导致整个系统停止响应。死锁发生时,两个或多个任务互相等待对方持有的资源,从而形成了一个僵局,这些任务都无法继续执行下去。二、产生死锁的四个必要条件互斥条件(Mutual Exclusion): 至少有一个资源必须处于非共享模式,即一次只能由一个任务占用。如果另一个任务请求该资源,请求者将被阻塞,直到资源被释放。占有并等待。原创 2024-07-30 21:29:17 · 452 阅读 · 0 评论 -
【嵌入式之RTOS】什么是优先级反转
如果任务 B 持有一个资源锁,而任务 C 需要这个锁,这时任务 C 就会等待任务 B 释放锁。此时,如果更高优先级的任务 A 启动并准备运行,但由于任务 B 持有着资源锁,任务 A 无法获取这个锁,因此也无法执行,这就导致了优先级反转——即高优先级的任务 A 被较低优先级的任务 B 阻塞了。这个问题通常发生在多个任务共享一个资源(如一个互斥锁或信号量)时,低优先级的任务意外地阻塞了高优先级的任务。通过合理的设计和选择合适的解决方案,可以有效避免这个问题的发生,保证系统的稳定性和可靠性。原创 2024-07-30 21:26:43 · 110 阅读 · 0 评论