大兴网站建设公司,性价比高的域名备案加急,重庆网站建设搜外,施工企业现状1、中断屏蔽方法
利用 “开/关中断指令” 实现#xff08;与原语的实现思想相同#xff0c;即在某进程开始访问临界区到结束访问为止都不允许被中断#xff0c;也就不能发生进程切换#xff0c;因此也不可能发生两个同时访问临界区的情况#xff09; 优点#xff1a;简单…
1、中断屏蔽方法
利用 “开/关中断指令” 实现与原语的实现思想相同即在某进程开始访问临界区到结束访问为止都不允许被中断也就不能发生进程切换因此也不可能发生两个同时访问临界区的情况 优点简单、高效
缺点 不适用于多处理机多个处理机访问同一个临界区导致其中剩余的处理机会一值等待 只适用于操作系统内核进程 不适用于用户进程因为开/关中断指令只能运行在内核态这组指令如果能让用户随意使用会很危险
2、TestAndSet
简称 TS 指令也有地方称为 TestAndSetLock 指令或 TSL指令
TSL 指令是用硬件实现的执行的过程不允许被中断只能一气呵成。以下是用 C 语言描述的逻辑 若刚开始 lock 是 false则 TSL 返回的 old 值为 falsewhile 循环条件不满足直接跳过循环进入临界区。若刚开始 lock 是 true则执行 TLS 后 old 返回的值为 truewhile 循环条件满足会一直循环直到当前访问临界区的进程在退出区进行 “解锁”。
相比软件实现方法TSL 指令把 “上锁” 和 “检查” 操作用硬件的方式变成了一气呵成的原子操作。
优点 实现简单无需像软件实现方法那样严格检查是否会有逻辑漏洞; 适用于多处理机环境 其他进程会卡在 ts 循环里面
缺点
不满足 “让权等待” 原则暂时无法进入临界区的进程会占用 CPU 并循环执行 TSL 指令从而导致 “忙等” 。
3、Swap指令
有的地方也叫 Exchange 指令或简称 XCHG 指令。 Swap 指令是用硬件实现的执行的过程不允许被中断只能一气呵成。以下是用 C 语言描述的逻辑 逻辑上来看 Swap 和 TSL 并无太大区别都是先记录下此时临界区是否已经被上锁记录在 old 变量上)再将上锁标记 lock 设置为true最后检查 old如果 old 为false则说明之前没有别的进程对临界区上锁则可跳出循环进入临界区。
优点 实现简单无需像软件实现方法那样严格检查是否会有逻辑漏洞; 适用于多处理机环境 其他进程会卡在 ts 循环里面
缺点
不满足 “让权等待” 原则暂时无法进入临界区的进程会占用 CPU 并循环执行 Swap 指令从而导致 “忙等” 。
4、整体框架