计算机操作系统面经

进程 vs. 线程的区别

对比维度 进程(Process) 线程(Thread)
基本概念 进程是 资源分配的最小单位,代表一个程序的运行实例。 线程是 CPU 调度的最小单位,是进程内部的执行单元。
资源 进程有 独立的地址空间,拥有自己的堆、栈、数据段等资源。 线程共享进程的资源(如内存、文件句柄等),但有自己独立的栈和寄存器
开销 创建、销毁进程需要分配和回收资源开销较大 线程创建、销毁开销较小,因为它共享进程的资源。
切换开销 进程切换涉及 页表切换、资源回收与分配上下文切换成本高 线程切换只涉及 寄存器、栈指针 的切换,上下文切换成本较低
通信方式 进程间通信(IPC,如管道、消息队列、共享内存等)复杂,需要操作系统支持。 线程间通信(共享全局变量、锁等)简单,但需要同步控制(如 synchronizedLock)。
稳定性 一个进程崩溃不会影响其他进程,稳定性高 线程共享进程资源,一个线程崩溃可能影响整个进程,稳定性较低
并发性 进程并行执行(多个 CPU 核心可同时执行多个进程)。 线程并发执行(多个线程共享 CPU 资源,提高执行效率)。

PCB 进程控制块

PCB(Process Control Block) 即进程控制块,是操作系统中用来管理和跟踪进程的数据结构,每个进程都对应着一个独立的 PCB。你可以将 PCB 视为进程的大脑。

当操作系统创建一个新进程时,会为该进程分配一个唯一的进程 ID,并且为该进程创建一个对应的进程控制块。当进程执行时,PCB 中的信息会不断变化,操作系统会根据这些信息来管理和调度进程。

PCB 主要包含下面几部分的内容:

  • 进程的描述信息,包括进程的名称、标识符等等;
  • 进程的调度信息,包括进程阻塞原因、进程状态(就绪、运行、阻塞等)、进程优先级(标识进程的重要程度)等等;
  • 进程对资源的需求情况,包括 CPU 时间、内存空间、I/O 设备等等。
  • 进程打开的文件信息,包括文件描述符、文件类型、打开模式等等。
  • 处理机的状态信息(由处理机的各种寄存器中的内容组成的),包括通用寄存器、指令计数器、程序状态字 PSW、用户栈指针