unix是按照进程组织作业的,因为起初人们使用计算机系统就是要分时处理各个作业,那时并没有现在的各种复杂且多样化的应用,也不需要什么进程间的通信,甚至不需要复杂IO,进程的传统一直沿用至今,极端的Eric在《unix编程艺术》中大肆鼓吹小进程的妙用,鼓吹unix的优良传统,此人的极端源自于他对unix的酷爱,源自于他对unix的深入理解,而我们要想从肤浅层次去理解这件事,那就不是很容易了,看看unix的内核,简单的说,看看linux的内核,我们能说些什么呢,linux在内核中尽量的避开了进程,除了kthread是真正的进程(其实更确切说是一个task_struct),别的几乎没有什么和用户空间进程相互隔离的概念,也许是linux对自己很自信吧,内核中几乎总是在统一的地址空间进行处理的,所有的进程公用内核页表,中断没有线程化,在任意上下文运行,甚至尽可能不让软中断线程话,进程调度没有真正的调度体,而是在当前的上下文简单调用schedule,最值得关注的是内存管理,没有实现每进程的工作集,linux使用全局工作集,尽可能让物理内存被全部占用,只看眼前却不怎么关注将来,linux是比unix更极端的实用主义者,起码在内存使用上,虽然也简单使用一点预读算法之类的...最根本的,linux的内核和unix一样,不是基于对象的微内核,而是大内核。
     看看windows,虽然我们以为它的内核是杂糅的,但是虽然它不是基于进程的,但是更进一步,它是基于对象的,对象之间可以基于接口互相通信,并且对象之间遵循严格的访问控制规则,linux内核一旦被侵入,那么入侵者可以毫不费力的获得一切权力,windows内核一旦被侵入,在硬件意义比如x86的意义上,入侵者也是可以为所欲为,然而因为有严格的对象间访问限制,你需要付出更多时间和精力,除非你是一个顶级hacker,最关键的,windows使用了每进程的工作集,这也许是windows对自己进程调度算法的不太信任吧。这个意义上,windows才是真正基于小对象的,进程对于它来讲都是很大的对象了,起码还有线程,windows虽然在对待进程线程这个问题上没有像linux那样实现嵌套组织方式(task_struct的组合模式),起码实现了一个包含的设计模式。

以上言语似乎不伦不类,我到底褒谁贬谁呢,其实我还是喜欢unix传统的,说实在的,我理解的unix的进程传统和Eric是一样的,这可不是自夸,进程传统是提供给用户的,而不是内核的实现方式,实现分离进程的内核是需要付出代价的,付出的代价开销必然要损害用户空间的性能,因此linux并不在内核特别在意进程或者对象,这确实可以带来效率的提升,举一个简单的例子,在内存置换算法中,如果是windows的基于进程工作集的算法,那么必然要涉及一系列的预测算法,比如预测哪个进程是活跃进程等等,那么如果预测失误,就会导致很大的内存被浪费,而unix/linux中并没有这么复杂的算法,它尽可能使用所有的内存,然后根据用户的短期行为进行置换行为的微调,即使对某一个进程暂时不公平,那么也不会造成内存的浪费。最重要的不是一个操作系统内核怎么实现,而是它提供给用户基于什么的用户接口。

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

unix更喜欢进程,可是...相关推荐

  1. 程序员修神之路--高并发下为什么更喜欢进程内缓存

    菜菜哥,告诉你一个好消息 YY妹子,什么好消息,你有男票了? 不是啦,我做的一个网站,以前经常由于访问量太大而崩溃,现在我加上了缓存,很稳定啦 加的什么缓存呢? 我用的redis,号称业界最快的缓存组 ...

  2. 我为什么更喜欢 Mac OS X

    我为什么更喜欢 Mac OS X 自从苹果的iPhone和iPad在市场上取得傲人的成绩之后,国内的用户对于苹果的MacBook笔记本以及iMac机器的热情也越来越高.但是很多人是买了Apple的电脑 ...

  3. 几个大神程序猿更喜欢用的Python编辑器!

    作为开发者来说,肯定都有自己比较喜欢使用的编辑器,有的人喜欢这个,有的人喜欢那个,还有的大神就喜欢用记事本,今天小千就来给大家介绍几个大神程序猿更喜欢用的Python编辑器. 1.Sublime Te ...

  4. C++/Python/Java/C,四大语言对比,你更喜欢哪种?

    现如今,互联网时代已经是风生水起,IT技术人才更是层出不穷.但学习在精不在多,总要有一方面精通才是自己的资本.面对众多的编程语言,Java.C语言.C++.Python等编程,你更喜欢哪种? 虽说C语 ...

  5. 扬州和苏州计算机发展前景,地理答啦:扬州和苏州这两座城市,你更喜欢的是?...

    原标题:地理答啦:扬州和苏州这两座城市,你更喜欢的是? 对于这个问题,地理知识与旅行资讯专家--地理答啦认为,扬州和苏州都是自己喜欢的城市,两个城市各有特色.从经济发达程度上看,个人更喜欢苏州. 在地 ...

  6. 纸上原型设计 VS 桌面原型工具设计,你更喜欢谁?

    2019独角兽企业重金招聘Python工程师标准>>> 纸上原型设计,作为传统的原型设计方式,简单快速,成本低廉,为大部分设计师所喜爱.而桌面原型工具设计,作为伴随电脑科技发展而出现 ...

  7. AI一分钟 | 刚爆Python将进入高考,AI就已强势进入公务员国考试卷;报告称1/4男性更喜欢跟机器人谈恋爱,真的吗?

    一分钟AI 人工智能进入国考试卷 上百万人参加2018年度国考笔试,我们距离AI还有多远? 发改委正在牵头制定智能汽车创新发展战略,2级水平以上的自动驾驶在2020年要达到10%左右 未来你会跟机器人 ...

  8. 南京、苏州、杭州、上海你更喜欢哪座城市?

    南京.苏州.杭州.上海你更喜欢哪座城市? 这个问题笔者来回答,实在是很合适.笔者在这四个城市里工作过,以出差做SAP咨询项目的方式,在这些城市里至少生活过半年.在这些城市生活期间笔者游历了这些城市的各 ...

  9. (转)javascript 杂谈之哪种写法你更喜欢?

    原文地址:http://www.cnblogs.com/baochuan/archive/2012/04/30/2473771.html 思维导图 介绍 老是在写js,你平时是怎么写你的js呢?更喜欢 ...

最新文章

  1. spark_updateStateByKey
  2. 分析JVM双亲委派模型的类加载源码 自定义类加载器
  3. Eclipse使用gradle编译时,使用固定的jdk版本进行编译(修改gradle的jdk编译版本)
  4. 深入学习python内存管理
  5. 测试ASP_NET 生命周期
  6. getResourceAsStream总是返回null以及intellij总是提示Argument ‘inputStream‘ might be null
  7. python爬虫爬取大众点评并导入redis
  8. 服务器安装什么文件可以获取密码,服务器ssh密码在哪获取
  9. bin code led_-/bin/sh: ./led: not found的解决办法
  10. 刚刚,“国民”APP微信崩了!官方致歉:已经逐步恢复
  11. android studio找不到r文件,Apk 中找不到r类文件
  12. 如何从完好的数据文件恢复oracle数据库
  13. hibernate 映射错误
  14. python爬取公众号
  15. 多元函数中的偏导数全导数以及隐函数
  16. 程序员必读书籍排行榜
  17. mysql的建表赋权_mysql创建用户并赋权
  18. 微信8.0状态背景视频合集
  19. 04-mysql数据备份之mysqldump命令详解
  20. Java类名的命名规则

热门文章

  1. XXL-JOB v2.0.2,分布式任务调度平台 | 多项特性优化更新
  2. openJDK之sun.misc.Unsafe类CAS底层实现
  3. 宁波Uber优步司机奖励政策(1月18日~1月24日)
  4. Teradata join 优化
  5. 微软发布了Spartan项目的细节,并证实了某些流言
  6. 【电信增值业务学习笔记】8 3G视频类增值业务
  7. python argsort排序结果_numpy.argsort()可以对元组或列表进行排序
  8. SD-WAN — 核心能力
  9. Docker 容器技术 — Dockerfile
  10. EdgeGallery — OpenStack VIM