zoukankan      html  css  js  c++  java
  • linux系统——机制与策略(三)


    机制与策略


    学习系统调用时,书上提到机制与策略,这也是陈老师与武特学长经常给我们强调的,这是一种设计模式,帮助我们理解操作系统的设计。下面的内容是从陈莉君老师的博客上copy下来的,写的很好,很通俗、透彻。

    Unix/Linux的接口设计有一句通用的格言“提供机制而不是策略”。

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

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

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

    从机制和策略的角度看问题,也许,你对曾经困惑的问题有豁然开朗之感。

    如果说机制是一种框架,那么,策略就是填充框架的一个个具体的实体。机制提供的是一种开放而宽松的环境,而策略就是在这个环境下赖以生存的生命个体。比如,我们编写的一个程序,fork()以后,就成为一个个进程的生命个体。而操作系统所提供给我们创建、执行以及结束进程的各种原语--fork(),exec(),exit()等是统管各种进程的机制。我们所创建进程的死活并不会影响机制本身。
    如此看来,也许我们对原理之困惑有所醒悟。我们任何人在任何时候都可一调用fork()创建n多个进程。这样一个简单的fork()壳,想追根溯源者,剥开这个壳,可以看到其本质。fork()如果出现任何一个小的bug,直接影响到我们任何程序员和任何进程。

    如此看来,也许我们对开发者所承担的角色有所领悟。系统分析员和设计人员任重道远。说道此,设计模式等系列的书,对于有志于从编码走向设计的开发者或许有所启发。


    来自陈老师的博文:http://www.lupaworld.com/home-space-uid-26540-do-blog-id-204505.html

  • 相关阅读:
    Atitti 图像处理 图像混合 图像叠加 blend 原理与实现
    Atitit Gaussian Blur 高斯模糊 的原理and实现and 用途
    Atitit 图像处理 灰度图片 灰度化的原理与实现
    Atitit (Sketch Filter)素描滤镜的实现  图像处理  attilax总结
    Atitit 实现java的linq 以及与stream api的比较
    Atitit attilax在自然语言处理领域的成果
    Atitit 图像处理 常用8大滤镜效果 Jhlabs 图像处理类库 java常用图像处理类库
    Atitit 图像处理--图像分类 模式识别 肤色检测识别原理 与attilax的实践总结
    Atitit apache 和guava的反射工具
    atitit。企业的价值观 员工第一 vs 客户第一.docx
  • 原文地址:https://www.cnblogs.com/sun-frederick/p/4763272.html
Copyright © 2011-2022 走看看