程序及程序员的责任(哲学及系统论角度)

程序及程序员的责任(哲学及系统论角度)


Tags: 哲学, 管理思想, 系统论, 驱动程序

review
review1:[设备驱动设计者]的责任是基于的一个物理的(或低层次的)设备和一些系统资源来开发一个高层的逻辑的设备。
[设备驱动设计者]是一个主动的创作者。
[设备驱动]的责任是执行预定的规则,将上层接口命令转化为下层设备接口命令或其它的指定的数据转换任务。[设备驱动]是一个被动的工作者。


编写驱动程序为了完成什么任务?

编写驱动程序是为了完成什么任务?也就是驱动程序员的责任和任务是什么?要回答这个问题,我们得先厘清作为驱动程序员的创作客体——驱动程序的定义。
设备驱动程序是什么

设备驱动程序是什么?首先,设备驱动是一支计算程序,负责协助高层的应用程序与低层的硬件设备的通信协作;其次,设备驱动(代表CPU)必须通过计算机总 线与挂接(hook)在总线上的设备通信。第三,设备驱动的任务是将来自高层的高级指令转化成低层的硬件操作指令;如有反方向的数据流,设备驱动也负责通 知高层程序处理。

驱动程序的职责

设备驱动程序是内核的一部分,它完成以下的功能:

   1. 对设备初始化和释放;
   2. 把数据从内核传送到硬件和从硬件读取数据;
   3. 读取应用程序传送 给设备文件的数据和回送应用程序请求的数据;
   4. 检测和处理设备出现的错误。

设备驱动通常是硬件相关和操作系统相关的,因为从『逻辑指令』的角度看,第一,设备驱动将高层程序的逻辑指令转译为硬件设备的固有指令,所以设备驱动是硬件相关的;第二,设备驱动在使用内存时调用了操作系统的内存指令或其它操作系统资 源,所以设备驱是操作系统相关的。现在的操作系统通过标准化设备驱动与高层程序的『指令接口』后,大大简化了高层程序与硬件通信的编程任务。因为有了标准 的指令接口,程序员可对硬件通信任务作完全的假设,独立地开发高层程序的软件逻辑部分。

在处理器、通信端口(设备控制器)和电子线路的互联基础上,『驱动程序员』编写指令程序实现『管理』和『通信』任务(KEMIN:也就是对其进行编程),帮助系统实现做 功!『管理』任务体现在驱动程序职责一和四;『通信』任务体现在职责二和三。

    既然处理器、通信设备和电子线路都已经安置好了,为什么还需要程序指令呢?这些硬件在完成『做功』的任务缺乏了什么东西?作个比喻,一家餐厅把所有的餐 具、厨具都准备好了还是不能『做功』营业,必须有厨师和服务员活动工作才行,可见某系统『做功』的完成还必须有软性的可动态时间变化的元素参与。

    关于做功的时间性的证据,可以从“可编程”一语中看出来。编程是编织操作过程!

    既然Linux都把串口通信框架、部分串口硬件(比如uart_driver)驱动和链路控制模块(比如ppp)都做出来了,我们学习串口通信框架,可编 程性在哪里?有多少?

    第一,直接编程实现高层应用(有了固化的框架的确减少了可编程空间,但如果可编程空间超出了人的控制能力之外,编程成了复杂度过高的工作时,框架便大有作 为);

    第二,写自己的通信框架;

通信任务的物理层面与逻辑层面


从计算机系统的物理层面看计算通信任务,系统内表现为二进制数位经总线在设备之间流动;而从逻辑层面,数位有不同的上下文语义。从系统论的角度看,如果两 『逻辑通信系统』已经确立,数位在两逻辑系统边界流动;如果其中一逻辑系统没有完确立,甚至还不存在,那么部分数位用来“初始化”这样的逻辑系统。例子如操作系统从真实模式过度到虚拟模式,设备驱动模块一般由初始化函数与通信函数组成。另外,『逻辑通信系统』的确立需要很多状态信息,表现如某子系统会有相 当的『配置数据结构』驻留于内存。

初始化


为什么要初始化?要理解为 什么需要初始化,得先理解何为一个『完整的操作环境』。操作环境也是一个信息环境,有一定约定状态。

操作环境有逻辑高低级之分,就是因为有了这种层级区别,低层级的操作环境存在的目的往往只是为了构建(初 始化)更高层级的操作环境,它不直接与用户交互,用户一般太高级。操作系统本身就是一个高级的操作环 境。

如何理解操作环境,还要完整的?约定状态到底约定什么状态?


既然说是操作环境,那么给谁操作?这必定有一个操作的主体。这个主体就是有一定逻辑评判能力的系统。由此可见,用『完整 的操作环境』解析为何计算机软件系统需要初始化过程是不全面的。应该围绕『系统』来详述。不过这里的系统的定义比较麻烦。因为计算机软硬系统错交了多个维 度,比如硬件的与软件的、逻辑的与物理的、管理的与被管理的。

我们以『系统』为核心理解各 种编程任务。首先,『系统』是有一定的逻辑评判能力(也就是计算)的,这些能力的硬件基础是处理器(包括低智能一点的控制器);其次,『系统』不仅是物理 的,现代计算机里的系统更多是逻辑的,这些逻辑系统有很多预先约定状态(这些一般保存在主存中),所以需要初始化,所以需要配置;再次,『系统』要对外做 功必须能够与外界的其它『系统』进行通信,所以需要寻址,所以需地址空间。

你可能感兴趣的:(程序及程序员的责任(哲学及系统论角度))