Daily Study
更新: 9/25/2025 字数: 0 字 时长: 0 分钟
Daily Plan
#todo
- [ ]
进程与线程的区别
| 维度 | 进程 | 线程 |
|---|---|---|
| 定义 | 操作系统资源分配与隔离的最小单位(包含代码、堆、数据段、打开的文件等) | CPU 调度的最小单位,运行于进程内部,共享进程的大部分资源 |
| 地址空间 | 相互独立,默认互不可见 | 共享所属进程的地址空间(堆、静态区等),各自有独立的栈 |
| 通信方式 | 需要 IPC(管道、消息队列、共享内存、Unix 域套接字、RPC 等) | 共享内存直接读写,通常需锁/原子/Channel 等同步手段 |
| 创建/销毁成本 | 高(要分配独立资源、建立页表等) | 低(只需栈和少量内核/运行时结构) |
| 上下文切换成本 | 较高(切页表、切文件描述符上下文等) | 较低(同进程内切换栈/寄存器即可) |
| 隔离与安全 | 强隔离:一个进程崩溃不直接影响另一个 | 弱隔离:一个线程崩溃可能拖垮整个进程 |
| 适用场景 | 强隔离/多语言/不同依赖/稳定性优先(如微服务、插件以进程隔离) | 高并发/共享数据/低延迟协作(如并发处理、流水线、线程池) |
| 调试与运维 | 排障影响面小,但 IPC 复杂 | 调试更关注同步问题(死锁、竞态、饥饿) |
