惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
About on SuperTechFans
Y
Y Combinator Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Microsoft Security Blog
Microsoft Security Blog
aimingoo的专栏
aimingoo的专栏
I
InfoQ
C
Check Point Blog
IT之家
IT之家
MyScale Blog
MyScale Blog
Apple Machine Learning Research
Apple Machine Learning Research
Vercel News
Vercel News
Last Week in AI
Last Week in AI
GbyAI
GbyAI
P
Proofpoint News Feed
量子位
Stack Overflow Blog
Stack Overflow Blog
Microsoft Azure Blog
Microsoft Azure Blog
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
人人都是产品经理
人人都是产品经理
B
Blog
T
The Blog of Author Tim Ferriss
H
Help Net Security
云风的 BLOG
云风的 BLOG

土法炼钢兴趣小组的算法知识备份

国密算法与国密 TLS 系列索引 【系统架构设计】架构质量属性:不只是"高可用高性能" 【系统架构设计百科】告警策略:如何避免"狼来了" 【系统架构设计】CQRS:读写分离的架构哲学 【系统架构设计】空间架构:极端扩展场景的解法 【系统架构设计】微服务架构深度审视:优势、代价与适用边界 【系统架构设计】扩展性原理:水平、垂直与对角扩展 【系统架构设计】无状态设计:扩展的第一步也是最难的一步 【系统架构设计】缓存架构:从本地到分布式的多级缓存体系 【系统架构设计】管道与过滤器:Unix 哲学的架构表达 【系统架构设计】复杂性管理:架构的核心战场 【系统架构设计】消息队列架构:异步解耦的设计与陷阱 【系统架构设计】CDN 架构:全球加速的设计原理 【系统架构设计】连接池设计:被忽视的性能杀手 【系统架构设计】弹性设计模式:熔断器、舱壁与超时 【系统架构设计】高可用设计模式:冗余、故障转移与仲裁 【系统架构设计】容量规划:从拍脑袋到数据驱动 【系统架构设计】数据库扩展:分库分表的工程实践与替代方案 【系统架构设计】SLO 工程:可靠性的量化管理 【系统架构设计】性能建模:用数学思维分析系统瓶颈 【系统架构设计】混沌工程:主动验证系统的韧性 【系统架构设计】零拷贝与内存映射:数据搬运的极致优化 【系统架构设计】线程模型:从 thread-per-request 到协程 【系统架构设计】容灾架构:多活与灾备设计 【系统架构设计】数据库性能模式:索引、查询与连接管理 【系统架构设计】数据建模:从关系范式到文档模型的真实权衡 【系统架构设计】吞吐量优化:批处理、流水线与并发模型 【系统架构设计】流处理架构:从批处理到实时的范式迁移 【系统架构设计】搜索引擎架构:倒排索引之上的系统设计 【系统架构设计】时序数据架构:监控与 IoT 的存储设计
【操作系统百科】FreeBSD 与 OpenBSD 的不同选择
2026-07-03 · via 土法炼钢兴趣小组的算法知识备份

Linux 不是唯一选择。FreeBSD 和 OpenBSD 在很多地方做了不同的决定——有些值得借鉴。

一、先看图

flowchart TD
    BSD[BSD 家族] --> FREE[FreeBSD<br/>性能 + ZFS]
    BSD --> OPEN[OpenBSD<br/>安全优先]
    BSD --> NET[NetBSD<br/>可移植性]

    LINUX[Linux] --> PERF[性能导向<br/>eBPF/io_uring]
    LINUX --> ECO[生态最大<br/>驱动最全]

    classDef bsd fill:#f0883e22,stroke:#f0883e,color:#adbac7;
    classDef linux fill:#388bfd22,stroke:#388bfd,color:#adbac7;
    class BSD,FREE,OPEN,NET bsd
    class LINUX,PERF,ECO linux

二、kqueue vs epoll

方面 kqueue epoll
API 设计 统一事件模型(文件/socket/信号/进程) 只处理 fd
事件类型 EVFILT_READ/WRITE/VNODE/PROC/SIGNAL/TIMER EPOLLIN/EPOLLOUT
原子性 kevent 一次性修改+等待 epoll_ctl + epoll_wait 分开
文件系统事件 EVFILT_VNODE 内置 需要 inotify

kqueue 的统一模型更优雅 → Linux 用 epoll+signalfd+timerfd+inotify 拼凑出类似能力。

三、jail vs namespace

# FreeBSD jail
jail -c name=myjail path=/jail host.hostname=jail ip4.addr=10.0.0.1

jail 是一体化容器 → namespace 是细粒度积木。

方面 jail namespace + cgroup
设计 一体化 组合式
复杂度
灵活性 较低
生态 Docker/K8s

四、ZFS

FreeBSD 内核集成 ZFS → 一等公民:

  • 文件系统 + 卷管理 + 快照 + 压缩 + RAID
  • boot environment → 系统更新可回滚

Linux 上 ZFS = 外部模块(许可证问题)→ DKMS 维护。

五、DTrace vs eBPF

方面 DTrace(BSD/Solaris) eBPF(Linux)
语言 D 语言 C/BPF
安全性 严格 verifier
应用范围 追踪 追踪+网络+安全+调度
生态 成熟但小 快速增长

eBPF 功能更广 → DTrace 的 D 语言更友好。

六、pledge / unveil(OpenBSD)

// OpenBSD 进程自限
pledge("stdio rpath", NULL);     // 只允许 stdio 和读文件
unveil("/usr/share", "r");       // 只能访问 /usr/share
unveil(NULL, NULL);              // 锁定
  • pledge → 类似 seccomp 但 API 极简
  • unveil → 类似 Landlock 但更直观

OpenBSD 的安全哲学:默认拒绝 → 显式允许。

七、网络栈

方面 FreeBSD Linux
默认防火墙 pf/ipfw iptables/nftables
TCP 实现 多栈(RACK/BBR) 多拥塞算法
零拷贝 sendfile splice/sendfile
DPDK 等旁路 netmap DPDK/XDP

FreeBSD 的 pf 语法比 iptables 更清晰。

八、代码组织与文档

BSD 的优势:

  • 整个系统一个仓库(内核+用户态+工具)
  • man page 质量极高 → Linux man page 质量参差不齐
  • 稳定的内部 API → 更好的代码可读性

九、BSD 在生产中

  • FreeBSD:Netflix CDN、WhatsApp、Sony PlayStation
  • OpenBSD:防火墙/路由器、安全关键系统
  • NetBSD:嵌入式、可移植性需求

十、小结

  • kqueue 设计更统一 → epoll 功能靠组合
  • jail 简单但灵活性不如 namespace
  • ZFS 在 FreeBSD 是一等公民
  • pledge/unveil 是最优雅的进程自限 API
  • BSD 代码组织和文档质量值得 Linux 借鉴

参考文献

  • FreeBSD Handbook
  • OpenBSD pledge(2) / unveil(2)
  • Marshall Kirk McKusick et al., “The Design and Implementation of the FreeBSD Operating System.” 2014
  • Michael Lucas, “Absolute FreeBSD.” 2018

工具

  • kqueue / jail
  • pledge / unveil
  • pf / ipfw

上一篇KVM 架构 下一篇Windows 内核

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。

2026-04-17 · os

【操作系统百科】POSIX 与 Linux/BSD/Windows 的偏离

POSIX 标准定义了 \"一个像 Unix 的 OS 应该长什么样\",但没有哪个真实 OS 完全等于它。本文对照 POSIX 基准,列出 Linux、FreeBSD、macOS、Windows 的扩展与偏离:Linux-only 的接口(epoll、io_uring、eventfd、prctl)、BSD-only(kqueue、pf)、NT 的异步模型、符号链接/路径语义差异、signal 语义的方言、fork 的地位演变。

2026-04-27 · os

【操作系统百科】内存回收

Linux 内存回收是 VM 最复杂的子系统之一。本文讲 active/inactive LRU、kswapd 与 direct reclaim、watermark 三线、swappiness 的真实含义、MGLRU 改造、memcg 回收与 PSI。

2026-04-28 · os

【操作系统百科】交换

swap 还值得开吗?本文讲 swap area 基础、swap cache、zram 压缩内存、zswap 前端压缩池、swappiness 的真实含义、容器里的 swap 策略,以及为什么现代 Android 全靠 zram 不靠磁盘。

2026-05-03 · os

【操作系统百科】Slab/SLUB 分配器

buddy 只管页粒度(4K+),内核大多数对象只有几十到几百字节。slab/SLUB 在 buddy 之上做对象级缓存。本文讲 slab 历史、SLUB 接手、SLOB 退场、kmem_cache、per-CPU cache、KASAN 集成。