博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux是一个工程而不是理论
阅读量:6604 次
发布时间:2019-06-24

本文共 845 字,大约阅读时间需要 2 分钟。

今天无聊的时候看了一会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

转载地址:http://mlwso.baihongyu.com/

你可能感兴趣的文章
程序中的@Override是什么意思?
查看>>
CentOS 编译安装Apache2.4 PHP5.6.30 Mysql5.6.16
查看>>
Visual SourceSafe 入门教学
查看>>
express 4.0以上的版本 express找不到的问题
查看>>
commons-lang中常用方法
查看>>
spring 定时任务
查看>>
thinkphp 路由规则终极详解(附伪静态)
查看>>
网络安全-加密算法
查看>>
This tag and its children can be replaced by ~~~
查看>>
XCode快捷键
查看>>
struts2 修改action的后缀
查看>>
php保存canvas生成的图片
查看>>
HTML5 定位
查看>>
禁止http 缓存的方法
查看>>
python windows下安装pip(三)
查看>>
Android图像处理(二)--Paint,Canvas,ColorMatrix详细
查看>>
Android 百度地图
查看>>
常见设计模式之【模板模式】
查看>>
Kolla - 使用docker安装部署openstack
查看>>
Mysql登录时提示1045的解决办法
查看>>