当多个进程同时运行时,操作系统需要决定哪个进程应该执行,这就需要使用中央处理器调度算法。常见的中央处理器调度算法包括以下几种:
- 先来先服务(FCFS)算法:这是最简单的调度算法。它按照进程到达的顺序为它们分配 CPU 时间片。即先到先服务,当一个进程执行完毕后,下一个进程按到达时间顺序依次执行。
下面是一个 FCFS 调度算法的 Python 代码示例:
def FCFS_scheduling(process_list):
current_time = 0
total_waiting_time = 0
for process in process_list:
waiting_time = current_time - process.arrival_time
total_waiting_time += waiting_time
current_time += process.burst_time
return total_waiting_time / len(process_list)
- 短作业优先(SJF)算法:这是一种非常常用的调度算法,它根据进程需要的 CPU 时间来分配时间片。这意味着需要更少时间完成的任务将优先获得 CPU 时间,而较长的任务则需要等待。可以使用预测算法来估计每个任务的执行时间。比如,上一个进程的执行时间 + 本次进程剩余的执行时间的平均值作为预测值。
下面是一个 SJF 调度算法的 Python 代码示例:
def SJF_scheduling(process_list):
current_time = 0
total_waiting_time = 0
process_list.sort(key=lambda x: x.burst_time) # 按照作业执行需要的 CPU 时间排序
for process in process_list:
waiting_time = current_time - process.arrival_time
total_waiting_time += waiting_time
current_time += process.burst_time
return total_waiting_time / len(process_list)
以上是两个常见的中央处理器调度算法的示例代码,它们可以帮助理解中央处理器如何分配时间片。虽然这些算法都有自己的优缺点,但在实践中,最好根据不同系统的需求和条件,选择适合的算法来改善系统性能。