44. 并发模型对比:Actor、CSP 与数据并行
从共享内存并发的困境切入,系统对比 Actor 与 CSP 两大消息传递模型:讲清 Actor 的 mailbox、消息投递语义与 Erlang 监督树,拆解 CSP 的 channel、select 与 Go 调度器,再梳理数据并行(MapReduce、Fork-Join、SIMD)的适用边界,最后给出按通信拓扑与失败模型的选型准则。
category
从共享内存并发的困境切入,系统对比 Actor 与 CSP 两大消息传递模型:讲清 Actor 的 mailbox、消息投递语义与 Erlang 监督树,拆解 CSP 的 channel、select 与 Go 调度器,再梳理数据并行(MapReduce、Fork-Join、SIMD)的适用边界,最后给出按通信拓扑与失败模型的选型准则。
从可达性分析出发,系统梳理标记-清除、标记-整理、复制三种基础回收算法的取舍,讲透分代假说、TLAB 分配与新生代/老年代布局,深入三色标记、读写屏障与 SATB 快照如何实现并发回收,对照引用计数与循环引用问题,并给出 Go 与 JVM 的 GC 调参实操与性能指标评估。
从锁的代价出发,讲透原子操作与 C++ 内存序(relaxed/acquire/release/seq_cst)的语义边界,剖析 CAS 循环与 ABA 问题的成因与 tagged pointer 解法,拆解 Treiber 栈与 Michael-Scott 队列的实现要点,最后对比引用计数、Hazard Pointer、EBR 与 RCU 四种安全内存回收方案。
完整拆解虚拟内存机制:为什么需要虚拟地址、页式管理的地址转换过程、多级页表与 TLB 如何把开销压到可接受范围、页表项的权限位与写时复制、缺页异常的完整处理路径、页面置换算法(FIFO/LRU/Clock)与抖动,以及 mmap、共享内存与内存映射文件等工程应用。
从整体视角认识操作系统:三大核心职责(资源管理、抽象提供、程序控制)、宏内核与微内核的体系结构之争、特权级与用户态内核态切换、系统调用的完整调用链路、中断与异常的处理时机、设备驱动模型,以及从加电自检到用户空间 init 的完整启动流程,并给出面试高频考点与工程取舍。
系统掌握 IO 模型全景:阻塞/非阻塞 IO、同步/异步 IO 的对比矩阵、IO 多路复用(select/poll/epoll)原理与对比、事件驱动模型(Reactor/Proactor)、零拷贝与 sendfile、以及 Redis/Nginx/Netty 等高性能框架的 IO 架构实践。
系统掌握并发与同步核心:竞态条件与临界区、原子性与可见性、互斥锁(synchronized/ReentrantLock/读写锁)、信号量与条件变量、自旋锁与乐观并发、内存模型与 volatile、无锁编程(CAS/ABA)、以及死锁/活锁/饥饿的成因与工程避免。
深入理解死锁的四个必要条件、预防与避免策略,掌握信号量、互斥锁、管程、条件变量等经典同步机制。
深入理解 CPU 调度算法:从 FCFS、SJF 到现代 CFS,掌握调度原理、时间片计算与多核负载均衡。
理解文件系统的组织方式:inode、目录、硬链接与软链接,掌握 Linux VFS、磁盘调度算法与 I/O 模型。
深入理解操作系统的内存管理机制:虚拟内存、页表、MMU、段页式管理与换页算法,掌握 Linux 内存布局与性能调优。
深入理解进程与线程的区别、PCB 结构、线程模型与并发编程基础,掌握 Linux 进程状态与进程间通信机制。