目录
首先谈谈我的理解:
操作系统给每个进程分配一段可运行的时间,该时间就叫做时间片,如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。
百度百科解释:
系统将所有的就绪进程按先来先服务的原则,排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片。时间片的大小从几ms到几百ms。当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片。这样就可以保证就绪队列中的所有进程,在一给定的时间内,均能获得一时间片的处理机执行时间。
让你秒懂的栗子:
假如有这样一个餐厅,餐厅规定每个顾客只能得到固定时间的服务,比如说2分钟。这就是“时间片”。服务员是CPU,而顾客则是需要服务的进程。
顾客(进程)按到达餐厅的时间顺序排队等待服务。
开始服务:服务员(CPU)开始服务等一位顾客,如果这个顾客在2分钟内吃完了(进程完成了任务),他就会离开。如果2分钟结束了,但顾客还没吃完,服务员会让他回到队伍的末尾,等待下一轮服务。服务员接着服务下一个顾客,以此类推。这样,每个顾客都能得到公平的服务时间,没有人会饿着。但如果顾客太多,或者每个人的饭量不一样(进程的任务大小不同),就需要合理安排每个人的服务时间(时间片的长度),以确保大家都满意。
这就是时间片轮转调度算法的通俗解释。它确保了每个进程都有机会执行,而且系统能高效地处理大量短任务。
时间片的长度对系统性能有什么影响呢?
- 如果时间片设置得太短,会导致频繁的进程切换,增加系统开销
- 如果时间片设置得太长,则会降低系统对短交互请求的响应速度。
因此,时间片的长度通常需要根据系统的具体需求来平衡设置。