02

自由软件和开源协议

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

29

自由软件

我相信我的订阅者中有很多是IT从业人员,我们在工作中会使用各种软件,除了微软、苹果等软件巨头的商业软件,还有更多的自由软件。我们使用这些软件构建自己的工作环境,为公司开发运营系统,为客户实现业务流程,有时候为了增强完善补充功能,我们甚至会修改这些软件的源代码…… 那么什么是自由软件呢?根据自由软件基金会的定义,自由软件(Free Software)是一种可以不受限制地自由使用、复制、研究、修改和分发的软件。不受限制正是自由软件最重要的本质。注意:其定义与是否收取费用无关,自由软件不一定是免费软件(整理自维基百科)。 自由软件运动的创始人是理查德·斯托曼,这位兄弟出生与1953年,20年后正式开始了战斗的人生,他的对手不是个人,而是所有封闭的软件公司,比如苹果、微软、Oracle、IBM等等。他到目前为止的成就有三,个个惊世骇俗: 1、开发了Emacs编辑器。Emac … Continue reading