计算机操作系统面经
进程 vs. 线程的区别
对比维度 | 进程(Process) | 线程(Thread) |
---|---|---|
基本概念 | 进程是 资源分配的最小单位,代表一个程序的运行实例。 | 线程是 CPU 调度的最小单位,是进程内部的执行单元。 |
资源 | 进程有 独立的地址空间,拥有自己的堆、栈、数据段等资源。 | 线程共享进程的资源(如内存、文件句柄等),但有自己独立的栈和寄存器。 |
开销 | 创建、销毁进程需要分配和回收资源,开销较大。 | 线程创建、销毁开销较小,因为它共享进程的资源。 |
切换开销 | 进程切换涉及 页表切换、资源回收与分配,上下文切换成本高。 | 线程切换只涉及 寄存器、栈指针 的切换,上下文切换成本较低。 |
通信方式 | 进程间通信(IPC,如管道、消息队列、共享内存等)复杂,需要操作系统支持。 | 线程间通信(共享全局变量、锁等)简单,但需要同步控制(如 synchronized 、Lock )。 |
稳定性 | 一个进程崩溃不会影响其他进程,稳定性高。 | 线程共享进程资源,一个线程崩溃可能影响整个进程,稳定性较低。 |
并发性 | 进程并行执行(多个 CPU 核心可同时执行多个进程)。 | 线程并发执行(多个线程共享 CPU 资源,提高执行效率)。 |
PCB 进程控制块
PCB(Process Control Block) 即进程控制块,是操作系统中用来管理和跟踪进程的数据结构,每个进程都对应着一个独立的 PCB。你可以将 PCB 视为进程的大脑。
当操作系统创建一个新进程时,会为该进程分配一个唯一的进程 ID,并且为该进程创建一个对应的进程控制块。当进程执行时,PCB 中的信息会不断变化,操作系统会根据这些信息来管理和调度进程。
PCB 主要包含下面几部分的内容:
- 进程的描述信息,包括进程的名称、标识符等等;
- 进程的调度信息,包括进程阻塞原因、进程状态(就绪、运行、阻塞等)、进程优先级(标识进程的重要程度)等等;
- 进程对资源的需求情况,包括 CPU 时间、内存空间、I/O 设备等等。
- 进程打开的文件信息,包括文件描述符、文件类型、打开模式等等。
- 处理机的状态信息(由处理机的各种寄存器中的内容组成的),包括通用寄存器、指令计数器、程序状态字 PSW、用户栈指针