一本书讲透Java线程:原理与实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 CPU任务调度

进程可以有一个或多个线程,它们都需要由内核分配CPU来执行任务,可是CPU总共就这么几个,系统应该如何调度呢?本节来详细讲解一下CPU任务调度的原理。无论是进程还是线程,在系统内核里统一称为任务(Task),任务是采用task_struct结构进行描述的。从CPU角度来看,所有的进程与线程都是待执行的任务,如图1-9所示。

图1-9 进程、线程任务

每一个任务都应该有一个ID,作为这个任务的唯一标识,后面介绍的任务挂起、唤醒等调度都是通过这个ID来进行管理的。