同步互斥

独立进程:不和其他进程共享资源或状态;确定性、可重现;调度顺序不重要;

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


新进程分配标识中的可能错误(给两个进程分配的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

原子操作指令锁特征:优点是,适用于单处理机或共享主存的多处理器中的任意数量的进程同步;支持多临界区。缺点是:忙等待消耗处理器时间,可能导致饥饿;出现死锁:低优先级进程占用临界区资源,高优先级的请求获得处理机并等待临界区。

禁用中断

仅限于单处理器

软件方法

复杂

原子操作指令

单处理机,多处理机均可

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值