孟 静 唐志敏
(中国科学院计算技术研究所,北京 100191)
关于计算机操作系统的定义
孟 静 唐志敏
(中国科学院计算技术研究所,北京 100191)
首先探讨术语定义的基本要素,指出概念的定义必须足以判断某个事物属于或不属于该概念所指称的属类。然后针对“操作系统”这个计算机学科基本名词,详细分析了其概念内涵,指出了国内外常见教材中相关定义存在的问题,并提出了揭示概念本质特性的新定义。
名词,定义,操作系统
对任何一个名词概念,应该如何解释、定义、描述它?要解释、定义、描述到何种程度?这首先涉及,什么是定义?笔者早在多年前就提出,A的定义应是能足以用来判断任何一个东西(事物)是A或不是A的判断工具和依据[1-2]。所以(达标的)定义一定要明确、清晰、严格到能够作为上述判断工具的程度,否则就只能算是解释或描述(或者说定义未达标)。也就是说,A的定义一定要能揭示A的唯一性——能把A与非A(这世上所有其他事物)区分开来的唯一性。
对“××是什么”问题的答案,在不同场合和情形下,对于不同提问对象,对答案的要求级别是不同的,有时需要给出最严格的定义,有时只需给出某种程度或角度的解释或描述。而术语工作者,辞典和百科全书编纂者,以及教材和教师等,有责任给出达标的定义——要尽量给出符合以上“定义的定义”要求的最准确的答案,而非泛泛的不明确的解释或描述。例如在操作系统原理等课程中介绍什么是操作系统时,如果学生学完后不能把操作系统与网管软件区分开,那就是定义未达标。再例如在操作系统原理等课程中介绍什么是虚存时,如果学生学完后不能把虚存与交换技术、多道、分区等区别开并理清关系,那就是定义未达标。
下面以操作系统的定义为例进行探讨。
操作系统定义通常出现在辞典、百科全书、教材中,我们以最有代表性的教材为例。
目前国外最著名的操作系统原理教材——《现代操作系统》[3]中,没有对操作系统给出一个专门的定义,而是在“什么是操作系统”中通过“作为扩展机器的操作系统” “作为资源管理者的操作系统”这两小节来详细分述操作系统的两个作用或功能。
另一本比较著名的教材,《操作系统精髓》[4]中,没有专门提出或回答“操作系统是什么”的问题,而是在“操作系统的目标与功能”这一节中,有以下一段总的介绍:“操作系统是控制应用程序执行的程序,并充当应用程序和计算机硬件之间的接口。它有以下三个目标:方便——操作系统使计算机更易于使用;有效——允许以更有效的方式使用计算机系统资源;扩展能力——在构造操作系统时,应该允许在不妨碍服务的前提下有效地开发、测试和引进新的系统功能。”接下来,该教材以三个小节分别讲述这三个目标: “作为用户/计算机接口的操作系统”“作为资源管理器的操作系统”“操作系统的易扩展性”。
国内外其他教材和辞典中“操作系统”的定义大都与以上两个定义类似,限于篇幅,不再一一列举。
笔者认为,以上定义与角度虽然都是操作系统的重要特性,但都不能揭示操作系统的本质特性,因为它们都不足以把操作系统与其他软件区分开来——因为以上定义角度或特性都也可以用于描述很多上层软件。例如“资源管理”观点,计算机系统中很多上层应用软件都具有资源管理功能或特性,都可以看作是对某种或某些资源的管理,如数据库管理软件、网管软件等。所以,从资源管理角度不能把操作系统与其他软件区分开来。即便是说操作系统是“管理硬件资源”的,那网管软件和一些第三方厂商的设备管理工具也是“管理硬件资源”的,又如何区分?同样的理由,以上其他定义角度也都不能作为操作系统的本质特性(只能作为其重要特性)和区分于其他软件的区分判断工具。
笔者认为,只有“硬件相关、应用无关”才是操作系统的本质特性——才是据此和真正足以能把操作系统与其他软件区分开来的唯一判断工具,才能作为操作系统的本质定义。因此,笔者早在1997年就提出了以下关于操作系统的定义:
“操作系统是计算机中最重要和最底层的系统软件,是这样的一组系统程序的集成:这些系统程序在整个计算机系统的运行过程中,在用户对计算机的使用过程中,在用户程序的运行过程中(包括用户程序的装入、启动、运行、结束和退出的完整过程中),负责完成所有硬件相关、应用无关的基本使用工作,为使计算机系统能高效、安全、可靠、方便地运转,而从最底层统一提供所有通用的帮助和统一的管理。”[2](见图1、图2)
下面对上述定义中诸要点进行具体的理解分析和解释说明。
(一)关于定义的由来
操作系统的存在本身是从整个计算机系统的运行目标和用户要求出发安排的,即,是从整个计算机系统的“方便、效率、可靠、安全”的整体目标出发安排的。为实现该整体目标,整个计算机系统有明确的功能分工层次划分(见图1),这种功能分工层次划分(及操作系统在其中的位置)具有如下特点和优点:
1.整个计算机系统的这种分工分层的主要划分原则是,把上层(子集)所共需的功能,从上层分离出来,集中到下层中,使下层的功能是上层(子集)所共需的。这样做的目的是避免功能重复和代码重复导致的重复劳动和重复存储。而根据这种“下层为上层所共需”的特性来类推,最底层的功能就是上层所有各层软件所共需的功能。而在计算机系统的整体功能分工层次中(图1),操作系统的角色分工正是处于软件层次的最底层,即,操作系统的功能是上层所有其他软件所共需的。这正是应用无关的由来之一。
2.在上述分工分层中,操作系统处于所有软件最底层,因此恰好处于硬件与其他软件的分界线上和接口上,操作系统出现和存在的理由和原因之一,就是作为硬件与其他软件之间的分界线和接口,负责完成所有硬件相关的工作,对上层屏蔽了所有硬件相关细节,使上层所有软件都是硬件无关的,从而使上层软件可以不受底层硬件变化的影响,并大大减轻上层软件的编程负担。这正是硬件相关的由来。
图1 整个计算机系统的功能分工分层构成和操作系统在其中的地位
3.分工分层同时也就意味着下层对上层具备了集权和隔离。整个计算机系统拥有众多的用户、用户程序和各种资源(中央处理器、内存、外存、各种输入/输出设备、大量数据和信息资源等),显然,需要从整个计算机系统对所有这些用户、程序、资源进行统一管理,以确保整个计算机系统(及其所有组成成分,所有用户、程序和资源)的可靠、安全、效率和方便。而上述图中的分工分层同时也正是通过这种集权和隔离而为整个计算机系统的统一管理提供了可能性。最底层意味着最集权,因此这种最统一的管理正是由最底层的操作系统承担的。同时,这种统一管理也是应用无关和硬件相关的。尤其是硬件相关的内容,对系统安全与可靠性至关重要。还有,现在这种统一管理通常是强制的(导致前述统一帮助也是强制的)。
4.操作系统具有提供帮助和统一管理的双重角色,这双重角色多少也来自于上述整个计算机系统的功能分工分层中的同样特性:下层对于上层既提供上层所共需的帮助(功能),同时也对于上层起到管理和集权、隔离的权威作用。而最底层则在提供所有上层共需帮助的同时,也对所有上层具有管理权威。这最底层即操作系统。
5.上述的功能分工分层,是整个计算机系统软硬件各层次分工(包括软件与硬件之间的分工,硬件各层次间的分工,软件各层次间的分工)及至整个人类社会分工都在基于同样理由而普遍采用的技术之一。目的都是为了方便、效率、可靠、安全。
6.从操作系统在历史上最初出现至今,操作系统在计算机系统中的层次地位和角色分工、功能作用、本质特性,就一直如上所述。
图2 操作系统的本质功能范围
(二)关于硬件相关和应用无关的具体含义
1.什么是硬件相关和硬件无关
1)什么是硬件相关(hardware-dependent, machine-dependent):
硬件相关在不同场合有不同含义,笔者将之归结为直接(狭义)与间接(广义)两种:
一个程序、软件或一段代码是(狭义的或直接的)硬件相关的,是指这个程序或这段代码中包含对I/O设备硬件物理地址、设备接口寄存器、设备接口缓冲区等的直接读写。计算机系统中的所有软件中通常只有操作系统才是狭义的硬件相关的。
一个程序或软件是(广义的或间接的)硬件相关的,是指这个程序或软件包含或涉及硬件物理地址或设备接口寄存器等硬件物理细节。如DEBUG程序、故障诊断程序、编译程序、网管软件、以及一些第三方厂商的设备管理工具等。
本文分析并设计了基站辅助列车D2D通信建立过程以及列车自组织D2D通信过程,分别考虑在基站和ProSe服务器正常工作的情况下,以及在基站和ProSe服务器故障情况下列车D2D通信。针对列车自组织D2D通信,提出了一种基于ACB机制的资源分配方法,并将该方法与随机竞争的方法进行仿真比较,证明本文提出的方法能有效提高列车识别率,并减少多数列车识别所用的时间。就技术发展现状而言,将D2D通信应用于车车通信的研究还处于初级阶段,还有许多的问题有待解决,许多研究内容和成果还有待改进和深化。
这些广义硬件相关程序与操作系统(即狭义硬件相关程序)最根本的区别是,这些广义的硬件相关程序的代码中不包含对物理地址和设备接口的直接读写。当这些广义的硬件相关程序想获取或控制硬件相关状态时,它们必须间接通过调用操作系统来进行。这些广义硬件相关程序中的硬件相关性通常体现在数据中而非体现在代码中。
2)什么是硬件无关(hardware-independent, machine-independent)
与上述硬件相关的定义相应,硬件无关的定义或解释是:
一个程序、软件或一段代码是(狭义的或直接的)硬件无关的,是指这个程序或这段代码中不包含任何硬件相关的因素。
一个程序或软件或一段代码是(广义的)硬件无关的,是指这个程序或软件不包含对I/O设备硬件物理地址或设备接口寄存器、设备接口缓冲区等的直接读写。即,广义硬件无关由狭义硬件无关加上广义硬件相关而组成。
大多数应用程序是硬件无关的,例如编辑软件等。
(1)什么是应用无关(application-independent)
一个工作、功能或代码是应用无关的,是指不管用计算机来做什么,不管在计算机上运行什么应用程序,都要普遍和频繁涉及的工作,是用户共需的,且工作过程都是相同的,是有共性可循的,却又与应用本身的问题没有直接关系的。
(2)什么是应用相关(application-dependent)
一个工作是应用相关的,是指该工作与具体应用相关,是只有某一类型具体应用才会需要和涉及的,且其工作过程随不同应用而变化。
(三)关于“用户程序运行期间”
上述对于操作系统定义中“用户程序运行期间”的界定和强调,不仅进一步界定和强调了操作系统的这一重要特性,还进一步区分了操作系统与编译系统。其实,对狭义与广义硬件相关的区分,已经足以把编译程序与操作系统区分开来,编译程序是广义硬件相关的,而操作系统是狭义硬件相关的。而这里的区分是:编译程序只用于产生目标代码,而操作系统则是在目标代码运行期间提供帮助。
(四)云操作系统、机群操作系统、网格操作系统、虚拟机操作系统等是否操作系统
云操作系统、并行操作系统、机群(集群)操作系统、分布式操作系统、网格操作系统等,在本质上都是在宿主机操作系统上运行的应用程序,这五种“操作系统”的功能不构成典型完整独立的操作系统,依赖于并与底层的宿主机操作系统相互补充,从而形成一个广义的大的操作系统,管理由多台计算机资源组成的一个合集。
虚拟机的情况比较复杂多样,有些虚拟机在宿主机操作系统下运行,有些虚拟机在裸机上运行,还有些其他更复杂的情况。但无论哪种情况,都可以并应该这样理解:在本文提出的操作系统定义中,操作系统所基于的计算机,可以是一个真实的物理的计算机,也可以是一个虚拟机。但无论基于哪个,本文操作系统定义中的操作系统所有特性和功能都不变,即,基于真实计算机的操作系统与基于虚拟机的操作系统是没有区别的。正因如此,才会有这样一种奇妙现象的普遍出现:同样一个操作系统版本,既可以安装于一个真实计算机上,也可以不加改变而安装于一个虚拟机上。
所以,虚拟机操作系统的功能是完整独立的,是典型和普通的操作系统,与基于真实计算机的操作系统没有任何区别,只不过是基于虚拟机运行。相对于前述云操作系统等五种操作系统要依赖于宿主机操作系统而言,当虚拟机在宿主机操作系统上运行时,基于虚拟机的操作系统是完全独立于和无关于宿主机操作系统的。
就图1展示的计算机系统层次而言,基于裸机的虚拟机相当于在最底层的操作系统之下又加了一层虚拟机。但无论虚拟机是基于裸机还是基于宿主机操作系统,在虚拟机所模拟的计算机中、所向上展示和构成的计算机系统中,在这个虚拟机计算机系统中,图1的层次是不变的,只不过底层计算机硬件换成了虚拟机。
笔者认为,operating system译为操作系统并不合适,“运行系统”似乎更合适一些。原因如下:
operating在英文中不仅有“操作”的含义,还有“运行、运转、运营”等含义;而operating system这个计算机专业英文词组本身在当初命名时(1962年,取代监控程序monitor等),似乎更多地是取其“运行”含义,而非“操作”含义。这是因为,operating system的功能,更多地、更主要是体现在对整个计算机系统的运行控制和每个用户程序的运行控制上,而非重点体现在对用户操作的实现和控制上。虽然操作系统提供了大量用户操作命令和图形界面操作,但操作系统的最主要和本质界面是操作系统内核对外提供的系统调用界面,而系统调用界面是在用户程序运行期间被用户程序调用的,作用于程序运行级,而非用户操作级。
举个极端的例子,一些自动化系统,除了开关机外,需要的用户操作很少,甚至不需要用户再进行除开关机外的任何操作,更甚至,连开关机都不需要用户操作,而是自动检测自动进行开关机的,这样的自动化系统上,当然也有操作系统,显然其对运行控制的功能更明显一些、偏重一些。虽然普通的计算机系统上用户操作的数量没有少到这么极端,但举这个极端例子是想说明,任何操作系统的侧重点都是对系统运行和程序运行的控制和实现,而非对用户操作的控制和实现。
采用操作系统这样并不符合原意的译名,容易导致初学者的误解。但是,操作系统这个译名已经使用了三十多年,已成根深蒂固的习惯,要改为 “运行系统”可能也并非易事。
此外,在笔者多年编写的操作系统原理教材中(文献[1,2,5-7]为其中的一部分),对内存、虚存、文件子系统、链接、缓冲等大量名词,都在定义达标上做了很多努力,并在各章尾通过作者提出的“内存四空间模型”等各章总结模型,对这些定义做了系统化的比较、总结。本文篇幅所限,不一一细述。
笔者学疏识浅,上述定义必定待改进。本文旨在抛砖引玉,若有建议或异议,欢迎共同探讨。
[1] 孟静. OS教学之我思我做[J]. 烟台大学学报,2007(20):12-18.
[2] 孟静. 计算机操作系统教程[M]. 北京:中国人民大学出版社,1997.
[3] Andrew S. Tanenbaum. Modern Operating Systems [M].3rd Edition. New York: Prentice Hall, 2008.
[4] William S. Operating Systems: Internals and Design Principles [M]. 7th Edition. New York: Prentice Hall, 2012.
[5] 孟静. 操作系统教程——原理和实例分析[M]. 北京:高等教育出版社,2006.
[6] 孟静,唐志敏. 操作系统教程[M]. 北京:人民邮电出版社,2009.
[7] 孟静. 作业系统导论[M]. 台北:博硕文化出版公司,2007.
On the Definition of Operating System
MENG Jing TANG Zhimin
This paper discusses the essential aspects of term definition, and points out that the definition of a concept must fulfill the purpose to uniquely identify an object, i.e., it belongs to the class of the concept or it does not belong to the class of the concept. Also, the concept of the basic computer term “operating system” is analyzed in detail. Issues related to the definitions of “operating system” in most computer textbooks are discussed, and a new definition revealing the fundamental characteristics of this concept is given.
term, definition, operating system
2014-06-08
孟静(1964—),女,北京人,硕士,研究方向为操作系统及其教学。通讯作者:唐志敏(1966—),中国科学院计算技术研究所研究员、博士生导师,全国科学技术名词审定委员会计算机科学技术名词审定分委员会副主任,主要从事高性能计算机系统领域的研究、设计和教学。通信方式:tang@ict.ac.cn。
N04;TP3 文献标示码:A
1673-8578(2014)04-0035-05