linux是一个工程而不是理论

简介:

今天无聊的时候看了一会linux的FAQ,里面着重提出,linux不是一个很好的计算机科学理论而是一个很好的工程,很多人在邮件列表中提出一个新的想法,真的是很有创意的想法,但是很无情的被那些大牛们给咔嚓了,然后Linus或者Alan Cox等人就会给人一种很不随和的形象,其实他们都很忙,都有自己的工作,对于他们来说,写代码并且给出测试数据比空洞地谈理论要好得多,他们是典型的实践派,如果你提出了一个新的观点,那么最好的方式就是用代码实现它,并且将补丁和测试数据提交到社区,很多的计算机科学家们的理论在linux开发者那里都被不屑一顾的否定,linux的开发者们最烦的就是纸上谈兵了,举个例子就是多线程,理论证明越多的线程效率越高,但是那是在各方面都到位的基础上的,现实情况是,没有那么理想的情况,于是linux就不提倡创建很多线程,按照经验值,一个cpu平均1.5个线程就足够了,其实linux的调度器决定了linux中最好的情况就是线程的数量和cpu的数量一样多,因为linux是按照每cpu一个运行队列调度的,这就是linux的方式。比如很多的理论都是强调某某算法多么的高效,可是linux很简单的用实践否定了它。

事情又让我想起了syslet,很早以前我就写过一篇syslet补丁的文章,今天我突然想起来它,不得不为其设计而惊叹,syslet用另外一个线程替换被阻塞的当前的线程而返回,返回用户空间的这个syslet被do_fork的时候被赋予了CLONE_THREAD参数,那么也就是说就是原来将要阻塞的进程的一个线程,这样代替阻塞进程返回用户空间后也不会改变pid,改变的就是线程的id,就是这样的,所以说,一点也不改变原始执行绪的语义,如果用户非要在意线程id的话,那么我相信用户会自己处理好这个事情的,linux其实可以用任何方式在任何方向进行突破。



 本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1273953

相关文章
|
4月前
|
Java Linux Maven
Linux快速启动SpringBoot工程
Linux快速启动SpringBoot工程
45 0
|
5月前
|
Linux
linux大工程 - 我要一个属于自己的回收站
linux大工程 - 我要一个属于自己的回收站
40 0
|
Java 应用服务中间件 Linux
Linux环境下在Tomcat上部署JavaWeb工程
Linux环境下在Tomcat上部署JavaWeb工程
146 0
Linux环境下在Tomcat上部署JavaWeb工程
|
Linux
linux 大工程 - 我要一个属于自己的回收站
linux 大工程 - 我要一个属于自己的回收站
104 0
|
前端开发 Ubuntu Java
Spring+Vue工程部署在Linux
Spring+Vue工程部署在Linux
124 2
|
测试技术 Linux 数据安全/隐私保护
linux下svn(subversion)服务端添加工程及配置权限
linux下svn(subversion)服务端添加工程及配置权限 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/9010507.html   此篇我只是将所做过的事情记录下来,原想搜一篇文章保存呢,结果发现事实上并没有一篇合适的博文供参考,遂,自给自足,以丰衣足食嘛。
1298 0
|
Web App开发 网络协议 关系型数据库
Linux_异常_08_本机无法访问虚拟机web等工程
这是因为防火墙的原因,把响应端口开启就行了。       # Firewall configuration written by system-config-firewall  # Manual customization of this file is not recommended.
902 0