|
操作系统是一个大型的系统软件。它对整个计算机系统实施控制和管理,为用户提供灵活、方便的接口。操作系统包括处理机管理、存储管理、输入 / 输出管理、文件系统等功能模块。那么,如何将这些模块构成一个完整的操作系统,这就是操作系统的结构问题。操作系统规模庞大,结构复杂,其质量的好坏关系到计算机系统能否可靠而有效地工作。从操作系统的发展过程可以看出,构成操作系统的方法有以下三种:
( 1 )无结构
操作系统是一组过程的集合,每一过程都有一个定义好的接口,包括入口参数和返回值。过程间可以相互调用而不受约束。
( 2 )层次式结构
操作系统由若干层组成,每一层提供一套功能,并且该功能仅仅依赖于该层以内的各层,其最终结构与洋葱头相似。
( 3 )客户 / 服务器模型
操作系统由微内核和核外的服务器进程组成。微内核提供最基本、最必要的服务,而操作系统的其他功能由运行在核外的服务器完成。该模型具有良好的模块化和结构化特征,模块之间和上下层之间的通信由消息的传递来实现。
当前,无结构的操作系统已很少,大多数操作系统采用层次式结构。层次式结构是结构设计的一种设计方法,使用这种方法进行设计时,可以 形成正确、结构清晰的软件系统,从而达到可靠、可适应、可移植的设计目标。在层次式结构下,操作系统的各模块应处于什么位置、各模块之间的关系十分清晰。本章将以分层的观点来讨论操作系统的逻辑结构,使读者对操作系统的功能模块有一个清晰的认识。
在讨论操作系统的逻辑结构之前,首先介绍有关操作系统虚拟机的概念。
2.1.1 操作系统虚拟机
计算机系统为了帮助用户既快又简单地解决各种问题,它应该提供一个良好的工作环境,这一环境是由几个部分有机结合在一起而形成的。
首先,为了执行指令和实施最原始、简单的操作,需要硬件这一物质基础。硬件层是由 CPU 、存储器和外部设备等组成的。它们构成了操作系统本身和用户进程赖以活动的物质基础和环境。
用户提出的使用要求是多方面的,所需要的功能是非常丰富的。用户提出的许多功能,特别那些复杂而又灵活的功能均由软件完成。为了方便用户使用计算机,通常要为计算机配置各种软件去扩充机器的功能。在裸机上配置了操作系统程序后就构成了操作系统虚拟机。操作系统的核心在裸机提供的各种基本硬件,而且还可使用操作系统所增加的许多其他“指令”。这些指令统称为扩充机器的指令系统,又称为操作命令语言。操作系统虚拟机的结构如图 2.1 所示。
图 2.1 操作系统虚拟机
操作系统虚拟机为用户提供了一个协助解决问题的装置。其功能是通过它提供的命令来体现的,用户也是通过这一组命令和操作系统虚拟机打交道的。系统所提供的全部操作命令集合称为操作命令语言,它是用户和系统进行通信的手段和界面。这一用户界面分为两个方面;操作命令(又称命令接口)和系统功能调用(又称程序)接口。
1. 操作命令
操作命令按使用方式的不同可分为以下三种:
( 1 )键盘命令
分时系统或个人计算机系统中的用户使用键盘命令通过控制台或终端设备向系统提出请求,组织自己的程序运行。
( 2 )作业控制语言
批处理系统中的用户使用这种语言编写作业说明书,组织作业的运行或提出对系统资源的申请。
( 3 )图形化用户界面
它以菜单驱动、图符驱动等方式为用户提供一个友好的、直观的、图文并茂视窗操作环境。
2 .系统功能调用
在用户程序中可以直接使用系统功能调用请求操作系统提供的服务。
若把操作系统看作一台为用户定义的虚拟机,那么,操作命令语言就给出了虚拟机所能执行的“指令”集合,也刻画了相应的虚拟机的功能。
2.1.2 操作系统逻辑结构
为了组织扩充机器的部分——操作系统,可采用分层结构方法将它的各种功能分成不同的层次。即使得整个操作系统在结构上类似于一个洋葱头,它由若干层组成,每一层都提供一组功能,这些功能只依赖于该层以内的各层。洋葱头的中心部分机器硬件本身提供的各种功能。洋葱头的各个层次可以看成是一系列连续的虚拟机,而洋葱头作为整体实现了用户要求的虚拟机。
操作系统的这种层次结构如图 2.2 所示。图中,同基本机器硬件紧挨着的是系统核,它是洋葱头的最里一层。系统核具有初级中断处理、外部设备驱动、在进程之间切换处理机以及实施进程控制和通信的功能,其目的是提供一种进程可以存在和活动的环境。系统核以外各层依次是存储管理层、 I/O 处理层、文件存取层、调度(作业调度)和资源分配层。它们具有各种资源管理功能并为用户提供各种服务。在 UNIX 系统中,文件系统和设备管理,还有存储管理也属于系统核心层。也就是说,操作系统的基本功能都属于核心。

图 2.2 分层操作系统结构 |