线程/进程/任务有什么区别?

时间:2010-06-15 05:27:28

标签: process task

线程/进程/任务有什么区别?

7 个答案:

答案 0 :(得分:41)

过程:

进程是正在执行的计算机程序的实例。 它包含程序代码及其当前活动。 根据操作系统(OS),进程可以由多个执行线程组成,这些执行线程同时执行指令。 基于进程的多任务处理使您可以在使用文本编辑器的同时运行Java编译器。 在使用单个CPU的多个进程中,使用各种存储器上下文之间的上下文切换。 每个过程都有一套完整的变量。

主题:

线程是CPU利用率的基本单位,由程序计数器,堆栈和一组寄存器组成。 执行线程从计算机程序的分支到两个或多个并发运行的任务。 线程和进程的实现因操作系统而异,但在大多数情况下,进程中包含一个线程。多个线程可以存在于同一进程中并共享资源(如内存),而不同的进程不共享这些资源。 同一进程中的线程示例是自动拼写检查并在写入时自动保存文件。 线程基本上是在相同的内存上下文中运行的进程。 线程可以在执行时共享相同的数据。 Thread Diagram i.e. single thread vs multiple threads

任务:

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

答案 1 :(得分:7)

简短回答:

线程是一种调度概念,它实际上是“运行”的CPU(您不运行进程)。进程至少需要一个CPU / OS执行的线程。

流程是数据组织概念。为进程分配资源(例如,用于保持状态的存储器,允许的地址空间等)。

答案 2 :(得分:7)

用简单的术语解释

进程:进程是一组指令,作为对相关数据进行操作的代码,当程序加载到内存中时,进程有各自的状态,休眠,运行,停止等处理。当CPU被分配时,每个进程至少有一个线程称为sigled线程程序。

线程:线程是进程的一部分。作为进程的一部分,可以存在多个线程。 Thread有自己的程序区和内存区。一个进程内的多个线程无法访问彼此的数据。进程必须处理线程的sycnhronization以实现理想的行为。

任务:任务在全球范围内使用的概念并不广泛。当程序指令加载到内存中时,人们会将其称为进程或任务。任务和流程现在都是同义词。

答案 3 :(得分:5)

process调用或启动程序。它是一个程序的实例,可以是多个并运行相同的应用程序。 thread是进程中最小的执行单元。进程可以运行多个线程。执行线程会导致任务。因此,在多线程环境中,会发生多线程。

执行中的program称为process。程序可以有任意数量的进程。每个进程都有自己的地址空间。

线程使用进程的地址空间。线程和进程之间的区别在于,当CPU从一个进程切换到另一个进程时,需要将当前信息保存在进程描述符中并加载新进程的信息。从一个线程切换到另一个线程很简单。

task只是一组加载到内存中的指令。线程本身可以将自己分成两个或多个同时运行的任务。

了解更多请参阅链接:http://www.careerride.com/os-thread-process-and-task.aspx

答案 4 :(得分:2)

来自维基明确解释

1:1(内核级线程)

用户创建的线程与内核中的可调度实体1-1进行对应。[3]这是最简单的线程实现。 Win32从一开始就使用了这种方法。在Linux上,通常的C库实现了这种方法(通过NPTL或更旧的LinuxThreads)。 Solaris,NetBSD和FreeBSD使用相同的方法。

N:1(用户级线程)

N:1模型意味着所有应用程序级线程都映射到单个内核级调度实体; [3]内核不了解应用程序线程。使用这种方法,可以非常快速地完成上下文切换,此外,甚至可以在不支持线程的简单内核上实现它。然而,其中一个主要缺点是无法从多线程处理器或多处理器计算机上的硬件加速中受益:同时安排的线程永远不会超过一个。[3]例如:如果其中一个线程需要执行I / O请求,则整个过程将被阻止,并且无法利用线程优势。 GNU可移植线程使用用户级线程,State Threads也是如此。

M:N(混合线程)

M:N将一些M个应用程序线程映射到N个内核实体,[3]或“虚拟处理器”。这是内核级(“1:1”)和用户级(“N:1”)线程之间的折衷。通常,“M:N”线程系统的实现比内核或用户线程更复杂,因为需要更改内核和用户空间代码。在M:N实现中,线程库负责在可用的可调度实体上调度用户线程;这使得线程的上下文切换非常快,因为它避免了系统调用。但是,这会增加复杂性和优先级倒置的可能性,以及在用户态调度程序和内核调度程序之间没有广泛(且昂贵)协调的次优调度。

答案 5 :(得分:0)

Wikipedia 总结得非常好:

线程与进程比较

线程与传统的多任务操作系统进程不同:

  • 进程通常是独立的,而线程则以 流程的子集
  • 进程携带相当多的状态信息,而多个 进程中的线程共享状态 以及内存和其他资源
  • 进程具有单独的地址空间,而线程共享它们 地址空间
  • 进程只能通过系统提供的进程间进行交互 沟通机制。
  • 同一进程中线程之间的上下文切换是 通常比上下文更快 在流程之间切换。
像Windows NT和OS / 2这样的系统据说具有“廉价”线程和“昂贵”的进程;在其他操作系统中,除了地址空间切换的成本意味着TLB刷新之外,没有太大差异。

任务和流程同义使用。

答案 6 :(得分:0)

至少过程或任务需要以下内容:

在成员线程之间共享

1。代码或固件,说明 这些在内存中并有地址 2.代码操作的数据 数据从内存中开始,并且可以移动到寄存器中。数据有地址

每个线程的专有权

3.CPU和关联的物理寄存器 4.一个堆栈 5.状态信息 进程(任务)与线程

相关问题