eventfd 适合什么场景,它和 pipe 做线程间通知相比好在哪?
围绕“eventfd 适合什么场景,它和 pipe 做线程间通知相比好在哪”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明计数语义、单 fd 双向与内核对象轻量性。
操作系统面试题第 3 页,显示第 101–135 题,共找到 135 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
围绕“eventfd 适合什么场景,它和 pipe 做线程间通知相比好在哪”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明计数语义、单 fd 双向与内核对象轻量性。
围绕“Unix socket 的 SCM_RIGHTS 如何实现进程间传递文件描述符”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明辅助消息与内核 fd 表转换。
围绕“fork 之后再 exec 的典型流程是什么,为什么 Unix 要拆成两步”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释两步设计如何支持重定向与管道设置。
围绕“futex 是什么,为什么说它是 Linux 用户态锁的基石”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明等待队列在内核、无竞争时纯用户态的混合设计。
围绕“管道、消息队列、共享内存、socket 之间如何按场景选型”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答要按是否本机、数据量、是否需要同步语义给出取舍,不深入每种实现细节。
围绕“活锁和死锁的区别是什么,什么设计会引入活锁”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须用状态持续变化但无进展的定义区分,并给出重试风暴示例。
围绕“Linux load average 包含哪些状态的进程,高负载一定代表 CPU 忙吗”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 R+D 状态计入及 IO 等待导致的高负载场景。
围绕“固定加锁顺序为什么能预防死锁,跨模块代码如何约定顺序”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明打破循环等待的原理及层级化锁设计。
围绕“Linux 内核 lockdep 是如何在运行时检测潜在死锁的”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明锁依赖图与环检测思想。
围绕“条件变量的丢失唤醒问题是怎么发生的,如何正确使用避免”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须用检查谓词与 signal 之间的竞态说明成因。
围绕“为什么多线程程序需要内存序,x86 和 ARM 上的可见性差异在哪”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明乱序执行与缓存一致性导致的可见性问题及强弱内存模型差异。
围绕“mmap 共享映射如何实现进程间通信,MAP_SHARED 与 MAP_PRIVATE 差异是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明共享映射的页回写与匿名共享用法。
围绕“pthread_mutex 在 Linux 上基于 futex 如何做到无竞争时零系统调用”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明快路径用户态原子操作、慢路径 futex 等待。
围绕“互斥锁和信号量的本质区别是什么,能用二值信号量替代互斥锁吗”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明所有权与释放者限制及优先级继承差异。
围绕“nice 值如何影响 CFS 中进程实际获得的 CPU 时间”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 nice 到权重的映射改变 vruntime 增速。
围绕“Linux OOM killer 如何挑选要杀掉的进程,如何保护关键进程”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 oom_score 计算与 oom_score_adj 调整手段。
围绕“孤儿进程为什么会被 init 收养而不是变成僵尸”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明父进程先退出时 reparent 到 PID 1 的机制。
围绕“匿名管道和命名管道 FIFO 的区别是什么,管道的容量与阻塞行为如何”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明有无文件系统节点、PIPE_BUF 原子性及读写阻塞规则。
围绕“优先级反转是如何发生的,优先级继承如何解决”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须用三任务经典场景说明,并解释 PI mutex 的提升与恢复。
围绕“Linux 进程有哪几种状态,R、D、Z 各代表什么含义”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分可运行、不可中断睡眠与僵尸状态的产生原因。
围绕“pthread_join 与 pthread_detach 的区别是什么,不回收线程会怎样”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明线程资源由谁回收及两者都不做导致的泄漏。
围绕“什么是竞态条件,为什么单核 CPU 上也可能发生”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须用交错执行而非并行性解释竞态。
围绕“SCHED_FIFO 与 SCHED_RR 的区别是什么,实时任务饿死普通进程怎么办”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分时间片有无及实时节流机制。
围绕“读写锁适合什么读写比例,写者饥饿如何避免”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须分析读者优先导致的写饥饿与内核 rwsem 的缓解策略。
围绕“Linux SCHED_DEADLINE 适用于什么场景,它如何保证任务按时完成”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 runtime/deadline/period 三参数模型。
围绕“select、poll、epoll 在 fd 数量增长时性能差异的根源是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答要聚焦 O(n) 拷贝遍历与就绪事件回调模型的差异。
围绕“System V 或 POSIX 共享内存本身为什么不提供同步,需要配什么机制”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明共享内存只是裸内存区、需配合信号量或 futex。
围绕“Linux 信号有哪些不可靠性,为什么信号处理函数里只能调用异步信号安全函数”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明信号不排队、可重入问题及 async-signal-safe 限制。
围绕“signalfd 相比传统信号处理函数解决了什么问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明把异步信号转为同步 fd 事件、可进 epoll 的优势。
围绕“什么场景用自旋锁优于互斥锁,为什么用户态程序很少用自旋锁”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答要按临界区时长与能否睡眠给出判断。
围绕“线程局部存储 TLS 解决什么问题,__thread 变量的生命周期如何”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明每线程独立副本避免共享竞态及随线程创建销毁的生命周期。
围绕“同进程内线程切换为什么比跨进程切换便宜”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答要聚焦地址空间是否切换导致的页表与 TLB 差异。
围绕“本机通信选 Unix domain socket 还是 TCP loopback,性能与功能差在哪”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须比较协议栈开销、文件描述符传递与权限控制。
围绕“vfork 与 fork 的行为差异和使用风险是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 vfork 共享地址空间、父进程挂起及子进程只能 exec/_exit 的限制。
围绕“进程和线程在资源隔离与共享上有什么区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须从地址空间、文件描述符、调度单位三个维度说明差异。