面试题:进程和线程有什么区别?

热门面试问题:流程和线程有什么区别?

为了更好地理解这个问题,我们先来看看什么是程序。程序是包含一组指令的可执行文件,被动地存储在磁盘上。一个程序可以有多个进程。例如,Chrome 浏览器会为每个标签页创建不同的进程。

进程意味着程序正在执行中。当程序被加载到内存中并开始运行时,程序就成为了一个进程。进程需要一些基本资源,如寄存器、程序计数器和堆栈。

线程是进程中最小的执行单元。

下面的流程解释了程序、进程和线程之间的关系。

  1. 程序包含一组指令。
  2. 程序被加载到内存中。成为一个或多个运行进程。
  3. 进程启动时,会分配内存和资源。一个进程可以有一个或多个线程。例如,在 Microsoft Word 应用程序中,一个线程可能负责拼写检查,另一个线程负责在文档中插入文本。

进程和线程的主要区别

  •  进程通常是独立的,而线程则是进程的子集。
  •  每个进程都有自己的内存空间。属于同一进程的线程共享同一内存。
  •  进程是一种重量级操作。它需要更多时间来创建和终止。
  •  进程间的上下文切换成本更高。
  •  线程间通信更快。

思考题:

  • 1).有些编程语言支持 coroutine协程。协程和线程有什么区别?
  • 2).如何在 Linux 中列出正在运行的进程?