Skip to content

Latest commit

 

History

History
46 lines (26 loc) · 3.11 KB

进程和线程的区别.md

File metadata and controls

46 lines (26 loc) · 3.11 KB

进程和线程的区别

典型回答

  1. 进程是操作系统资源分配的基本单位,而线程是 CPU 调度和分配的基本单位
  2. 进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其他进程产生影响,而线程只是一个进程中的不同的执行路径
  3. 进程是执行的程序,线程是进程内的控制流。

知识延伸

进程是现代分时操作系统的工作单元,进程是执行的程序,这是一种非正式的说法。进程不只是程序代码,进程还包括当前活动,如程序计数器、进程堆栈和数据段。

操作系统内的每个进程表示,采用进程控制块(Process Control Block,PCB),它包含了许多与某个特定进程相关的信息:

  • 进程状态:状态可以包括新的、就绪、运行、等待、停止等。
  • 程序计数器:计数器表示进程将要执行的下个指令的地址。
  • CPU 寄存器:根据计算机体系结构的不同,寄存器的类型和数量也会不同。它们包括累加器、索引寄存器、堆栈指针、通用寄存器和其他条件码信息寄存器。在发生中断时,这些状态信息与程序计数器一起需要保存,以便进程以后能正确的继续执行。
  • CPU 调度信息:这类信息包括进程优先级、调度队列的指针和其他调度参数。
  • 内存管理信息:根据操作系统使用的内存系统,这类信息可以包括基地址和界限寄存器的值、页表或段表。
  • 记账信息:这类信息包括 CPU 时间、实际使用时间、时间期限、记账数据、作业或进程数量等。
  • I/O 状态信息:这类信息包括分配给进程的 I/O 设备列表、打开文件列表等。

PCB 结构如下图:

每个线程是 CPU 使用的一个基本单元;它包括线程 ID、程序计数器、寄存器组和堆栈。。它与同一进程的其他线程共享代码段、数据段和其他操作系统资源,如打开文件和信号。每个传统或重量级进程只有单个控制线程,如果一个进程具有多个控制线程,那么它能同时执行多个任务,下图说明了传统单线程进程和多线程进程的差异:

对于多处理器体系结构,多线程的优点更大,因为线程可以在多处理核上并行运行。不管有多少可用 CPU,单线程进程只能运行在一个 CPU 上。

扩展阅读

知乎上有一个对于 “线程和进程的区别” 的回答非常好,总结一句话是:

进程和线程都是一个时间段的描述,是 CPU 工作时间段的描述,只是颗粒不同罢了。

原文地址如下:线程和进程的区别是什么?

结语

我正在打造一个帮助 Android 开发者们拿到更好 offer 的面试库————安卓 offer 收割基,欢迎 star,觉得不错的可以持续关注,有兴趣的可以一起加入进来和我一同打造。