赞
踩
Linux 时间片是操作系统调度中的一个概念,它是分配给每个进程或线程的 CPU 时间,即进程被允许运行的时间。如果某个进程 / 线程在时间片结束时还在运行,则 CPU 将暂停该进程 / 线程,并选择下一个已就绪的线程 / 进程来执行(切换);如果某个进程 / 线程在时间片结束前就阻塞或结束,则 CPU 会在阻塞或结束时立即进行切换。
虽然每个处理器核心在一个时刻永远只能运行一个任务,但是通过时间片不断、快速地循环切换,可以让多个任务都得到执行。通常来说,时间片的长度很短,用于切换时间也非常短,所以从用户角度看来就是多个任务在同时执行,也就模拟了并行计算。对于多核或超线程的 CPU 来说,内部有不只一个处理器核心,也就真正实现了并行计算。
在 Linux 中,系统分配给每个进程的时间片的长短并不是固定的,而是受到进程父子关系、进程数量、进程交互性(趋向于 IO 密集型还是处理器密集型)等因素来分配不同的时间片长度。
如果时间片的长度过短,因为上下文切换(进程间切换)本身也是需要时间的,所以上下文切换就会占用更大比例的时间。
如果时间片的长度过长,那么当 CPU 正在执行的任务较多时,一些简单命令的响应时间也可能会因为 CPU 正在执行其他进程的时间片而延长。
每次保存和恢复上下文的过程,都是在系统态进行的,并且需要几十纳秒到数微秒的 CPU 时间。具体包括如下过程:
进程主动放弃 CPU 的执行权。其常见的原因包括:
进程被动放弃 CPU 的执行权。其常见的原因包括:
当 Linux 系统中参与竞争 CPU 资源的进程数量增加时,操作系统会将时间片分割得更小,以便公平地分配 CPU 时间给每个进程。这就导致处理器需要更加频繁地切换上下文并执行不同的进程,从而使得被动的上下文切换次数激增(system time 激增),同时也会导致上下文切换占用更大比例的 CPU 时间。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。