您的位置:首页 > 其它

同步互斥

2015-06-04 18:59 260 查看
独立进程:不和其他进程共享资源或状态;确定性、可重现;调度顺序不重要;

并发进程(一个时间段有几个,某个时间点只有一个):在多个进程间资源共享;不确定、不重现:共享资源、提高速度、模块化



新进程分配标识中的可能错误(给两个进程分配的pid相同),因为创建进程操作被切断
原子操作Atomic Operation:一次不存在任何中断或失败的操作(不存在部分执行,要么操作完成,要么没有执行)。



互斥mutual exclusion:一个进程占用资源,其他资源不能使用;
死锁deadlock:多个进程各自占用部分资源,形成循环等待;
饥饿starvation:一些进程轮流占用资源,一个进程一直得不到资源。

2、临界区
临界区critical section:进程中访问临界资源的一段需要互斥执行的代码,任何时候只允许一个进程。进入区entry section;退出区exit section;剩余区remainder section
临界区访问规则:空闲则入、忙则等待、有限等待(不能无限制等待)、让权等待(不能进入的,应释放CPU)。
实现方法:禁用中断、软件方法、更高级的抽象方法
(1)禁用硬件中断:没有中断,没有上下文切换,没有并发。进入临界区,禁止所有中断,并保存标志;离开临界区,使能所有中断,并恢复标志。缺点是:整个系统可能会因中断而退出,导致其他处于饥饿状态,临界区可能很长。
(2)基于软件,Peterson算法:满足线程Ti和Tj之间互斥的经典的基于软件的解决办法。(理解代码的含义)





Dekkers算法扩展到多个线程;n个线程的软件方法:Eisenberg和McGuire
(3)更高级的抽象方法:硬件提供一些原语
一个二进制变量(锁定/解锁):Lock::Acquire()一直等待,然后得到锁;Lock::Release()释放锁,唤醒任何等待锁的进程



原子操作指令:CPU体系结构中提供一些特殊的原子操作指令,不会部分处理的,有测试和置位指令Test-Set(先读取值,测试是否为1,内存单元值设为1),交换指令。



使用TS指令实现自旋锁spinlock
原子操作指令锁特征:优点是,适用于单处理机或共享主存的多处理器中的任意数量的进程同步;支持多临界区。缺点是:忙等待消耗处理器时间,可能导致饥饿;出现死锁:低优先级进程占用临界区资源,高优先级的请求获得处理机并等待临界区。
禁用中断
仅限于单处理器
软件方法
复杂
原子操作指令
单处理机,多处理机均可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: