posix_fadvise 的 SEQUENTIAL 与 DONTNEED 提示分别如何改变内核预读与缓存行为?
围绕“posix_fadvise 的 SEQUENTIAL 与 DONTNEED 提示分别如何改变内核预读与缓存行为”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分加大预读窗口与释放已用缓存两类提示及其对全表扫描类负载的价值。
操作系统 · 缓存面试题第 1 页,显示第 1–19 题,共找到 19 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
围绕“posix_fadvise 的 SEQUENTIAL 与 DONTNEED 提示分别如何改变内核预读与缓存行为”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分加大预读窗口与释放已用缓存两类提示及其对全表扫描类负载的价值。
围绕“使用 O_DIRECT 绕过页缓存时对缓冲区和偏移有什么约束,适合什么场景”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出内存地址、长度、偏移的对齐要求及数据库自管缓存的典型动机。
围绕“Linux 页缓存如何让普通 read/write 变快,又带来什么内存统计上的误解”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明页缓存是内核透明缓存且可被回收,解释 free 输出中 available 的含义。
围绕“write 返回成功后,数据到达磁盘的顺序和时机由什么决定”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 write 只保证进页缓存、由 flusher 线程异步写回,及掉电风险。
围绕“为什么按行遍历二维数组比按列遍历快,缓存局部性如何影响程序性能”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 cache line 预取与空间局部性原理。
围绕“多线程程序中什么是伪共享(false sharing),如何避免”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确同缓存行多核失效 ping-pong 的机制与对齐填充手段。
围绕“为什么 free 之后进程的 RSS 往往不会立即下降”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确分配器缓存与堆顶归还条件。
围绕“缓存一致性协议和内存屏障分别解决多核编程中的什么问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分硬件保证一致性与编译器/CPU 重排序两个层面。
围绕“如何区分进程是内存泄漏还是被 glibc 分配器缓存了内存”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出观测分配器统计与 valgrind 类工具的判定路径。
围绕“匿名 mmap 和文件 mmap 在页面来源与回收路径上有什么区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 swap 与页缓存两条回收路径的差异。
围绕“用 mmap 读文件和用 read 读文件在数据拷贝和缺页上有什么差异”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确页缓存映射与 read 的额外拷贝及随机小读的劣势。
围绕“Linux 页缓存是什么,为什么 free 显示的可用内存很少但系统并不缺内存”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确缓存可回收性与 available 指标的读法。
围绕“Linux 内核的 slab 分配器解决什么问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确小对象高频分配的内部碎片与初始化成本。
围绕“vm.swappiness 参数如何影响匿名页与页缓存的回收倾向”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确取值含义与调成低值的适用场景。
围绕“TLB 在地址转换中起什么作用,TLB miss 时代价有多大”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确缓存页表项避免多级遍历的机制及 miss 路径。
围绕“zswap 和 zram 在压缩换出路径上有什么区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确压缩写回缓存与压缩块设备两条路径的差异。
围绕“为什么频繁上下文切换会降低性能,如何在压测中观测”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出 TLB/缓存失效与内核开销两类成本及观测工具。
围绕“CPU 亲和性是什么,绑核在什么场景能提升性能”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明缓存局部性收益与负载不均风险。
围绕“为什么多线程程序需要内存序,x86 和 ARM 上的可见性差异在哪”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明乱序执行与缓存一致性导致的可见性问题及强弱内存模型差异。