答案1
在Linux中,进程调度器是一个核心部分内核。它不作为单独的线程或模块存在,而是作为函数实现,__schedule()
。
进程调度程序的工作是决定接下来应该运行哪个进程。系统中的每个处理器都有一个运行队列,它是等待在CPU上运行的进程列表。当它被调用时,调度程序会查看此进程列表,并决定接下来运行哪一个;这可以是之前运行的进程(或者更确切地说,线程),也可以是另一个进程。内核中的各种其他系统在运行队列中添加和删除任务,或者将它们从一个 CPU 的运行队列移动到另一个 CPU 的运行队列。
内核将在多种情况下重新调度进程:每当进程被阻塞(通过信号量、互斥体等)时,以及每当请求重新调度并且系统从用户空间转换到内核或返回时。计时器滴答不直接调用调度程序,它请求重新安排。