忙则等待、有限等待、空闲让进、让权等待

这四个概念都是描述进程并发执行时,进程调度算法需要满足的条件,主要用于保证进程的公平性和避免死锁。它们通常在操作系统课程中讨论进程同步和互斥的上下文。

1. 忙则等待 (Busy Waiting):

  • 含义: 一个进程需要等待某个资源或条件满足时,它并不放弃CPU,而是不断地循环检查条件是否满足。如果条件不满足,进程就一直占用CPU进行空转,直到条件满足为止。
  • 特点: 效率非常低,浪费大量的CPU时间。因为即使条件不满足,进程依然占据着CPU资源,其他进程无法获得执行机会。 这就像一个人不停地盯着门,看门有没有打开,而不是去做其他的事情。
  • 适用场景: 某些对实时性要求极高的系统,比如嵌入式系统或实时操作系统,可能需要使用忙等待来保证极低的延迟。 但是,这种场景非常有限,一般不推荐使用。
  • 缺点: CPU利用率低,容易造成系统性能下降。

2. 有限等待 (Bounded Waiting):

  • 含义: 一个进程等待资源或条件时,它等待的时间是有限的。 换句话说,一个进程等待获得资源的时间不会无限长,它有一个上限。 这保证了不会出现一个进程一直被饿死的情况。
  • 特点: 保证了进程的公平性,避免了优先级反转等问题。 优先级反转是指低优先级进程持有高优先级进程需要的资源,导致高优先级进程等待无限长,这在没有有限等待机制的情况下可能发生。
  • 适用场景: 任何需要保证进程公平性的系统,例如多任务操作系统。
  • 实现方式: 通常通过调度算法来实现,例如在调度器中设置等待时间的上限。 如果进程等待时间超过上限,系统会进行干预,例如抢占资源或重新调度。
  • 举例: 在一个多进程系统中,如果进程A需要等待进程B释放某个资源,那么进程A的等待时间必须是有上限的。如果进程B长期无法释放资源,系统应采取措施(比如强制结束进程B或者优先调度其他进程)来防止进程A无限期等待。

3. 空闲让进 (Mutual Exclusion):

  • 含义: 也称为互斥,指的是在任何时刻,只有一个进程可以访问共享资源(例如共享变量、文件等)。 其他进程必须等待该进程释放资源后才能访问。 这保证了共享资源的完整性和一致性。
  • 特点: 是并发编程中解决共享资源访问冲突的关键机制。
  • 实现方式: 可以通过多种方式实现,例如信号量、互斥锁、管程等。
  • 举例: 多个进程访问同一个计数器时,必须保证在任何时刻只有一个进程可以修改计数器的值。如果同时多个进程修改,可能会导致数据错乱。

4. 让权等待 (Blocking/Preemptive Waiting):

  • 含义: 当一个进程需要等待资源或条件满足时,它主动释放CPU,进入等待状态。 这允许其他进程获得CPU执行机会,提高了CPU利用率。
  • 特点: 提高了系统的整体效率和响应速度。与忙等待相比,它避免了CPU空转,减少了资源浪费。
  • 适用场景: 所有需要并发执行的系统,几乎所有操作系统都使用这种方式。
  • 实现方式: 通常通过操作系统提供的同步机制(例如信号量、条件变量等)来实现。 进程使用这些机制来阻塞自己,直到资源或条件满足为止。当资源或条件满足后,操作系统会唤醒等待的进程。
  • 举例: 如果进程A需要等待一个I/O操作完成,它可以调用系统调用进入阻塞状态,释放CPU,等待I/O操作完成后的中断信号来唤醒自己。

总结:

特性忙则等待有限等待空闲让进 (互斥)让权等待
CPU 使用高,浪费CPU时间可能高,但有限受限于互斥机制低,释放CPU
效率中等受限于互斥机制
公平性保证共享资源的互斥访问
死锁可能性可能发生 (需要额外机制避免)
实现复杂度简单中等中等中等

在实际的操作系统设计中,通常会综合运用这些机制来实现高效、公平的进程调度和同步。 避免忙等待是提高系统性能的关键,而有限等待和让权等待是保证公平性和避免死锁的重要手段,空闲让进则是保证数据一致性的基础。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值