进程与线程的简单解释

时间:2013-05-28 04:34:52

标签: multithreading process

任何人都可以区分进程和线程。我在网上看了很多,但大部分内容都令人困惑。

3 个答案:

答案 0 :(得分:4)

原谅我的比喻,但想到一个过程作为身体和线索作为思想或灵魂。

进程是表示与应用程序相关的资源的抽象,例如内存(虚拟,物理等),安全性和其他内核相关属性。

线程是实际执行的地方。这是一个过程的生命。事实上,当要求操作系统运行一个进程时,它首先分配所有进程所需的资源,但是直到操作系统创建并首先开始执行进程,该进程才开始生效或生命线程。

进程最后一次线程停止执行后,进程开始实际死亡,(并清理)。

我故意试图让事情变得不那么干燥。我希望我成功了:)。

答案 1 :(得分:1)

进程是由处理器(CPU)执行的,并且具有其自己的资源,例如,一个自己的地址空间。因此,它尽可能与操作系统处理的其他信息隔离开来 相反,线程是一个“轻量级”进程,它与其他线程共享其资源,特别是其地址空间。这些线程可以使用公共地址空间轻松地相互通信。但由于它们不是彼此孤立的,它们可能以可能的棘手方式相互影响 新增:
“轻量级”意味着它需要比操作系统更少的“管理”工作。例如,处理开关需要使用存储器管理单元来切换地址空间,这需要相当长的时间。因此,在同一寻址空间中从一个线程切换到另一个线程的速度要快得多。出于同样的原因,进程通信需要来自OS的更多工作,而不是相同寻址空间中的线程之间的通信。因此,轻量化意味着线程需要较少的操作系统工作。

答案 2 :(得分:1)

我将添加我自己选择的澄清声明: - )

  • 进程是OS运行的程序(例如,以.exe结尾的文件)。操作系统将进程分开,以便进程与所有其他进程的行为并行运行,独立运行并且不受其影响(除非选择其他进程)。操作系统并不完美,因此并非总是如此,但这就是主意。

  • 进程包含至少一个执行的线程,即一个接一个地执行的指令序列。

  • 如果初始线程启动了更多线程,则进程可以包含多个线程。每个线程与其他线程并行运行其指令序列(或者至少是操作系统努力实现的)。

  • 通常情况下,进程中的线程通过访问共享资源(内存,网络连接等)进行交互

  • 您使用信号量互斥等对象来确保当线程访问共享资源时,它独占使用那资源。争用资源的其他线程将被操作系统暂停,直到它再次可用,此时它们将恢复。这称为上下文切换

  • 进程可以访问名为的共享资源,并使用命名的信号量/互斥量以类似的方式与其他进程进行交互。不同之处在于操作系统必须上下文切换整个进程而不是整个线程。在大多数操作系统上,这需要更长的时间,因此效率通常会被避免。