第30.1节 Linux 兼容层实现

注意:一个常见误解就是把 FreeBSD 的 Linux 兼容层当做虚拟机,认为这样做会降低软件的运行效率。实际情况是不仅不会慢,而且有些软件的运行速度还会比在 Linux 中更快,运行效率更高。因为他不是模拟器,也不是转译,而是 Linux ABI 实现。

https://cgit.freebsd.org/src/tree/sys/compat/linux/linux_file.copen in new window

从这里不难看出。做的事情只有一个:识别 Linux 系统调用,然后找到对应的 FreeBSD 系统调用实现。把原 Linux syscall 请求劫持到 FreeBSD syscall 的入口上面去。