我的第一个问题是关于批处理作业和 CPU 密集型任务:
cpu 绑定(bind)任务和批处理作业之间到底有什么区别?
批处理作业是在不与用户交互的情况下运行的程序,但是如果是 cpu-bound 任务不是吗?
我的第二个问题是关于 单处理器调度:
诸如循环和优先级调度之类的调度策略通常是针对交互式工作负载实现的,为什么不针对批处理作业呢?
最佳答案
在过去,批处理作业是通过阅读器输入的一叠穿孔卡片。有专门的交互系统和专门的批处理系统。
然后交叉开发。 TSO(分时选项)是一个永无止境的批处理作业,它允许用户与底层批处理系统进行交互。
交互式系统开发了批处理队列。批处理队列可以以各种方式调度作业(由 JCL 或 DCL 等命令脚本控制)。如果您有十个作业要运行,您可以设置队列让 1 或 2 个(或更多)在队列中同时运行,这样您就不会因为同时运行而使系统过载。您还可以安排它们在特定时间运行。如果您有一个为期 2 周的分子建模任务,您的批处理队列可以在晚上 7 点将其打开,并在早上 8 点在人们开始工作之前将其关闭。
Unix 从未有过的只是基本的批处理工具。
What are exactly the differences between a cpu-bound task and a batch job?
它们是两种完全不同的东西。批处理作业可能受 CPU 限制,也可能不受 CPU 限制。 cpu 绑定(bind)任务可能是也可能不是批处理作业。
A batch job is a program that runs without interaction with the user, but so if a cpu-bound task isn't it ?
批处理作业从不与用户交互。所有命令输入都在开始时输入。非批处理作业可能会在某一时刻变成 cpu-boud,然后在稍后与用户交互。
关于multithreading - 批处理作业与 CPU 密集型任务和调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35563286/