任务与流程,有什么区别吗?

时间:2010-04-01 14:08:47

标签: multithreading process computer-science definition task

我正在攻读我在CS专业的期末考试,主题是分布式系统和操作系统。

我需要对术语任务,流程和线程有一个很好的定义。到目前为止,我确信一个进程是使用自己的内存,程序计数器,寄存器,堆栈等(进程控制块)来表示运行(或挂起但已启动)的程序。进程可以运行共享内存的线程,因此与必须通过IPC进行通信的进程相比,可以通过共享内存进行通信。

但是任务和流程之间的区别是什么。我经常读到它们是可互换的,并且不再使用术语任务。这是真的吗?

7 个答案:

答案 0 :(得分:14)

术语“task”主要用于scheduling *的上下文,当它可以引用线程或*进程**时*,可以安排在处理器上运行 从调度程序的角度来看,线程和进程之间可能几乎没有区别 - 两者都代表必须安排的任务

最近,术语“task”正在得到更广泛的使用,特别是在.NET开发人员中,这要归功于例如Task Parallel Library。在其中,任务是可以计划pool of worker threads的线程上运行的工作单元。

* 例如kernel programming, esp. on Linux
** 理论上,你可以组成你的可调度实体

答案 1 :(得分:5)

进程和线程是机制,任务更具概念性。你可以将一大堆工作排队异步运行,例如在带有.NET的Windows上,这可以从线程池的一个线程上运行。使用OpenMP,任务将成为在一个核心上运行的for循环的一部分。

次要相关说明:在Windows上,还有作业,线程池和机械纤维。此外,如果没有至少一个线程在运行,那么进程就没什么了。

答案 2 :(得分:2)

我老了。严格来说,"处理"是在内存中执行的工作,不涉及输入/输出操作。 A"任务"是一个包含I / O操作的过程。因此,多任务系统可以运行并发I / O流,而多处理系统必须任务切换其I / O. PC只有一个鼠标,键盘等,所以它们对我来说不是多任务系统。我认为大型机是一个多任务系统。

线程是一种切换处理上下文的技术。允许物理处理器驱动多个进程。与任务没有直接关系。

答案 3 :(得分:1)

过程 过程是一种自然发生或设计的操作或事件序列,可能占用时间,空间,专业知识或其他资源,从而产生一些结果。可以通过在其影响下的一个或多个对象的属性中创建的更改来识别进程

主题 线程类似于进程,因为它们都表示通过时间切片或多处理与其他序列并行执行的单个指令序列。线程是程序将自身分成两个或多个同时运行的任务的一种方式

任务 一组程序指令加载到内存中

答案 4 :(得分:0)

这取决于你的背景。

在Ada中,任务是编程语言中用于实现并发的构造。

没有指定应该使用什么操作系统构造来实现它,但它允许任务之间的共享内存,因此线程将是更自然的实现。

答案 5 :(得分:0)

我认为这取决于底层操作系统使用哪个术语。

您还可以将任务视为正在运行的代码。然后,线程的一部分或进程的一部分可以是任务。

答案 6 :(得分:0)

任务进程在操作系统方面通常是相似的:它们都是加载到内存中以由处理器执行的一组指令。由于所有现代处理器都使用时间共享和上下文切换来执行进程,因此区别在于处理器的数量,即,如果一个处理器正在执行多个进程,则它是一个多任务处理系统,并且如果有多个处理器正在执行多个流程(或流程的不同部分),它是 multiprocessing 操作系统