第1章 操作系统概述
知识要点:包括操作系统的定义、操作系统的形成和发展、操作系统的分类、操作系统的运行环境、操作系统的结构和现代操作系统。要求粗略了解支撑操作系统执行的核心硬件以及操作系统的层次结构。初步理解不同类型操作系统之间的异同。熟悉操作系统的发展概况。
预习准备:回想平时接触和使用的不同类型的操作系统,思考这些操作系统之间的共同特征与区别。
兴趣实践:收集整理所接触和了解的操作系统,在后续学习中比较这些不同类型操作系统各方面的异同。
探索思考:思考书中给出的操作系统定义、分类和结构与自己日常认识的差异,思考不同应用领域对操作系统的不同需求。
1.1 操作系统的定义
一个完整的计算机系统,不论大型机、小型机还是微型机,都是由硬件和软件两大部分组成的。通常硬件是指计算机物理装置本身,也就是指计算机的各种处理器(如中央处理器)、存储器、I/O设备和通信装置等。软件是相对硬件而言的,它是指由计算机硬件执行来完成一定任务的程序、数据及有关文档。操作系统正是计算机系统的一种大型系统软件。
本章将讨论操作系统的定义,分析操作系统的功能与类型,介绍操作系统的形成和发展,并对操作系统运行的硬件环境有选择地进行介绍。本章*后介绍UNIX、Linux以及Windows NT操作系统的特点。
1.1.1 基本概念
计算机软件通常分成两大类,即系统软件和应用软件。系统软件用于计算机的管理、维护、控制和运行以及对运行的程序进行翻译、装入等服务工作。系统软件本身又可分成三部分,即操作系统、语言处理系统和常用的例行服务程序。语言处理系统包括各种语言的编译程序、解释程序和汇编程序。服务程序的种类很多,通常包括库管理程序、连接装配程序、诊断排错程序等。应用软件是指那些为了某一类应用需要而设计的程序或用户为解决某个特定问题而编制的程序或程序系统。
操作系统是计算机系统的一种系统软件,它用于管理计算机的资源和控制程序的执行。一个程序只有在通过操作系统获得必需的资源后才能执行。例如,程序在执行前必须获得主存储器资源才能装入,它的执行要依靠处理机,执行中还可能要用外围设备输入或输出数据,或者使用计算机系统中的文件以及调用子程序等。计算机配置了操作系统后可以提高效率,便于使用。现在,操作系统已成为计算机系统中不可缺少的一种系统软件。
1.1.2 计算机系统的视图
一个计算机系统可以认为是由硬件和软件按层次方式构成的。图1-1表示了一个四层结构,每层表示一组功能和一个接口。接口是用于在该层内实现功能的一组可见的约定,我们把接口的这些特性称为计算机系统的一个视图。
图1-1 计算机系统的分层和视图
由图1-1可见,硬件是软件建立与活动的基础,而软件是对硬件功能的扩展。操作系统是核心的系统软件,与硬件的关系尤为密切,它不仅对硬件资源直接实施控制、管理,而且通过与硬件动作的配合来完成很多功能。所以操作系统的运行必须依靠良好的硬件支撑环境。
硬件层表示机器的可见结构,它包括可执行一组指令的处理机、若干个供程序使用的寄存器和用于访问存储器的寻址模式,还包含通道、控制器、处理机和存储器之间的关系。它是操作系统工作的基础,因此,对操作系统的设计者来说,看见的一个系统视图就是硬件层。
操作系统对硬件层做第一次功能扩充,以便为编译程序的设计者和应用程序员提供有效的服务。它提供接口以便容易地开发系统程序。操作系统是整个计算机系统的控制管理中心,其中包括对其他各种软件的控制和管理,如编辑程序、编译程序、连接装配程序、数据库系统和各种软件工具等。操作系统对它们既具有支配权力,又为其运行建造环境。操作系统提供的接口并不能完全隐藏硬件特性,因此,一个编译程序的设计者需要掌握某些机器特性的知识。编译程序设计者可使用操作系统接口和硬件指令集合的某些部分。类似地,一个使用汇编语言的程序员能利用操作系统和硬件提供的功能合集设计汇编程序。因此,向编译程序设计者展示的一个系统视图除了操作系统层外,还应加上操作系统未被隐藏的硬件层的特性,它们在图1-1中分别用实线箭头与虚线箭头表示。
同样,应用程序员的视图除了语言处理层外,还有未被隐藏的部分操作系统层和硬件层的特性。而用户的视图除了应用层外,还有未被隐藏的部分语言处理层、操作系统层及硬件层的特性。它们在图1-1中也分别用实线箭头和虚线箭头表示。
用户包括几种不同身份的人:一般用户、操作员和管理员等。一般用户是计算机系统环境中的顾客,他们利用计算机来完成各种有用的任务。操作系统对外提供的功能就是它与一般用户之间的接口。操作员是负责启动系统、监督系统状态、对设备(如磁带、打印机)实施操作的人员,他们是系统的*终控制者。管理员负责制定系统调度政策,确立维修、改进方案。
1.1.3 操作系统的基本功能
前面说明了操作系统的基础地位。使用机器需首先装入操作系统,计算机配置操作系统后可以提高效率,便于使用。可以说,操作系统是计算机系统的一个聪明能干的“大管家”。下面从两方面简要介绍操作系统需提供的基本功能。
1. 人机交互界面
通常操作系统需要提供人机交互界面功能为用户提供各种计算服务。用户可直接使用键盘命令、Shell命令语言或图形用户界面(graphical user interface, GUI)与计算机交互,表达计算要求,由操作系统人机交互界面功能模块分析处理并调用系统内部功能模块(系统调用),*终实现用户的计算任务并反馈结果。这两项是操作系统与用户联系的软接口,通常称为“界面”。它和实用层软件一起提供用户开发和运行应用软件的环境与手段。这是操作系统为用户提供的基本公共服务。
事实上,用户若没有操作系统的支持服务,即使是简单的操作,也显得十分吃力。例如,用户想显示存在磁盘上的一个文件FILE.TXT。借助UNIX操作系统做这项操作,只需键入命令:$cat FILE.TXT↙即可实现,十分简便。然而,若无操作系统支持,则用户需使用难记、难认的机器代码编写4个模块以上的程序,如输入程序、读盘和搜索文件程序、装入内存程序和驱动显示程序。这些程序中涉及内存、外设中若干物理特性和状态参数,并且需要字符库和调试软件的支持。对于一般用户,做到这些是很难的。有了操作系统的服务,用户便可驾驭自如了。如今,大部分操作系统都提供了图形用户界面功能,用户操作计算机是一种所见即所得的方式,使用计算机更加方便。应该说,目前微机系统推广应用得如此之广,和它配置了功能强、使用简便的操作系统人机交互界面有着密切的关系。
2. 资源管理
使用计算机,除方便用户以外,还需使它高效率地运转。为此,需要合理地分配使用各种软、硬件资源。例如,使慢速的外设与高速的CPU相匹配的问题;内存空间紧张、如何提高外部存储器效率的问题;众多的文件信息如何组织、存取的问题。
从资源管理的观点来看,操作系统的功能主要包括处理机与进程管理、存储器管理、文件管理、设备管理和网络管理。
(1)处理机与进程管理。处理机与进程管理功能包括调度、进程控制、进程同步与进程通信等。
调度包括作业调度和进程调度。作业调度是考虑充分利用系统资源的要求,将用户的算题按照一定的策略,为它分配资源,调入内存并创建进程,使之有机会获得系统的服务。通常在大中型操作系统中才提供作业管理的功能。一般微机操作系统以及单用户操作系统不考虑作业管理的功能。进程调度就是考虑何时为进程分配处理机并占有多长时间,让它真正占有处理机处理算题。进程控制就是控制进程的运行状态的变化,让进程有序地时走时停。进程同步就是解决进程之间使用资源的竞争和协作问题。进程通信就是使进程之间能够为算题需要传输相关信息。
(2)存储器管理。存储器管理主要管理主存储器资源。存储器管理根据用户程序的要求给它分配主存储器,并将程序的逻辑地址空间转换为物理地址空间,同时还要考虑内存空间的贡献和保护用户存放在主存储器中的程序和数据不被破坏,此外还要考虑如何用有限的内存运行更多和更大的程序,即主存扩充问题。操作系统的这一部分功能与硬件存储器的组织结构密切相关,操作系统的设计者应根据硬件情况和使用需要,采用各种相应的有效调度策略与保护措施。
(3)文件管理。文件管理支持对文件的存储、检索和修改等操作以及对文件保护的功能。早期的管理程序仅提供一个简单的文件系统,而现代的操作系统一般都提供功能复杂的文件系统,多数还提供数据库系统来实现信息的管理工作。
(4)设备管理。设备管理负责管理各类外围设备,包括分配、启动和故障处理等。为了提高效率,还引入了逻辑(虚拟)设备的概念,以实现预输入和缓输出的功能。
(5)网络管理。目前的多数系统都有联网计算要求,因此操作系统还需提供网络资源管理功能,以实现信息的网络传输、网络资源服务和网络安全防护。
1.2 操作系统的形成和发展
第一代计算机运行速度较慢,外围设备较少,因而,编制和运行一个程序也比较简单。那时,程序员往往直接使用机器语言来编制程序,这种“目标程序”被人为地穿在卡片(或纸带)上,并用一个引导程序装入主存储器。程序员通过控制台开关来调试和操作运行程序。在这期间,整个计算机都是被一个程序员占有。因而,不需要专门的操作员,程序员身兼两职——既是操作员,也是程序员。
随着计算机的发展,协助用户使用计算机的软件——原始汇编系统产生了。在这样的系统中,数字操作码被记忆码代替,程序按一个固定格式的汇编语言书写。程序员(或系统程序员)预先编制一个汇编解释程序,它把用汇编语言书写的“源程序”解释成计算机能直接执行的机器语言表达的“目标程序”。因而,在这样的计算机系统中,首先需要把这个汇编解释程序和源程序都穿在卡片或纸带上,然后再装入和执行。如图1-2所示,整个计算分为两个阶段,六个计算步,每步的功能如下:
图1-2 原始汇编和执行过程
(1)通过引导程序把汇编解释程序装入计算机中。
(2)通过汇编解释程序读入源程序,并执行汇编过程。
(3)产生一个目标程序,并输出到卡片或纸带上。
(4)通过引导程序把目标程序装入计算机。
(5)通过目标程序读入卡片数据或纸带数据。
(6)产生计算结果,并输出到卡片或纸带上。
其中(1)~(3)三个计算步是汇编阶段,(4)~(6)三个计算步是执行阶段。
到20世纪60年代,硬件技术取得了两个方面的重大进展:一是通道技术的引进,二是中断技术的发展,再加上存储容量的增长,这就给软件的发展奠定了物质基础。在这期间,先后出现了FORTRAN和ALGOL等程序设计语言与相应的编译程序以及程序库的使用等。同时,出现了对计算机硬件和软件进行管理与调度的软件——管理程序,即初级的操作系统。
管理程序的主要功能是:向用户提供多个共享资源来运行他们的程序;帮助操作员控制用户程序的执行和管理计算机的部分资源。
有了管理程序以后,用户不必亲自上机操作,而是由专业化的操作员代劳。操作员只要通过控制台打字机打入控制命令就可以操纵计算机,操作员打入的命令由管理程序来识别和执行。这样,不仅操作速度快,而且操作员可以方便地进行一些较为复杂的控制。当计算机在运行中发生错误或意外时,管理程序通过计算机从控制台打字机上输出信息向操作员报告。这种输出信息不仅比“亮灯显示”表达的信息更为丰富,操作员也易于理解。总之,用这种半自动方式来控制计算机不仅提高了效率,而且方便使用。
到了第二代计算机后期,特别是进入第三代以后,软件有了很大的发展,它的作用也日益显著。同时,硬件也有了很大的发展,特别是主存储器容量的增加和大容量辅助存储器“磁盘”的出现,给发展更先进的管理程序准备好了物质条件。另外,计算机应用的日益
展开