Nil*_*rth 31

"过程"定义明确; "工作"和"任务"含糊不清.

从根本上工作/任务是什么工作就完成了,而过程是如何它完成,通常anthropomorphised因为做的.作业是一个整体的工作单位,并组成任务.在实践中,使用是非常不一致的,并且通常是"任务"=="过程",尽管正式过程执行任务.

进程是一个定义明确的操作系统概念,就像线程一样:进程是正在执行的程序的实例,并且是资源的基本单元:进程包含或"拥有"其映像,执行上下文,内存,文件等; 在词源学上,过程是由过程过程完成的步骤.一个进程由一个或多个线程组成,这些线程是调度的单元,由一个进程的某个子集组成(可能与其他线程共享):执行上下文,或许更多.传统上,线程是处理器上的执行单元(线程是"正在执行的"),但是对于多核处理器和硬件线程,即使在单核的级别也可以进行一些调度.有各种各样的进程和线程,确切的定义因平台而异.

今天的工作任务是模糊的,含糊不清的术语,尤其是任务." 作业 "通常表示一组进程,而" 任务 "可以表示进程,线程,进程或线程,或者明确地表示进程或线程完成的工作单元.

为了弄清楚命名是多么混乱, Windows任务管理器管理(运行)进程,而 Windows任务计划程序安排程序在将来执行,传统上称为作业调度程序,并使用.job扩展!

术语" 工作 "传统上意味着"工作"(而不是"职业"),并且在制造业中用作" 工作生产 ",意思是"定制生产",与批次形成对比生产(一次许多项目,一次一步)和流程生产(许多项目同时,所有步骤同时,按项目).请注意,这些区别在计算中变得模糊,特别是在矛盾术语" 批处理作业 "中.

在计算中,"作业"起源于大型机上的非交互式处理,特别是在20世纪60年代中期的DOS/360OS/360的IBM 作业控制语言中,正式意味着"操作系统的工作单元",它由步骤组成,每个步骤都是执行特定程序的请求.早期的计算机主要进行批处理(在许多输入数据上运行相同的程序),如人口普查或计费,标准类型的一次性工作是从源编译程序,然后可以处理批量数据.后来的批次开始应用于所有非交互式计算,无论是一次性还是多次项目.

在Unix shell中," 作业 "是进程组的shell表示- 一组可以发送信号的进程 - 具体地说是一个管道及其后代进程; 请注意,运行脚本会启动作业,就像在大型机中一样.在进程完成之前不会完成作业,并且可以停止,恢复或终止作业,这对应于暂停,恢复或终止进程.因此,虽然正式的工作与流程组不同,但这是一个微妙的区别,因此人们经常使用"工作"来表示"流程集".

传统作业(和批处理)具有有限的输入数据,应该成功或不成功完成处理.相反,当运行诸如web服务器之类的服务器时,诸如请求流之类的输入是无限的(正式编码).这类似于流程生产,并且流程(或"工作")永远不会完成,尽管它可以被终止或"取消".在一个quip中,"服务器的工作永远不会完成"(正式地,退出状态将被取消,而不是已完成/成功).

术语"步"是有道理的,连续计算-一个步骤接着一个-但一旦你有并发计算,你有一个任务,这并不一定按特定顺序运行,而不是一个序列步骤.术语"任务"由OS/360推广,其特点是"具有固定任务数的多道程序设计(MFT)"和"具有可变任务数量的多道程序设计(MVT)",尽管在这种情况下"任务"同义使用使用"进程"或"线程",因为基本任务是"执行此程序"(因此生成的进程/线程执行任务),这可能是模糊性的来源.

正式的" 多任务 "意味着"同时处理多个任务",但实际上意味着操作系统(或虚拟机,或运行时,或单个进程)"同时运行多个进程/线程".

任务明确区分工作和进程/线程如何工作是一个给定 的任务队列,因为这在一的线程池:有一个(大,可能是无限的)的到来任务队列(待定),它由一组(通常是固定的)线程执行,每个任务由一个线程执行,每个线程一次执行一个任务:活动任务对应于活动线程.具体地说,考虑一个多线程Web服务器,其中任务是"服务此网页请求",并且每个线程获取(从磁盘或内存)或呈现网页(例如通过模板或PHP),然后返回结果.

正如您在上一个示例中所看到的,将任务与线程或进程区分开来通常很有用,特别是上下文"作业"和"任务"具有特定含义,但通常它们是模糊的.

因此,最清楚的是避免使用"作业"或"任务",而是引用"进程集","进程"或"线程",并且服务器引用请求(或查询)而不是任务.


Kho*_*rak 15

它们可以被认为是同一个东西,真的取决于上下文.但是,进程通常是由操作系统管理的隔离实体.作业通常更多地是应用程序级别术语,或者仅仅是为执行特定任务集而执行的某个脚本.任务通常是工作的一部分 - 有时是唯一的一部分.

  • 好的一点是,它们是模棱两可的,“进程”是OS实体,而“作业”是通常由“任务”组成的高级实体;这是共识的很好体现!但是,这个答案很模糊,没有具体说明,让我想要更多。(因此,下面将给出更长的答案。) (2认同)

Dhr*_*ola 9

作业是用户提交的工作单元.它通常与批处理系统相关联.批处理作业可能是连续运行多个程序的请求[第144页].但是,可以假设作业是运行单个程序的请求.因此,根据上下文,作业可以是程序(我们通常假设这个),也可以是一组程序(例如批处理系统)[第8页].

进程是一个活动实体,它需要一组资源,包括处理器和特殊寄存器来执行其功能.它是可执行程序的单个实例.因此,从这里,您可以看到流程和程序之间的联系,因此,工作.

Linux内核在内部将进程表示为任务[第742页].

资料来源:Tanenbaum的现代操作系统(第3版),Pearson Education,Inc出版,2009年