Operating system 关键段过程中断

Operating system 关键段过程中断,operating-system,critical-section,priority-inversion,Operating System,Critical Section,Priority Inversion,在基于优先级的调度中,我遇到了优先级反转的问题,即高优先级进程被迫等待低优先级任务。 一个可能的方案是,考虑三个进程L,m,h,优先级L<m<h。p> L在CS中运行;H还需要在CS中运行;H等待L从CS中出来;M中断L并开始运行;M运行至竣工并放弃控制;L恢复并开始运行,直到CS结束;H进入CS并开始运行 在这里,我的问题是,关于语句M中断L并开始运行,也就是说,在关键部分执行的进程能否被中断或抢先执行。答案很简单,是的。 如果抢占式系统中具有较高优先级的其他进程不需要在关键部分运行,即不需要

在基于优先级的调度中,我遇到了优先级反转的问题,即高优先级进程被迫等待低优先级任务。 一个可能的方案是,考虑三个进程L,m,h,优先级L<m<h。p> L在CS中运行;H还需要在CS中运行;H等待L从CS中出来;M中断L并开始运行;M运行至竣工并放弃控制;L恢复并开始运行,直到CS结束;H进入CS并开始运行


在这里,我的问题是,关于语句M中断L并开始运行,也就是说,在关键部分执行的进程能否被中断或抢先执行。

答案很简单,是的。 如果抢占式系统中具有较高优先级的其他进程不需要在关键部分运行,即不需要获得由较低优先级进程持有的锁,那么它可以抢占较低优先级进程,而不管它正在执行什么


即使M需要CS,它也会抢占L、运行、被阻止并切换出,让L继续执行。

答案很简单,是的。 如果抢占式系统中具有较高优先级的其他进程不需要在关键部分运行,即不需要获得由较低优先级进程持有的锁,那么它可以抢占较低优先级进程,而不管它正在执行什么

即使M需要CS,它也会抢占L、运行、被阻塞并切换出,以便L继续执行

在这里,我的问题是,关于语句M中断L并开始运行,即,在关键部分执行的进程能否被中断或抢占

这取决于关键部分是如何实现的

在操作系统代码中,您经常会发现在中断被阻止的地方实现的关键部分。在这种实现中,一个进程将始终不间断地执行整个关键部分

在使用通过系统服务实现的关键部分的用户代码中,过程总是会被中断。如果情况并非如此,则流程可以通过将其所有代码放在关键部分来接管系统

您正在描述过程优先级应保持一致的原因之一。除非您正在进行实时处理或后台批处理,否则所有进程通常应具有相同的基本优先级

旧的DECUS磁带过去充满了“公平共享”应用程序,这些应用程序将降低CPU使用率高的进程的优先级,并对系统调度造成严重破坏

在这里,我的问题是,关于语句M中断L并开始运行,即,在关键部分执行的进程能否被中断或抢占

这取决于关键部分是如何实现的

在操作系统代码中,您经常会发现在中断被阻止的地方实现的关键部分。在这种实现中,一个进程将始终不间断地执行整个关键部分

在使用通过系统服务实现的关键部分的用户代码中,过程总是会被中断。如果情况并非如此,则流程可以通过将其所有代码放在关键部分来接管系统

您正在描述过程优先级应保持一致的原因之一。除非您正在进行实时处理或后台批处理,否则所有进程通常应具有相同的基本优先级


旧的DECUS磁带过去充满了“公平共享”应用程序,这些应用程序会降低CPU使用率高的进程优先级,并会对系统调度造成严重破坏。

那么,如果CS中的进程被抢占,那么为什么要在CS中执行的进程H,等待进程L完成进入CS@Tony,因为关键部分受锁保护。如果我拿着一把锁,H想要得到锁的任何企图都会以阻塞告终。好的,明白了。感谢@tonySo的解释,如果CS中的进程被抢占,那么为什么想要在CS中执行的进程H会等待进程L的完成进入CS@tonySo,因为关键部分受到锁的保护。如果我拿着一把锁,H想要得到锁的任何企图都会以阻塞告终。好的,明白了。谢谢你的解释@tony