论文部分内容阅读
本文主要考虑以下这个问题:给定一台服务器,如何调度同时递交到该服务器的多个请求。具体地,每个用户递交的请求包含一系列的任务。在同一个请求序列中的不同任务需要按照到达的先后顺序来处理。每一个任务既有可能在同一个用户的请求序列中反复出现,也有可能在其他用户的请求序列中反复出现。此外,该服务器带有一个容量有限的内存,它可以用来存储任务。不同的任务需要的处理时间可能不同,其占用的空间也可能不同。当服务某个任务时,如果该任务已经在内存中,则不产生任何费用;否则,产生相应的处理时间,并且这个处理过的任务可以存放到内存中(存放任务不需要时间)。因为这个内存空间有限,这个存放过程可能导致内存中其它的任务被删除(删除任务也不需要时间)。
本文的目的是设计一个调度方案,来优化某个目标函数。首先,我们考虑极小化全部的请求的完工时间,这个问题是经典的只有一个用户的内存调度问题的一个推广。此外,我们还考虑了极小化全部请求链的平均完工时间。对于这两个问题,我们兼顾了两个模型:强制模型,选择模型。对于前者,当完成一个任务后,如果它不在内存中,必须把它放进内存中;对于后者,则没有这个要求。我们证明了所有的问题事实上都是NP难。对于这些模型,我们设计了动态规划。此外,我们提出几个近似算法,并分析它们的近似比。最后,我们设计了一些启发式算法,并模拟运行。
事实上,从资源利用的角度上看,内存也是一种资源。
这样,除了研究内存的使用,我们也研究带有一个加速资源的两台平行机调度问题。具体地,每个工件都有一个处理时间。如果分配了这个加速资源的话,那么其所需的处理时间就会变小。然而,在任何时刻,最多只有一个工件可以使用这个资源。我们的目标函数是极小化全部工件的完工时间。对于离线模型(NP难),我们设计了一个FPTAS。对于在线模型,我们设计一个竞争比是1.781的在线算法,并证明任何在线算法的竞争比不可能小于1.686。