用于存储作业计划程序软件的作业依赖性的数据结构

时间:2018-08-09 02:31:29

标签: data-structures graph job-scheduling

我正在编写工作计划程序。我的作业调度程序的功能之一是处理作业依赖性。例如:作业A可以定义在另一个作业B完成之前不运行我,或者作业A可以定义在磁盘中存在某个文件F等之前不运行我。

总而言之,我正在处理两种类型的依赖项

  1. 一个工作对另一个工作的依赖性。

  2. 作业在某些基础架构上的依赖性。

这里的要求是在任何时间有人可以要求生成某些作业的依赖图。为了有效地生成该图,我正在寻找一种格式,用于存储这些作业依赖项。请注意,持久性是一个文件系统。

1 个答案:

答案 0 :(得分:1)

您需要有向无环图(DAG)。

  • 定向:表示依赖性;
  • 非循环:确保不会发生死锁。

我想那么所有需要知道的是如何存储图形。

IIRC,确保图的非循环性质的一种方法是在后台运行另一种算法,该算法定期检查当前图是否具有循环且是否死锁。


为了完整起见,您的图形顶点可以存储以下内容:

  • 父级工作列表-在此工作开始之前需要完成的工作;
  • 子级工作列表-仅在完成此任务后才能启动的工作;
  • 工作-该工作本身的详细信息。

此外,由于可能存在一个不依赖于任何其他工作的工作或工作组,因此您可能会有一组DAG,而不仅仅是一个DAG。