时间片(timeslice)又称为“量子(quantum)”或“处理器片(processor slice)”是
分时操作系统分配给每个正在运行的
进程微观上的一段CPU时间(在抢占
内核中是:从进程开始运行直到被抢占的时间)。现代
操作系统(如:Windows、
Linux、
Mac OS X等)允许同时运行多个进程 —— 例如,你可以在打开音乐播放器听音乐的同时用
浏览器浏览
网页并下载文件。事实上,虽然一台
计算机通常可能有多个
CPU,但是同一个CPU永远不可能真正地同时运行多个任务。在只考虑一个CPU的情况下,这些进程“看起来像”同时运行的,实则是轮番穿插地运行,由于时间片通常很短(在
Linux上为5ms-800ms),用户不会感觉到。
时间片(timeslice)又称为“量子(quantum)”或“处理器片(processor slice)”是分时操作系统分配给每个正在运行的
进程微观上的一段CPU时间(在抢占
内核中是:从进程开始运行直到被抢占的时间)。现代操作系统(如:Windows、
Linux、
Mac OS X等)允许同时运行多个进程 —— 例如,你可以在打开音乐播放器听音乐的同时用
浏览器浏览
网页并下载文件。事实上,虽然一台
计算机通常可能有多个
CPU,但是同一个CPU永远不可能真正地同时运行多个任务。在只考虑一个CPU的情况下,这些进程“看起来像”同时运行的,实则是轮番穿插地运行,由于时间片通常很短(在
Linux上为5ms-800ms),用户不会感觉到。
时间片由
操作系统内核的
调度程序分配给每个进程。首先,内核会给每个进程分配相等的初始时间片,然后每个进程轮番地执行相应的时间,当所有进程都处于时间片耗尽的状态时,内核会重新为每个进程计算并分配时间片,如此往复。
通常状况下,一个系统中所有的进程被分配到的时间片长短并不是相等的,尽管初始时间片基本相等(在
Linux系统中,初始时间片也不相等,而是各自父进程的一半),系统通过测量进程处于“睡眠”和“正在运行”状态的时间长短来计算每个进程的交互性,交互性和每个进程预设的静态
优先级(Nice值)的叠加即是动态优先级,动态优先级按比例缩放就是要分配给那个进程时间片的长短。一般地,为了获得较快的响应速度,交互性强的进程(即趋向于IO消耗型)被分配到的时间片要长于交互性弱的(趋向于处理器消耗型)进程。