02

自由软件和开源协议

我在Linus 系列的上一篇文章中提到了系统调用,有读者问,System Call(系统调用)和 Library Function(库函数)到底有什么区别呢?我在这简单回答一下。 操作系统的进程空间分为内核空间和用户空间,不同的空间需要不同的执行权限。其中系统调用运行在内核空间,库函数运行在用户空间。系统调用是通向操作系统本身的接口,面向设备驱动程序和硬件,属于底层调用,一般不具备可移植性。库函数是更高层次的接口,面向应用开发,通过执行系统调用满足应用软件的需求,并降低系统开销。 为了更好的理解这个问题,大家可以想象一个场景:你和你的小伙伴被空投到敌占区,抵达目标后,你通过对讲机呼叫小伙伴: 「土豆土豆,我是地瓜,请掩护我!」 「土豆收到,土豆收到,可我特么种你前头了,怎么掩护你啊?」 这种类型的通信,可以看作是库函数调用。 等摸清楚了敌人的军火库坐标,想干掉它得申请硬件资源,这时候就要呼 … Continue reading