进程是一个线程还是线程是一个进程?

时间:2014-06-27 06:53:52

标签: multithreading process operating-system

我被问到这个面试问题。我回答说线程是在认为进程是线程的超集但是访问者不同意它之后的过程。这令人困惑,我无法找到任何明确的答案。

4 个答案:

答案 0 :(得分:1)

我觉得这是一个可怕的问题。

  1. 两者都是独立的执行块
  2. 两者均由操作系统安排
  3. 线程在进程的上下文中运行,与进程共享内存。
  4. 我想不出线程拥有自己的地址空间的时间
  5. 按照这种逻辑,我同意你的答案,即线程是一个过程。我认为这是一个有问题的问题。我会请你解释两者之间的差异。

    有关详情,请点击此处thread to view on the subject.

答案 1 :(得分:1)

每个进程都是一个线程,但不是每个线程都是一个进程。

线程只是一个独立的操作序列。一个过程有一个额外的背景。

答案 2 :(得分:1)

进程是应用程序的执行实例。

线程是进程内的执行路径。 另外,a process can contain multiple threads

1

  

重要的是要注意线程可以执行进程可以执行的任何操作。   但由于进程可以包含多个线程,因此可以使用一个线程   被认为是一个“轻量级”过程。因此,本质区别   线程和进程之间的关系是每个人习惯的工作   完成。线程用于小任务,而进程则用于   用于更多'重量级'任务 - 基本上是执行   应用

2

  

线程和进程之间的另一个区别是线程   在同一进程内共享相同的地址空间,而   不同的流程没有。这允许线程读取和写入   对于相同的数据结构和变量,也很方便   线程之间的通信。流程之间的沟通 - 也   被称为IPC或进程间通信 - 非常困难   资源密集型的。

答案 3 :(得分:0)

线程的性质高度依赖于系统。例如,某些系统将线程实现为操作系统的一部分。其他系统通过运行时库实现线程。进程本身管理自己的线程(而不是操作系统),不同进程的管理可能不同(例如,Java线程的实现与Ada线程不同)。

在OS调度的线程中,线程和进程是不同的术语。进程是一个具有多个可调度执行线程的地址空间。

在RTL调度的线程中,该进程是一个线程。