转自:http://www.zeuux.com/blog/content/1729/

Unix/Linux的接口设计有一句通用的格言“提供机制而不是策略”。区别对待机制(mechanism)和策略(policy)是Unix设计中的一大亮点。大部分的编程问题都可以被切割成两个部分:“需要提供什么功能”(机制)和“怎样实现这些功能”(策略)。如果由程序中的独立部分分别负责机制和策略的实现,那么开发软件就更容易,也更容易适应不同的需求。

Unix/Linux 的接口设计有一句通用的格言“提供机制而不是策略”。    区别对待机(mechanism)和策略(policy)是Unix设计中的一大亮点。大部分的编程问题都可以被切割成两个部分:“需要提供什么功能”(机制)和“怎样实现这些功能”(策略)。如果由程序中的独立部分分别负责机制和策略的实现,那么开发软件就更容易,也更容易适应不同的需求。

开源 - 展现在我们面前的是数以千计的代码,在那一行行的代码背后,到底蕴藏着怎样的设计思想,高手们曾怎样苦思冥想。在一堆堆的代码面前,有时候,我们很容易迷失曾经进来的入口,而掉入符号,变量以及函数堆积成的沼泽地。


  操作系统的本质是什么?管理者?亦或服务者?但,归根结底,它是一个执行者:执行用户程序 - 所谓为用户服务;执行中断- 所谓为外设服务;执行系统调用 - 所谓解放程序员(姑且说它为广大的程序员服务,因为程序员不再与繁杂的硬件打交道了);执行内核线程-为操作系统自身服务。而这所有执行的核心,无非是在恰当的时机,让哪个对象(程序,线程,中断服务程序,中断的下半部,系统调用)占有CPU 。换句话说, Unix/Linux 抽象出对这些对象的执行机制:

  • 程序的执行机制 - 进程
  • 内核函数的执行机制 - 线程
  • 中断服务程序的执行机制 - 中断信号触发
  • 中断下半部的执行机制 -softirq , tasklet ,工作队列
  • 系统调用的执行 - 软中断( int $0x80 触发)
  从机制和策略的角度看问题,也许,你对曾经困惑的问题有赫然开朗之感。
  如果说机制是一种框架,那么,策略就是填充框架的一个个具体实体。机制提供的是一种开放而宽松的环境,而策略就是在这个环境下赖以生存的生命个体。比如,我们编写的一个程序,fork()以后,就成为一个个进程的生命个体。而操作系统所提供给我们创建、执行以及结束进程的各种原语-fork(),exex()和exit()等是统管各种进程的机制。我们所创建进程的死活并不会影响机制本身。
 如此看来,也许我们对原理之困惑有所醒悟。我们任何人在任何时候都可以调用fork()创建N多进程。这样一个简单的fork()壳,想追根溯源者,剥开这个壳,可以看到其五脏六腑。fork()如果出现任何一个小bug,直接影响到我们任何人和任何进程。
如此看来,也许我们对开发者所承担的角色有所感悟。系统分析员和设计人员,任重而探究的路漫漫兮。说到此,设计模式等系列书,对有志于从编码走向设计的开发者或许有所启发。

机制与策略——陈莉君相关推荐

  1. 《Linux内核完全剖析-基于0.12内核》书评之陈莉君

    <Linux内核完全剖析-基于0.12内核>书评之陈莉君 <Linux内核完全剖析-基于0.12内核>一书出版之后,机械工业出版社编辑希望我就此书抽空写一个书评.在我拿到这本书 ...

  2. 陈莉君老师写的中断絮说(经典+幽默)

    陈莉君老师对中断的理解和解释,文章写的太精彩了,看完后对中断这个操作系统级的概念有了新的认识,也对 操作系统更加了解了. P.S. 不敢独自享有,这样会睡不好觉的.(本来最近就老失眠了) Enjoy ...

  3. 陈莉君老师写的中断絮说

    陈莉君老师对中断的理解和解释,文章写的太精彩了,看完后对中断这个操作系统级的概念有了新的认识,也对 操作系统更加了解了. P.S. 不敢独自享有,这样会睡不好觉的.(本来最近就老失眠了) Enjoy ...

  4. 计算机系统备份的原则和策略,计算机系统数据备份机制与策略

    计算机系统数据备份机制与策略 20年第5 05期 华中电力 第 l卷 8 计算机系统数据备份机制与策略 耿煜 (樊学院机械系,北襄樊襄湖 4 15 ) 4 03 摘要:针对当今计算环境中不断增长的数据 ...

  5. 驱动思想之机制和策略

    驱动程序的角色 作为一个程序员, 你能够对你的驱动作出你自己的选择, 并且在所需的编程时间和结果的灵活性之间, 选择一个可接受的平衡. 尽管说一个驱动是"灵活"的, 听起来有些奇怪 ...

  6. Linux看硬盘同步,从磁盘同步看linux的机制和策略

    linux操作系统是典型的机制和策略相分离的系统,机制和策略一直是设计领域一直关注的重要问题,它们的结合程度直接关系到系统的稳定性和可扩展性.今天做了一个linux上膝上电脑的电源管理的脚本,颇有感触 ...

  7. 驱动设计思想(机制、策略、分离、分层)

    1.机制和策略 (1)机制就是提供什么功能,策略就是怎么使用这些功能.在编写驱动时需要在编程时间和驱动的灵活性之间取一个可接受的折中,驱动提供机制,尽量不提供策略,策略让上层应用去做. (2)机制和策 ...

  8. linux内核ppt刘小明,【陈老师华为北研所讲座PPT】从机制与策略探究Linux内核设计之道(4)...

    原标题:[陈老师华为北研所讲座PPT]从机制与策略探究Linux内核设计之道(4) 解放编译程序,以统一的方式分配逻辑地址. 首先内核通过映射机制把进程的虚拟地址映射到物理地址,在进程运行时,如果内核 ...

  9. 机制和策略相分离原则

    这些天大刀阔斧修改了我们的alsa音频驱动,更深切理解了机制和策略分离的重要性. 说来惭愧,Linux Device Drivers一书翻来覆去查阅了无数遍,却忽视了绪论中的一句话:区分机制和策略是U ...

最新文章

  1. Python中常用的一些操作总结(未完待续)update @ 2017-5-18
  2. gdb / 调试进入 so 库的方法
  3. React学习:事件绑定、组件定义、for、map循环-学习笔记
  4. 读《C++ Primer(第三版)》的一些疑问(不断更新)
  5. 3.11 随机初始化
  6. 知乎在线部分的技术架构
  7. CFree 5.0最新注册码
  8. W3CSchool CHM API 帮助文档(全)
  9. Arduino GPS 车速表(Arduino流体力学燃油效率计)(更新:2022.7.3)
  10. 直播类 APP 项目开发实战(原理篇)
  11. 《计算机网络:自顶向下的方法》课后习题_第二章
  12. U8采购订单联查采购入库单
  13. Mac OS 开机密码重置
  14. 恩尼格玛机(字母转换,水题)
  15. 多元素过渡理解和一点透
  16. Java 添加Word项目符号、编号列表
  17. App怎样提高推广转化率
  18. Liunx网络技术管理及进程管理
  19. Style Transfer(PyTorch)
  20. 加价出票成机票ssjj网站潜规则

热门文章

  1. Vue目录详解和文件命名规范(超详细)
  2. word文档的目录、页码、引用出现乱码
  3. 大数据 Flink 教程之使用 Apache Flink 进行无服务器复杂事件处理
  4. 22岁-时光如河,浮生为鱼
  5. 基于JavaEE的智能人事管理系统(OA办公系统)
  6. 多媒体信息发布系统的独家优势
  7. 《系统玩家自强不息十月增强版》ISO下载
  8. Mac使用技巧:如何解决键盘被锁的问题?
  9. 注册会计师自学能过吗?
  10. 西门子s300编程实例,【西门子S7-300PLC 编程 】该死的 FC+Temp