面试题:进程和线程有什么区别?
热门面试问题:流程和线程有什么区别?
为了更好地理解这个问题,我们先来看看什么是程序。程序是包含一组指令的可执行文件,被动地存储在磁盘上。一个程序可以有多个进程。例如,Chrome 浏览器会为每个标签页创建不同的进程。
进程意味着程序正在执行中。当程序被加载到内存中并开始运行时,程序就成为了一个进程。进程需要一些基本资源,如寄存器、程序计数器和堆栈。
线程是进程中最小的执行单元。
下面的流程解释了程序、进程和线程之间的关系。
- 程序包含一组指令。
- 程序被加载到内存中。成为一个或多个运行进程。
- 进程启动时,会分配内存和资源。一个进程可以有一个或多个线程。例如,在 Microsoft Word 应用程序中,一个线程可能负责拼写检查,另一个线程负责在文档中插入文本。
进程和线程的主要区别
- 进程通常是独立的,而线程则是进程的子集。
- 每个进程都有自己的内存空间。属于同一进程的线程共享同一内存。
- 进程是一种重量级操作。它需要更多时间来创建和终止。
- 进程间的上下文切换成本更高。
- 线程间通信更快。
思考题:
- 1).有些编程语言支持 coroutine协程。协程和线程有什么区别?
- 2).如何在 Linux 中列出正在运行的进程?