睡眠队列

睡眠队列将容纳特定的时间中没有工作要做的线程的上下文。使线程在指定的时间段或永久睡眠。

虚拟处理器的管理类 (ADM) 运行系统计时器和特殊的实用程序线程。此类中的虚拟处理器将自动创建并运行。没有配置参数会影响此类虚拟处理器。

ADM 虚拟处理器唤醒已休眠了指定时间段的线程。运行在 ADM 虚拟处理器中的线程以一秒为时间间隔来检查正在休眠的线程。 如果休眠的线程已休眠了指定时间段,那么 ADM 虚拟处理器将其移动到适当的就绪队列。正在睡眠指定时间段的线程也可以显式地由另一个线程唤醒。

永久睡眠的线程会在其有更多的工作要做时被唤醒。例如,当 CPU 虚拟处理器上运行的线程必须访问磁盘时,该线程会发出 I/O 请求,将其自身置于 CPU 虚拟处理器的休眠队列中,然后停止。当 I/O 线程通知 CPU 虚拟处理器 I/O 已经完成时,CPU 虚拟处理器调度原来的线程通过将该线程从休眠队列移动到就绪队列来继续处理。下图说明了数据库服务器线程如何排队执行数据库 I/O。

图: 数据库服务器线程如何排队执行数据库 I/O


在该图之前的段描述了该图的内容。在图中,当第三个线程停止并且其他三个部分执行的线程正在等待其磁盘 I/O 请求完成时,两个线程准备好继续处理。