这些概念之间有什么区别?
最佳答案
“流程”定义明确; “工作”和“任务”是模棱两可的。
从根本上说,工作/任务是完成的工作,而过程是完成的过程,通常拟人化为谁来做。作业是工作的整体单元,由任务组成。在实践中,用法非常不一致,尽管通常由一个流程执行任务,但经常使用“任务” ==“流程”。
进程是一个定义明确的操作系统概念,线程也是如此:process是正在执行的程序的实例,并且是资源的基本单位:一个进程由其镜像组成或拥有,执行上下文,内存,文件等;从词源上讲,过程是处理器执行的步骤。一个进程由一个或多个线程组成,这些线程是调度的单位,并由一个进程的子集(可能与其他线程共享)组成:执行上下文,也许还有更多。传统上,线程是处理器上执行的单元(线程是“正在执行的内容”),但是对于多核处理器和hardware threads来说,即使在单核级别也要进行一些调度。进程和线程多种多样,确切的定义因平台而异。
作业和任务今天是模糊,模棱两可的术语,尤其是任务。 “job”通常表示一组进程,而“task”可能表示进程,线程,进程或线程,或者显然是由进程或线程完成的工作单元。
为了给命名起一个混淆的想法,
Windows Task Manager管理(运行)进程,而
Windows Task Scheduler安排程序在将来执行,这通常称为job scheduler,并使用.job
扩展!
传统上,“job”一词是指“一件作品”(与“职业”相对),在制造业中就这样使用,即“job production”一词,意为“定制生产”,与batch production形成对比(一次,一次一个步骤)和flow production(一次,很多项目,所有步骤一次,一次)。请注意,这些区别在计算中已经变得模糊不清,特别是在谐音术语“batch job”中。
在计算中,“工作”起源于大型机上的非交互式处理,特别是IBM在1960年代中期的Job Control Language和DOS/360的OS/360中,正式表示“操作系统的工作单元”,该工作单元由以下步骤组成:其中是执行特定程序的请求。早期的计算机主要执行batch processing(在许多输入数据上运行相同的程序),例如人口普查或开票,并且标准的一次性工作类型是从源代码编译程序,然后可以处理一批数据。之后的批处理将应用于一次性的或多个项目的所有非交互式计算。
在Unix shell 中,“job”是 shell 对process group的表示,multitasking是一组可以全部发送信号的进程,具体来说是管道及其后代进程。请注意,与大型机中一样,运行脚本会启 Action 业。直到流程完成,才可以完成作业,并且可以停止,恢复或终止作业,这相当于暂停,恢复或终止流程。因此,尽管正式的工作与过程组是不同的,但这是一个微妙的区别,因此人们经常使用“工作”来表示“过程集”。
传统作业(和批次)具有有限的输入数据,并且应该成功或不成功地完成处理。相反,当运行服务器(例如Web服务器)时,输入(例如请求流)是不受限制的(正式为共数据)。这类似于流程生产,尽管过程(或“工作”)可以终止或“取消”,但从未完成。一则打趣说,“服务器的工作从未完成”(通常,退出状态为“已取消”,而不是“完成/成功”)。
术语“步骤”对于顺序计算是有意义的–一个步骤紧随另一个步骤–但是一旦进行并发计算,您将拥有一组任务,这些任务不一定按特定的顺序运行,而不是一系列步骤。 “任务”一词在OS / 360中得到了普及,其特征是“具有固定数量的任务的多重编程(MFT)”和“具有可变数量的任务的多重编程(MVT)”,尽管在这种情况下,“任务”是同义词使用“进程”或“线程”,因为基本任务是“执行此程序”(因此,最终的进程/线程执行任务),这可能是模棱两可的根源。
正式的“task queue”是指“同时执行多个任务”,但实际上是指“同时运行多个进程/线程”的操作系统(或虚拟机,运行时或单个进程)。
任务(即工作)与流程/线程(如何完成工作)之间有明显区别
diagram,如thread pool的ojit_a所示:传入任务(待处理)的队列(大,可能无限)由一组(小的,通常是固定的)线程执行,每个任务由一个线程执行,并且每个线程一次执行一个任务: Activity 任务与 Activity 线程相对应。具体而言,考虑一个多线程Web服务器,其中的任务是“为该Web页面请求提供服务”,并且每个线程(从磁盘或内存)获取或呈现Web页面(例如通过模板或PHP),然后返回结果。
从最后一个示例中可以看出,将任务与线程或进程区分开通常很有用,并且在特定的上下文中,“作业”和“任务”具有特定的含义,尽管通常它们是模棱两可的。
因此,最清晰的是避免使用“作业”或“任务”,而是引用“进程集”,“进程”或“线程”,并且让服务器引用请求(或查询)而不是任务。