系统调用、符号版本与数据结构演进:FreeBSD 如何处理兼容性
操作系统在演进过程中经常会碰到一个很现实的问题:一方面,内核和基础系统不可能几十年保持原样, 数据结构会变,系统调用会增加,某些早期设计也迟早需要推倒重来;另一方面,一个已经发布出去的 ABI 又不能想改就改。如果几十年间内核里的数据结构换了一批又一批,这艘船究竟还是不是当年那艘船? 保证它在用户态眼里仍然是同一艘船的关键,就在于 ABI 的稳定性。 否则系统每升级一次,过去编译好的程序都有可能需要重新编译,整个生态很快就会变得难以维护。