操作系统的定义
操作系统的定义是什么,它是否引起过你的注意,在此,将以全新的角度来分析这个古老而简单的定义,为你展示一个新的思维空间。通过引入操作协议的概念来分析操作系统的定义,并进一步按用户角度分析操作系统的需求,推导新的操作系统含义。
作为整个系列的第一篇,本文从简单的操作系统定义入手进行讨论,所有的观点都是一家之言,希望能激发大家对操作系统理论的兴趣。
序言
随着开发源代码运动的持续,越来越多的人都加入了操作系统代码分析的大浪中,我也曾经下海,被代码中有很多妙的技巧吸引,不过在看过一段时间后,感觉如果只是一味地看代码,最终的结果是即使开发出新的操作系统仍旧是老模式的一个翻版。
源代码的出现,对于我们这些计算机技术落后地区的程序员来讲,提供了进行操作系统设计的一个必要条件,设计的门槛降低了,使得多数程序员自己开发一个简单的操作系统成为可能,但它仅是个必要条件,不是充分条件。它的出现本身不能改变我们的技术落后地位,最多是让我们追赶上源代码所达到的水平,想要超越,只能老老实实地进行理论上的探索,源代码是一个我们迅速缩短差距的工具。
因此我将重心转移到了理论探索上,希望能够分析出操作系统的发展方向,找到超越的突破口,然后再投入到现有代码的分析中,目的是设计下一代操作系统的模型,现在尚处于理论的探索中。
由于水平有限,感觉难度很大,期望能得到更多的帮助,因此借这个系列的方式,描述我这段时间的思考,与大家交流。所写的观点都是一家之言,肯定存在不少偏颇之处,恳请各位的指教。
1、传统定义
计算机软件分为系统软件和应用软件两大类
系统软件用于管理计算机本身和应用程序
应用软件是为满足用户特定需求而设计的软件
操作系统是最基本的系统软件,它和系统工具软件构成了系统软件
但给操作系统下定义是困难的,至今没有一个能公认的统一说法
以下列举了现今操作系统教材中常见的几种观察操作系统的角度
- 自顶向下的角度,操作系统是对裸机的第一层软件,是对机器的第一次扩展,为用户提供了一台与实际硬件等价的虚拟机
- 自底向上的角度,操作系统是资源管理,在相互竞争的程序之间有序地控制对处理器、存储器以及其他I/O接口设备的分配
- 从软件分类角度看,操作系统是最基本的系统软件,它控制着计算机所有的资源并提供应用程序开发的接口
- 从系统管理员角度看,操作系统合理地组织管理了计算机系统的工作流程,使之能为多个用户提供安全高效的计算机资源共享
- 从程序员角度看(即从操作系统产生的角度),操作系统是将程序员从复杂的硬件控制中解脱出来,并为软件开发者提供了一个虚拟机,从而能更方便的进行程序设计
- 从一般用户角度看,操作系统为他们提供了一个良好的交互界面,使得他们不必了解有关硬件和系统软件的细节,就能方便地使用计算机
- 从硬件设计者看,操作系统为计算机系统功能扩展提供了支撑平台,使硬件系统与应用软件产生了相对独立性,可以在一定范围内对硬件模块进行升级和添加新硬件,而不会影响原先应用软件
总的来讲,传统的操作系统定义如下:
操作系统是控制和管理计算机系统内各种硬件和软件资源、合理有效地组织计算机系统的工作,为用户提供一个使用方便可扩展的工作环境,从而起到连接计算机和用户的接口作用
此定义是以操作系统的具体功能为基础的定义方式
可以按如下示意图来描述操作系统的在计算机系统中的位置
接口示意图
按层次模型看是
在传统定义方式中,操作系统和用户的关系是被动和主动的关系,即用户将自己对计算机的需求以过交互操作的方式命令操作系统完成,而操作系统是根据完成任务的需要分配资源,它仅有的主动权就是在于如何分配与何时分配。
在此将这种对操作系统定义方式称为被动式定义,从理论上认为操作系统是完全按用户的要求来完成自己的工作。
2、操作协议
操作协议的定义
为了进一步分析操作系统的含义,引入一个新概念--操作协议
产品展现给使用者的是其操作接口,如同遥控器和软件的用户界面
为了让用户更方便使用产品,它会有一个使用说明,这个说明首先说明了产品的各种操作接口的含义,然后说明各种操作接口的限制,而用户使用产品时必须遵守这种说明,不然就不能正常使用该产品,甚至导致该产品的损坏或损坏了其他相关产品
这种说明就是要求产品使用者遵守的操作协议,因此定义如下
操作协议的定义:
一种产品说明,描述产品操作接口及其约束,并且要求产品使用者遵照说明使用产品,而且只有按说明进行操作才能得到正确的结果,否则导致操作无效。
操作接口是产品的第一说明,它描述了产品的基本功能,考虑的是单个接口使用参数的描述与操作结果的描述。
而操作协议是建立在操作接口之上的二次说明,从产品的整体特性考虑的具体说明,包含操作接口的说明和使用操作接口之间的约束说明。
操作协议的特点
- 操作协议只考虑产品的使用方式是否正确,不关心产品内部的实现细节,使用者只需根据操作协议使用产品得到需要的结果,不必考虑产品完成操作具体的过程,只对产品操作负责
- 产品使用者只能按照操作协议的说明才能正确使用产品
- 对使用者违反操作协议的要求进行操作导致的结果不负责,由使用者自己承担
在分析操作系统中引入操作协议概念的基本原因是:
硬件接口说明与软件接口说明都是一种操作协议,相对操作系统而言的,通过操作协议的概念可以将软件和硬件两种资源合并成一种概念
操作协议分类
操作协议从定制者角度划分可以分为单方定制和多方定制
单方的含义 -- 制造单个产品的个人或团体,即单个制造者
制造相同产品的生产群体,他们是相互竞争的产品生产者,可以是个人、小团体和企业,这样的生产者为以独立制造者身份出现时是单方定制者,属于单方范畴
单个产品的制造者有两种含义:
- 单纯的单个制造者
- 为在同类产品竞争中生存,而由原来的竞争者组合成为单个同类产品的制造者
单方定制是单个定制者以自身经验为基础进行的分析,而使用方在获得实体并后只能按定制方定义的操作协议使用该实体。
通常这样的操作协议是从相应产品独立使用的角度出发的使用说明,是引发市场竞争的最小单位,产品的市场竞争初期是以各种单方定制的操作协议竞争为主题的,而且技术的发展,是各种新单方定制的操作协议不断涌现出现的动力。
多方的含义 -- 是以合作为基础的单方集合概念,这里的单方是指非同类产品制造者,而是以生产链为联系基础的相关产品制造者构成的群体,他们各自的产品形成互补或为上下应用链的关系,是实质上的合作群体而非竞争关系。
多方定制是多方协商后形成的一种合作方内部标准,按这样的标准生产各自的产品,而这些产品组合使用是以这个多方定制的操作协议作为组合的标准。
通常这些多方定制的操作协议是以一种标准的名义出现,是市场长期竞争导致的合作产物,总是有明确的产品链应用范畴,是一种产品之间的协议,随着市场的改变而同步变化。
单方定制的操作协议和多方定制的操作协议存在形式上的差异
- 单方定制的操作协议,考虑的是单个产品的范畴,操作协议说明中只有一个主体就是产品本身
- 多方定制的操作协议,考虑的是产品链上所有产品的范畴,从设计一开始就考虑上下游产品的接口组合问题,因此操作协议说明中的主体是整个产品链,或者以直接上下游关系的关联产品为主体,即多个主体
一种操作协议既可以是单方定制协议,也可以是多方定制协议,差别在于考察的角度不同。
如JAVA语言,从其设计的出发点看是一种多方定制的操作协议,是一种行业标准,而从语言角度看,它就是一种单方定制的操作协议,因为它只是众多计算机语言中的一种。
对于一件以市场交易为目的而制作的产品,即商品,它的操作协议,从其产生的那天开始就是以成为行业标准作为其发展的目标(不管定制者自己是否意识到)。
在产品初期,没有产生行业标准前,是以单方定制的操作协议竞争为主流,并在竞争中不断完善各自的操作协议,或推出新的操作协议。
随着产品的竞争,操作协议的定制从无序开始向有序转变,即出现一个或几个操作协议由于符合市场需求,逐渐成为业内的标准,使得整个产品链都进入规范设计,即按某个标准进行设计,这时的单方定制的操作协议业会因其遵守了某个标准,而成为事实上的多方定制的操作协议。
因此,当标准出现后,单方和多方的界限开始模糊,因为在相同标准下定制的操作协议具有相容性。
随着技术的发展,标准会因技术的变化而被淘汰,这迫使操作协议不断发展自己,或者彻底抛弃,制作全新的操作协议。
因此操作协议是一个动态发展竞争的概念,操作协议是动态协议,由市场机制来决定所制订的操作协议是否合理,并通过市场反馈信息来修改完善操作协议。
操作系统是通过协调各种硬件调用和软件调用来完成资源管理,自身也提供一个庞大的应用接口,因此使用操作协议来描述是可行的,而操作系统是一种不断发展的系统软件,所以引入操作协议概念可以更好地描述操作系统的发展过程
和使用者的关系
现在简要分析一下各种产品使用者和产品操作协议之间的关系
面对一种产品,用户可分为三种:
产品制造者、参与操作协议定制的非产品制造方、一般用户
分类讨论如下:
产品制造者与操作协议的关系
无论是单方定制还是多方定制的产品,对产品制造者来说,其对产品的内在结构和其操作方式形成的原理,有着是最全面的了解,而且在实际情况中在操作协议中说明只是公开的操作形式,还有部分未公开的操作协议, 如图:
在这里存在一个产品制造者的技术程度,是产品制造人员的总体水平,这决定了产品与操作协议(包括公开和隐含)之间的紧密度,以及产品与产品设计目标的紧密度,水平越低,紧密度越低,各个层次之间的信息存在的差异就越大,相对的制造者对产品的理解也就越有局限性。
即操作协议(包括公开和隐含)的性能(对产品而言的使用性能)可按在制造者的总体水平衡量。
参与协议定制的非产品制作方的用户和操作协议的关系
显然,这里指的操作协议是多方定制的操作协议,这样的用户是该产品的上游或下游产品链上的产品制造者,他们参与了操作协议制定,而这样的操作协议是两者产品的组合操作协议,因此他们对操作协议有深入的了解,拿到产品后目的是为了与自己手中的其他相关产品进行组合,这种组合是按照共同定制的操作协议来完成。
因此这样的用户对操作协议(产品公开的部分)的理解是完全的,对产品的使用是完全按照操作协议(产品公开的部分)进行的,如图:
这样的操作协议的性能高低取决于多方定制中达成的一致性的程度,即多方的磨合度。
而这种用户在面对单方定制的操作协议时和第三种用户的待遇相同。
一般用户和操作协议的关系
对于一般用户来讲,因为没有参与制造或者协议的定制,在面对单方定制的操作协议和多方定制的操作协议时,情况是等同的,他们对产品的了解是建立在对产品操作协议的理解程度。
即一般用户得到产品和操作协议时,首先做的事是理解操作协议,然后使用产品,对于没有操作协议说明的产品,用户通过产品的外在表现来理解其操作,从实践角度勾勒出操作协议的原貌。
这种理解在多数情况下是单向的理解(社会分工导致的结果),即使用产品的一方没有机会和开发产品者进行深入交流,使得产品使用者彻底理解操作协议的内容。
作为产品制作者,总是把产品的操作协议详细描述,而描述方式多数情况下是按自己的行业思考模式进行的,因为产品就是这种思考模式的设计产物
而使用者是从自己的思考模式入手进行的分析,得出一个需要外部产品功能的需求,进而找到了该类产品的操作协议,进行理解,但理解范围总是在自己需要的那部分范围中,即是产品操作协议的一个子集。
因此理解总是不完全的,而最先理解的部分必定是使用者最需要获得的功能。
两者之间的关系如图:
(从上面的三种情况可以看出,每个层次或多或少都存在一定的信息丢失,这种情况将在《信息传递模型》中针对计算机的软件结构中信息传递进行详细讨论,在此就省略了,因为和操作系统定义的主题无直接关系)
对于操作协议中的隐含部分,在现实中很多,如介绍操作系统中未公开的API和未公开的CPU细节,这样导致了不少内幕书籍的诞生。
但隐含部分在本文中无讨论的意义,因此文中后面所指的操作协议均为公开的部分。
由上面三种情况的分析可以得出操作协议的基本特性。
单方定制的操作协议是一种由用户单方面理解的操作协议。
多方操作协议是所有参与定制方的共同理解,但对一般用户来说仍旧是单方定制的特性。
3、等价定义
操作系统的等价定义
操作系统的本质是管理,对硬件、应用软件和用户的操作的管理。
而硬件、软件和用户的相同点是"遵守操作协议方式",并且这些操作协议是以可程序化的协议说明。
硬件的操作协议是硬件开发者制定的。
操作系统的应用接口分为两部分,一是将硬件协议转化为软件操作协议,二是操作系统为自身需要定制的操作协议。
应用软件的操作协议,以操作系统的操作协议(系统接口)为基础,实现特定应用功能,并以自定义的操作协议的方式将软件使用方法展现。
用户的操作是计算机系统中所有操作协议的综合体现,因为他的每次操作都通过操作协议的层层处理达到各种相关资源,再将结果通过层层操作协议展现给用户(注意:上述两条操作协议运行线路通常是不同的)。
而操作系统的一个任务是有效地组织多道程序运行,这决定了,操作系统是所有操作协议的管理者。
由此可以给操作系统等同于传统定义的等价定义:
操作系统是一组相关操作协议集合的管理器,管理的范畴包含自身定义的操作协议。
将资源进行了等价变换,把处理的实际接口凸现。
按层次模型分析
- 操作系统通过对硬件操作协议的理解并作出相应软件形式上的扩展
- 操作系统以自定义的操作协议形式提供各类软硬件资源的使用服务
- 用户与应用程序通过使用操作系统定义的操作协议完成所需功能
- 操作系统通过要求用户与应用程序遵守其操作协议的方式管理两者
- 应用软件定义的操作协议只对用户与使用该操作协议的其他应用软件具有约束力
- 每个层次(包括硬件)都具有自己的容错机制(或多或少),用于解决其自定义的操作协议与被其使用的操作协议之间的可能误差
操作系统的操作协议分析
现在按这个新的定义重新考察操作系统在计算机系统的位置。
由于操作协议存在单方定制和多方定制的差别,所以考察也得分两个方向。
从单方定制操作协议角度分析,
如图
由单方定制操作协议在计算机软件系统中的特性:
操作协议的使用者,总是理解并使用操作协议的一部分,其使用目的是完成某种特定任务,即以所使用的操作协议为基础,整体上是进行了一次逻辑扩展,如同操作系统对硬件层进行扩展一样,同样是生成了一个虚拟机,只是此虚拟机的范畴只限于它的设计范围,如果它的设计范围和操作系统一样的话,它就自动转化为操作系统概念了。
所以在计算机层次模型中每增加一层软件,就存在一次信息缩减和一次信息扩张,而且这样的缩减和扩张属于两个不同的范畴,不能进行信息互补,不能互补并不说明信息丢失,因为每个层次都有它自身的任务,信息丢失的概念应该是针对此任务而言的,如果是任务相关的信息在经过这样的一次缩减和一次扩张后丢失了,才算信息丢失。
而作为最终用户是这种信息变化的最后承受者,计算机整体性能操作性能等同于用户操作中感觉到的性能。
他每次操作后所能接受到的信息中的有效部分取决最接近他的那层软件的信息丢失率,注意这是指他能接受到的全部信息,而对用户来说,他需要的可能仅是一小部分,而这部分恰好未丢失,则对用户来说这次操作就是成功的,如果需要的是属于丢失的,则按信息缺省率来计算这次操作对用户的信息丢失率(具体的分析在《信息传递模型》中进行)。
图中的应用软件虽然是一个整体,但中间仍旧可以分层次,层次之间的关系是产品组的关系,即上层产品是在对多个应用软件的操作协议的理解之后,进行功能扩展。
下面以一个简单的软件应用结构分析,应用软件D以应用软件A、B、C为基础,进行开发设计。
如图所示:
这是个简单的应用软件层次分析,其中下层的应用操作协议可以是操作系统提供的应用软件的操作协议与用户界面的操作协议。
现今操作系统用户界面的操作协议是一种可编程的操作协议,允许应用软件内部使用,因此图中的应用软件A、B、C可以为是操作系统的应用软件接口或者用户系统操作界面的子集。
从多方定制操作协议角度分析
多方定制操作协议的特性就是对组合的双方是无信息丢失,因为所有模块是按照标准连接的,如造成信息丢失,那唯一原因就是操作协议本身,而对最终用户就如同单方定制的操作协议。
如图所示:
基本和单方定制的操作协议相同,差别在于理解误差的消除,正是这种理解范围上的差异可以解释现在各种软件标准不断出现的原因,它们能尽可能的降低信息传递中的理解误差,多方定制的操作协议在硬件中的表现就是总线方式,软件上就是"软件总线",即各种标准(如组件概念的出现),这是经历长期发展得到的现状,是市场竞争的产物。
而对于一般用户,多方定制和单方定制没有差别,唯一优点是在于,用户对各种上下游产品组装中,有了很大的方便,因为很多的操作协议是一致的。
最终用户和应用软件之间也可以存在多方定制的操作协议,即软件开发商和用户一起开发,但这样的用户是少数,绝大多数的用户是单纯的使用者。
同样,对于应用软件层,也可以按多方定制的操作协议进行细分,其结构和单方定制的操作协议基本相同。
等价定义的特点
虽然是等价的定义,但基础的概念不同,产生的结果也存在一定差异,操作协议的定义操作系统的方式,有如下特定:
体现操作系统的核心任务和本质。
核心任务是管理。
本质是对操作协议的管理。
屏蔽软硬件的细节。
原有定义,将视线集中在具体细节上,使用操作协议的概念统一了软件和硬件的差别,并提供了更清晰的接口关系。
直观地表现了各层次虚拟机的产生。
在层次模型中,上层产品和下层产品的关系是建立在对操作协议的理解。
上层产品是通过对操作协议的部分或全部的使用来完成对下层产品功能的扩展。
明确了操作系统管理的资源。
传统的定义方式,只是笼统的说对资源的管理,虽然可以具体到处理器、存储器以及I/O设备上,但没有统一的描述形式。
按操作协议的概念,操作系统对软件资源的管理就是其自定义的应用软件使用的操作协议与用户界面的操作协议。
而应用软件和用户是通过这些操作协议来接受操作系统的管理。
凸现用户的感受。
用户是整个计算机系统方案的最终承受者。
整个系统的性能好坏体现在用户接触到的最后一层应用软件的操作协议和由操作系统提供的用户界面的操作协议。
这就说明软件界面和操作系统界面对一般用户的重要性,它们的好用与否,关系到用户是否能接受这个整个系统,因此在现代操作系统设计中,系统界面的重要性越来越突出,直接关系到该操作系统的市场,只通过应用软件来满足用户需求已经不够,这点在现在的操作系统界面向图形化发展的趋势中逐步验证。
4、进一步分析
前面的分析中最终用户和操作系统的接触是仅仅局限于操作系统提供的用户界面上,这仅是一个方面,这段分析的重点是操作系统在资源管理中对用户的重要性,但讨论不涉及操作系统的内部细节,是概念讨论。
是谁的操作接口
在传统定义中,操作系统的一个特点是为用户提供一个操作更方便的计算机接口,这个定义方式中的用户定义存在问题。
计算机的用户可以简单的分为三种:
计算机专家 :软件的开发人员
有基本技能的用户 :仅用于日常办公打字、娱乐的用户
根本不懂的用户 :希望使用电脑象看电视那样简单的用户
在这样的划分中能符合操作系统定义中用户概念的只有计算机专家,即程序员,而其他用户了解的仅是几个最常办公用软件、操作口令或者是鼠标点击的顺序,对于操作系统的了解只是认识一个新名词而已,直观的感觉是眼花缭乱的图案以及老是蹦出来吓人的错误警告,仅此而已。
也就是说现有操作系统的操作协议对一般用户来讲是一种难以理解和使用的说明。
形成这种现象本质就在于操作系统从一开始就定位在程序员的使用范围,而没有考虑最一般的用户,而现在随着市场的压力,使用计算机的多数是对计算机了解甚少的人,操作系统才不得不向一般使用者低头,但这个低头的速度慢得惊人。
如果用定义中"方便用户使用的接口"还是能勉强搪塞过去,但从消息传递的角度看,操作系统的问题就更大了。
一个简单的例子
举如下一个事例进行分析,它就来自于我们的日常生活,可体现使用者在现有计算机系统面前的弱势地位。
假设有三个用户:计算机专家、有基本技能的用户以及不懂电脑的用户。
为他们提供一样的工作环境,每人一台正处于上网状态的微机,电脑软硬件配置相同,操作系统是图形界面,带鼠标,运行着版本最新的杀毒软件。
他们都从网上下载了一个小的应用软件(对于专家和有基本技能的两个人,是按兴趣自己找的,而那位不懂电脑的人可在别人的帮助下进行下载操作)
然后他们都点击鼠标运行了那个软件,按运行结果讨论。
屏幕上一点反应都没有,也没有任何机器速度变慢的迹象。
除了专家,另两个用户的第一反应是,刚才的鼠标点击动作可能操作不规范,于是又重新点击了一遍,还是同样的结果,没反应。
这时不懂电脑的用户就会放弃对它的兴趣,而去进行其他操作。
对于有一定基本技能的用户,就会动一下脑子,认为这是没道理的,然后看看那个杀病毒的标志在合适位置上,就放心了,它没报警就没问题,于是他也转向其他地方,放弃对这个怪文件的操作或者删除。
而对于专家,会马上意识到问题的严重性,虽然杀毒软件没有报警,但它可能是个最新病毒,然后想想这台电脑上有无重要的数据,想到这个程序可能会建立一个远程连接窃取自己的数据,因为电脑在网上。因此,专家就会运行系统工具来逐个查找问题的所在(当然现在最好将网线掐掉),最后发现没有任何不正常的迹象,于是放心了一半,但几天内还是会不安心,为自己这个不小心的运行暗自后悔(严重点就会对该软件进行解剖,进行逆向工程),如果一直正常的话,也会慢慢淡忘 ,把它当作一种恶作剧或设计有误的程序。
- 屏幕上出现了预料中的画面
这时只要杀毒软件不报警,多数情况下连专家都会被麻痹,仅在专家是个高度敏感的人时,才会怀疑这是否是个美丽的陷阱(这样的专家活得肯定很累)。
- 屏幕上出现类似病毒发作的症状
这时所有人都知道它是个恶意程序了。
这个例子说明的就是一个问题,从多数情况来看我们是很难从运行的外在表现来判断出一个陌生程序是恶意的还是善意的,即使是专家,也最多是安装上更多的安全软件来防,即靠应用软防止恶意程序的破坏,是否能防住专家自己也心里没底。
原因就是用户在电脑面前是处于信息观察的弱势地位。
而操作系统处于信息观察的强势地位,它很清楚它进行了哪些和实际资源有关的操作,比如感染了其他文件,建立了一个远程连接等,但现有的操作系统自身还不能区别正常操作与恶意操作的差别,这使得最有用的信息被操作系统浪费了
这是典型的信息不对称
消息不对称
引用经济学领域的消息不对称原理来解释这种现象,分析用户和操作系统之间的弱势和强势的关系,以及产生原因。
消息不对称的起因是控制所有重要资源的操作系统没有提供完整的信息透明机制,而仅仅提供一些应用接口,希望应用程序通过这些接口将信息展现给用户,而应用程序对操作系统进行监视又是困难的,因为它不知到操作系统内部的工作信息,所以信息的展现是局部的,不彻底的,由此导致用户接受到的信息是片面的。
这个问题从操作系统的定义中就能清楚的看到这个缺憾,一直以来都认为操作系统不必为这种安全问题负责。
信息运行的主体操作系统只是在局部资源安全性(如互斥、死锁)上进行了保护,没有对用户这个最终用户起到安全防范的作用,导致了现在防止病毒入侵的方式还停留在被动反应的阶段。
而作为一般用户,面对的屏幕时,能得到的信息,是无法作出正确判断的,但深入检查又是这些用户能力之外的工作。
专家的技能在这方面也是同样的受限制,因为基本是事后处理,有针对的及时信息总是非常的有限。
对于进行安全维护的应用软件,它们能防住一般的恶意软件,但如果是操作系统本身的后门导致的问题,它们也没办法,因为控制权在操作系统中
所以从获取消息的方式来看,用户是弱势群体。
所有的信息都是由操作系统来掌握的,虽然它自身并不理解这些信息的重要性,但所有的资源都是它管理,这导致了操作系统的强势地位,而实际这种强势地位是操作系统设计者们强势地位的体现。
但即使是操作系统设计者在一个正式版本面前同样也是处于弱势地位,因为他在设计的时候没有使用这种强势地位为最终用户认真地考虑。
说的严重点是一种设计失职,但不能怪他们,他们遵守了传统的操作系统定义,强调的是操作系统为用户提供一个方便使用的扩展平台,它的职责是保证资源安全分配,而不必考虑申请资源的对象是否有恶意。
从资源角度讲,用户是这样的一种资源,他们通过接受输出消息、输入操作而成为一种受计算机系统约束的一种资源,也就是被操作系统管理的一种特殊资源。
如图:
在此图中,对操作系统而言,用户是一种具有输入与反馈的智能外设,是一种受自己管理的资源,而且仅是一种不严格的管理,未进行合法操作和非法操作(包括合法用户的误操作)的区分,这样的结果使得一般用户的弱势地位得到进一步的加强。
从操作协议的角度分析就是,现在的操作系统管理体制仅从操作协议的角度将所有申请资源操作的程序都一视同仁,即使它是在用户未知的情况下进行了重要文件的删除,理由是不能区分,其实质是操作系统自定义的操作协议不完善,对自己提供的API 没有进行完善地约束管理。
这预示着操作协议的一个发展方向,也是现代操作系统一直努力的方向,从操作系统层开始建立整个软件体系的安全体制,往此方向发展的动力是信息透明的需要,是用户改变弱势地位的压力。
改变信息不对称的现状是操作系统设计者进行安全体制设计中必须解决的课题
5、新含义
如何才能改变用户的弱势地位呢?
人,不具有计算机那样高速机械性的精确运算能力,也没有计算机那样强大的存储功能,唯一的优势是善于使用工具和逻辑思维。
使用计算机的用户处于不同的分工,思维方式不同,强求他们都具有分析计算机软件的逻辑思维能力是不现实的。
而工具的使用,尤其是计算机中系统工具的使用,要求掌握较高的计算机领域知识,并非一般用户所希望去承受的,也不应当由他们来承受(操作系统+安全防御工具是现在的常用模式)。
唯一应该承受的团体是操作系统设计者,他们由于操作系统具有的强势地位,而自动具备了设计上的强势地位,关键是设计者在设计中是从用户角度考虑还是单纯的从操作系统自身的技术角度考虑。
从操作系统自身角度看,稳定是最重要的,然后是速度,重点是控制资源,以及被人控制,能被设计者从外部控制,但能控制它的是专业人员。
从一般用户角度,安全、稳定、速度一个都不能缺,无需自己动手控制,要做的是享受安全稳定快速的操作系统,而不是费力的设置操作系统(也没有能力控制),只需关心自己需要完成的那些和自己业务相关的工作(多数是基于软件形式的传业务)。
要改变用户的弱势地位,就应当在设计中更多的从用户角度考虑问题
由此,对于操作系统应添加新的含义
- 提供自动保护的功能
- 构成一个自封闭系统
- 仅对用户负责
从操作协议的角度观察,就是要求操作系统自定义的应用接口以一种封闭结构为基础的系统出口,且是一种自约束接口。
为用户提供了一个便于使用的计算机是不够的,应当加上,为用户提供自动的保护,才算完整。
这种保护,并不是指现有的用户口令保护方式,或者是建立在操作系统之上的外部保护层,而是一个智能化的自动保护机制,因为口令并不是必要的,如手机内操作系统的安全问题并不是口令问题能解决的,而建立在外部的保护软件无法抵挡内部恶性程序的攻击,真正有效的保护应当是在资源分配和处理阶段的保护。
把操作系统设计成一个自封闭的系统并不是说它不再接受外部的应用软件,而是主动识别应用软件的安全性。以及在系统升级时,判断出为其增加的功能代码中是否有陷阱,原因是今后网上升级是一个趋势,作为操作系统有理由怀疑一切外来的将改变它自身的代码
(一种怀疑主义的风格)。
仅对用户负责,是指合法用户对其资源的完全控制权利,这种负责主要是针对个人电脑的用户,而他们多数并非是计算机专家,因此首先得保证操作系统中不应有设计者留下的后门,要达到这个目标,设计必须以公开源码的形式完成,因为在公开的代码中没有人愿意留下把柄让众人检查,然后就是前面的两点,自动保护功能和自封闭形式,来帮助用户完成任务,并能配合有能力的用户控制资源。
此三种新含义将操作系统从原先的被动地位提升至主动位置,把用户作为一种需要保护的资源,这样似乎进一步加深了计算机对用户的控制,实则是进一步解放了用户,使其安心完成自己的工作,而不必象如今那样,备受各种超出他们知识范围的错误所产生的折磨
因此添加新含义后的操作系统定义可称为主动式定义
此时操作系统的层次模型将变化为
显然,它已经不在是一个简单的层次结构了,它的中心是将用户作为一种可管理的资源,加以保护,模型强调的是主动保护形式,而不是传统层次结构中的被动调用方式。
对于操作系统设计来说,要达到这些目标,进行操作系统智能化的分析是一个关键步骤,而智能化是本系列的核心问题。
6、小结
通过对操作系统定义的讨论,分析传统定义中的不足,以及操作系统在整个计算机系统中的地位,使用操作协议的概念来展现操作系统和其他软硬件模块之间的连接关系 ,强调了从用户使用角度分析操作系统的重要性,并引入析操作系统的新含义,展现今后操作系统的发展方向。
操作系统是一个不断发展的概念,希望能通过简单的定义分析,打开一条探索之路。
系统智能化是未来发展中一个很重要的过程,也是本系列讨论的核心--如何智能化操作系统
后续系列的分析步骤是:
从操作系统的发展来说明智能化的必然性
为操作系统智能化进行的模型结构上的探索
智能化的前期准备--参数化
智能化的原型--操作系统的数学模型
分析现有硬件结构的不足,构造整体的智能化结构--"一体化"系统
关于作者
我将自己定位于一个都市的隐居者,现在主要的考察范围是操作系统的理论,极其相关理论(如开发工具设计的理论),在此献上这几年的思考心得,与大家分享,希望能结交各路高手,共同探讨。
武汉GNU/Linux自由软件协会的论坛是我常去的地方(http://www.wuhan.clinux.org),那里有我很多的最原始想法,可以和大家深入讨论各种问题,另外我的邮箱是:[email protected] 。
真心的期待邮箱中总是有新的信件。
|