📜  无期限调度

📅  最后修改于: 2022-05-13 01:56:11.653000             🧑  作者: Mango

无期限调度

什么是调度?
调度是计算机科学领域的另一个流行问题。调度问题是针对给定请求有效调度资源的问题。在操作系统中,通常计算机系统的单个处理器可能会遇到许多作业或用户程序。人们可以将调度问题可视化为作业的最佳排序,从而使作业周转时间最小化。简而言之,目标是以最佳顺序安排作业,以便更快地执行作业。

没有截止日期的工作安排:
那么,什么是作业调度 没有截止日期?

  • 调度问题的目标是调度任务以获得最大的总利润。
  • 考虑调度的作业没有截止日期,即没有任何执行时间上限的作业。
  • 这种作业调度旨在盈利,但没有任务的最后期限。

为了理解这个概念,让我们举个例子。
让我们假设连接到调度的作业没有截止日期,即作业没有任何执行时间上限。试图用贪婪的方法解决它;
让我们假设服务时间与以下三个任务相关联:



  • t 1 =2
  • t 2 =7
  • t 3 =4

为了安排这些任务,让我们首先通过列出下表中所有可能的排序来找到最佳排序。由于有3个任务,所以可以在3个任务中排序!方式,等于 6。一般来说,对于 N 个作业,将有 N!可能的订单。

  • 为了说明这一点,让我们采用组合之一,例如 [1, 2, 3]。如果先安排作业 1,则根据给定的问题,作业 1 需要 2 个时间单位。因为这是第一份工作,所以没有浪费时间。
  • 在此期间,作业 2 必须等待,因为只有一个处理器。因此,作业 2 需要 2(等待时间)+ 7(处理时间),等于 9。直到此时,作业 3 必须等待。
  • 作业 3 的等待时间为 ( 2 + 7 ),需要 4 个时间单位才能完成。因此,作业 3 在系统中花费的总时间是 9(等待时间),4 是(处理时间)。

Schedule 

Total time in system  

 Average time  

[1, 2, 3]2 + (2 + 7 ) + ( 2 + 7 + 4 ) = 248
[1, 3, 2]2 + (2 + 4 ) + ( 2 + 4 + 7 ) = 217
[2, 1, 3]7 + (7 + 2 ) + ( 7 + 2 + 4 ) = 299.6
[2, 3, 1]7 + (7 + 4 ) + ( 7 + 4 + 2 ) = 3110.3
[3, 1, 2]4 + (4 + 2 ) + ( 4 + 2 + 7 ) = 237.9
[3, 2, 1]4 + (4 + 7 ) + ( 4 + 7 + 2 ) = 289.3

一个作业的平均时间是系统总时间除以作业数,即24/3=8。
其余作业的计算如上表所示。

  • 可以观察到,系统中的最小总时间为 21,周转时间为 7。
  • 这对应于顺序 [1, 3, 2]。因此,这是最佳顺序。
  • 还可以注意到,任务是按照服务时间的升序排列的,即{2,4,7},由此说明了“最短作业优先调度”的原则,即最短的作业先调度,再调度较长的作业.
  • 一旦确定了这个原则,贪婪算法就可以有效地编写了。

非正式地解决这个问题的贪心算法可以写成如下:

步骤 1 –按服务时间以非递减顺序对作业进行排序。
步骤 2 –安排排序后的作业列表的下一个作业。将其包含在解决方案集中。
步骤 3 –如果已排序作业列表的所有实例都已解决,则返回解决方案集。

形式化算法如下:
输入 –一个数组 J,包含一组作业 1 到 n 以及服务时间
输出——最佳时间表

Begin
    S = {sorted array of jobs in J based on service time }
    i = 1
    Schedule = ∅
    while (i < = n ) do                 //for all jobs do
        select the next job i from S    //Selection procedure selects from sorted list
        solution = schedule U jobs i
        i = i+1
    
    End while
    return(Solution)
End
  • 该算法首先对作业进行排序,然后逐个贪婪地选择作业并将它们调度到服务器。
  • 可以看出,由于不涉及截止日期,因此可以为服务器安排所有作业。

复杂性分析:
可以看出,上述调度算法的核心原理就是任务的排序
排序的复杂度是 O(n log n) 时间。该调度算法的所有剩余任务只需要 O(n) 时间。
因此,调度算法的最终复杂度为max{n log n, n } = n log n time