multithreading - 批处理作业与 CPU 密集型任务和调度

标签 multithreading process operating-system scheduled-tasks system

我的第一个问题是关于批处理作业和 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/

相关文章:

c++ - 如何在另一个线程中关闭一个MFC Modal Dialog并能得到对话框的返回值?

java - java中的线程间通信

process - 什么是 kthreadd 进程和子进程以及它与 init 和子进程有何不同

bash - 杀死 codeship 中生成的后台进程

java - 使用 ProcessBuilder 在我的 Android 应用程序中启动服务,但它仅以 "su"(root) 开头

Java:确保线程永远不会切换上下文

c++ - 当我有这么多可用内存时,为什么我会得到 std::bad_alloc

java - 使用 isALive() 或连接方法时出错

c++ - QWebPage 和多线程

循环引用和低级汇编