调度器激活
用户线程库和内核之间通信的一种技术称为**调度器激活**。其工作原理如下:内核为应用程序提供一组虚拟处理器(LWP),应用程序可以将用户线程调度到可用的虚拟处理器上。此外,内核必须通知应用程序某些事件。此过程称为上行调用。上行调用由线程库使用上行调用处理程序处理,并且上行调用处理程序必须在虚拟处理器上运行。触发上行调用的一个事件是当应用程序线程即将阻塞时。在这种情况下,内核向上行调用应用程序,通知它一个线程即将阻塞并识别特定线程。然后,内核为应用程序分配一个新的虚拟处理器。应用程序在此新虚拟处理器上运行上行调用处理程序,该处理程序保存阻塞线程的状态并释放阻塞线程正在运行的虚拟处理器。然后,由上行调用处理程序调度另一个有资格在新虚拟处理器上运行的线程。每当阻塞线程等待的事件发生时,内核都会向线程库发出另一个上行调用,通知它先前阻塞的线程现在有资格运行。此事件的上行调用处理程序也需要虚拟处理器,内核可能会分配一个新的虚拟处理器或抢占其中一个用户线程,然后在其虚拟处理器上运行上行调用处理程序。应用程序将合格线程调度到可用的虚拟处理器上运行,并在将未阻塞线程标记为合格运行后。
广告