Download presentation
Presentation is loading. Please wait.
1
第一章 操作系统引论 1.1 操作系统的目标和作用 1.2 操作系统的发展过程 1.3 操作系统的基本特性
2
1.1 操作系统的目标和作用 1.1.1 操作系统的目标 1.1.2 操作系统的作用 1.1.3 推动操作系统发展的主要动力
3
存储程序并自动执行 输出 输 入 外部存储器 软盘 输入设备 输出设备 打印机 程序 原始数据 运算结果 键盘 内存 指令数据线
1 1 1 1 1 1 1 输出 输 入 打印机 程序 原始数据 运算结果 键盘 内存 指令数据线 CPU(由运算器和控制器组成) 控制信号线
4
1.1.1 操作系统的目标 1.有效性 在早期(20世纪50~60年代),由于计算机系统非常昂贵,操作系统最重要的目标无疑是有效性。事实上,那时有效性是推动操作系统发展最主要的动力。正因如此,现在的大多数操作系统书籍,都着重于介绍如何提高计算机系统的资源利用率和系统的吞吐量问题。操作系统的有效性可包含如下两方面的含意:
5
(1) 提高系统资源利用率。在未配置OS的计算机系统中,诸如CPU、I/O设备等各种资源,都会因它们经常处于空闲状态而得不到充分利用;内存及外存中所存放的数据太少或者无序而浪费了大量的存储空间。配置了OS之后,可使CPU和I/O设备由于能保持忙碌状态而得到有效的利用,且可使内存和外存中存放的数据因有序而节省了存储空间。
6
(2) 提高系统的吞吐量。 计算机的吞吐量: 计算机系统的吞吐量是指流入,处理和流出系统的信息的速率。 信息能够多快地输入内存 CPU能够多快地取指令 数据能够多快地从内存取出或存入 所得结果能够多快地从内存送给一台外围设备 这些步骤中的每一步都关系到主存,因此,系统吞吐量主要取决于主存的存取周期。 操作系统还可以通过合理地组织计算机的工作流程,而进一步改善资源的利用率,加速程序的运行,缩短程序的运行周期,从而提高系统的吞吐量。
7
2.方便性 配置OS后可使计算机系统更容易使用。一个未配置OS的计算机系统是极难使用的,因为计算机硬件只能识别0和1这样的机器代码。用户要直接在计算机硬件上运行自己所编写的程序,就必须用机器语言书写程序;用户要想输入数据或打印数据,也都必须自己用机器语言书写相应的输入程序或打印程序。如果我们在计算机硬件上配置了OS,用户便可通过OS所提供的各种命令来使用计算机系统。比如,用编译命令可方便地把用户用高级语言书写的程序翻译成机器代码,大大地方便了用户,从而使计算机变得易学易用。
8
3.可扩充性 随着VLSI技术和计算机技术的迅速发展,计算机硬件和体系结构也随之得到迅速发展,相应地,它们也对OS提出了更高的功能和性能要求。此外,多处理机系统、计算机网络,特别是Internet的发展,又对OS提出了一系列更新的要求。因此,OS必须具有很好的可扩充性,方能适应计算机硬件、体系结构以及应用发展的要求。这就是说,现代OS应采用新的OS结构,如微内核结构和客户服务器模式,以便于方便地增加新的功能和模块,并能修改老的功能和模块。关于新的OS结构将在本章最后一节中介绍。
9
4.开放性 自20世纪80年代以来,由于计算机网络的迅速发展,特别是Internet的应用的日益普及,使计算机操作系统的应用环境已由单机封闭环境转向开放的网络环境。为使来自不同厂家的计算机和设备能通过网络加以集成化,并能正确、有效地协同工作,实现应用的可移植性和互操作性,要求操作系统必须提供统一的开放环境,进而要求OS具有开放性。 开放性是指系统能遵循世界标准规范,特别是遵循开放系统互连(OSI)国际标准。凡遵循国际标准所开发的硬件和软件,均能彼此兼容,可方便地实现互连。开放性已成为20世纪90年代以后计算机技术的一个核心问题,也是一个新推出的系统或软件能否被广泛应用的至关重要的因素。
10
1.1 操作系统的目标和作用 1.1.1 操作系统的目标 1.1.2 操作系统的作用 1.1.3 推动操作系统发展的主要动力
11
1.1.2 操作系统的作用 1.OS作为用户与计算机硬件系统之间的接口 OS作为用户与计算机硬件系统之间接口的含义是:OS处于用户与计算机硬件系统之间,用户通过OS来使用计算机系统。或者说,用户在OS帮助下,能够方便、快捷、安全、可靠地操纵计算机硬件和运行自己的程序。应注意,OS是一个系统软件,因而这种接口是软件接口。图1-1是OS作为接口的示意图。由图可看出,用户可通过以下三种方式使用计算机。
12
图1-1 OS作为接口的示意图
13
(1) 命令方式。这是指由OS提供了一组联机命令接口,以允许用户通过键盘输入有关命令来取得操作系统的服务,并控制用户程序的运行。
(3) 图形、窗口方式。这是当前使用最为方便、最为广泛的接口,它允许用户通过屏幕上的窗口和图标来实现与操作系统的通信,并取得它的服务。
14
2.OS作为计算机系统资源的管理者 在一个计算机系统中,通常都含有各种各样的硬件和软件资源。归纳起来可将资源分为四类: 处理器 存储器 I/O设备 信息(数据和程序)。
15
2.OS作为计算机系统资源的管理者 相应地,OS的主要功能也正是针对这四类资源进行有效的管理,即: 处理机管理,用于分配和控制处理机; 存储器管理,主要负责内存的分配与回收; I/O设备管理,负责I/O设备的分配与操纵; 文件管理,负责文件的存取、共享和保护。 可见,OS的确是计算机系统资源的管理者。事实上,当今世界上广为流行的一个关于OS作用的观点,正是把OS作为计算机系统的资源管理者。
16
3.OS实现了对计算机资源的抽象 对于一个完全无软件的计算机系统(即裸机),它向用户提供的是实际硬件接口(物理接口),用户必须对物理接口的实现细节有充分的了解,并利用机器指令进行编程,因此该物理机器必定是难以使用的。 为了方便用户使用I/O设备,人们在裸机上覆盖上一层I/O设备管理软件,如图1-2所示,由它来实现对I/O设备操作的细节,并向上提供一组I/O操作命令,如Read和Write命令,用户可利用它来进行数据输入或输出,而无需关心I/O是如何实现的。此时用户所看到的机器将是一台比裸机功能更强、使用更方便的机器。这就是说,在裸机上铺设的I/O软件隐藏了对I/O设备操作的具体细节,向上提供了一组抽象的I/O设备。
17
图1-2 I/O软件隐藏了I/O操作实现的细节
18
通常把覆盖了上述软件的机器称为扩充机器或虚机器。它向用户(进程)提供了一个对硬件操作的抽象模型,用户可利用抽象模型提供的接口使用计算机,而无需了解物理接口实现的细节,从而使用户更容易地使用计算机硬件资源。由该层软件实现了对计算机硬件操作的第一个层次的抽象。
19
为了方便用户使用文件系统,人们又在第一层软件上再覆盖上一层用于文件的管理软件,同样由它来实现对文件操作的细节,并向上提供一组对文件进行存取操作的命令,用户可利用这组命令进行文件的存取。此时,用户所看到的是一台功能更强、使用更方便的虚机器。该层软件实现了对硬件资源操作的第二个层次的抽象。而当人们又在文件管理软件上再覆盖一层面向用户的窗口软件后,用户便可在窗口环境下方便地使用计算机,形成一台功能更强的虚机器。
20
由此可知,OS是铺设在计算机硬件上的多层系统软件,它们不仅增强了系统的功能,而且还隐藏了对硬件操作的细节,由它们实现了对计算机硬件操作的多个层次的抽象。值得说明的是,对一个硬件在底层进行抽象后,在高层还可再次对该资源进行抽象,成为更高层的抽象模型。随着抽象层次的提高,抽象接口所提供的功能就越来越强,用户使用起来也更加方便。
21
1.1.1 操作系统的目标 1.1.2 操作系统的作用 1.1.3 推动操作系统发展的主要动力
22
1.1.3 推动操作系统发展的主要动力 1.不断提高计算机资源的利用率 在计算机发展的初期,计算机系统特别昂贵,人们必须千方百计地提高计算机系统中各种资源的利用率,这就是OS最初发展的推动力。由此形成了能自动地对一批作业进行处理的多道批处理系统。 在20世纪60和70年代,又分别出现了能有效提高I/O设备和CPU利用率的SPOOLing系统和改善存储器系统利用率的虚拟存储器技术,以及在网络环境下,在服务器上配置了允许所有网络用户访问的文件系统和数据库系统。
23
2.方便用户 当资源利用率不高的问题得到基本解决后,用户在上机、调试程序时的不方便性便又成为主要矛盾。于是人们又想方设法改善用户上机、调试程序时的环境,这又成为继续推动OS发展的主要因素。随之便形成了允许进行人机交互的分时系统,或称为多用户系统。在20世纪90年代初出现了受到用户广泛欢迎的图形用户界面,极大地方便了用户使用计算机,使中小学生都能很快地学会上机操作,这无疑会更加推动计算机的迅速普及。
24
3.器件的不断更新换代 微电子技术的迅猛发展,推动着计算机器件,特别是微机芯片的不断更新,使得计算机的性能迅速提高,规模急剧扩大,从而推动了OS的功能和性能也迅速增强和提高。例如,当微机芯片由8位发展到16位、32位,进而又发展到64位时,相应的微机OS也就由8位发展到16位和32位,进而又发展到64位,此时相应OS的功能和性能也都有显著的增强和提高。
25
在多处理机快速发展的同时,外部设备也在迅速发展。例如,早期的磁盘系统十分昂贵,只能配置在大型机中。随着磁盘价格的不断降低且小型化,很快在中、小型机以及微型机上也无一例外地配置了磁盘系统,而且其容量还远比早期配置在大型机上的大得多。现在的微机操作系统(如Windows XP)能支持种类非常多的外部设备,除了传统的外设外,还可以支持光盘、移动硬盘、闪存盘、扫描仪等。
26
4.计算机体系结构的不断发展 计算机体系结构的发展,也不断推动着OS的发展并产生新的操作系统类型。例如,当计算机由单处理机系统发展为多处理机系统时,相应地,操作系统也就由单处理机OS发展为多处理机OS。又如,当出现了计算机网络后,配置在计算机网络上的网络操作系统也就应运而生,它不仅能有效地管理好网络中的共享资源,而且还向用户提供了许多网络服务。
27
1.2 操作系统的发展过程 1.2.1 无操作系统的计算机系统 1.2.2 单道批处理系统 1.2.3 多道批处理系统 1.2.4 分时系统
1.2 操作系统的发展过程 1.2.1 无操作系统的计算机系统 1.2.2 单道批处理系统 1.2.3 多道批处理系统 1.2.4 分时系统 1.2.5 实时系统 微机操作系统的发展
28
1.2.1 无操作系统的计算机系统 1.人工操作方式 从第一台计算机诞生(1945年)到20世纪50年代中期的计算机,属于第一代计算机。此时的计算机是利用成千上万个真空管做成的,它的运行速度仅为每秒数千次,但体积却十分庞大,且功耗也非常高。这时还未出现OS。计算机操作是由用户(即程序员)采用人工操作方式直接使用计算机硬件系统,即由程序员将事先已穿孔(对应于程序和数据)的纸带(或卡片)装入纸带输入机(或卡片输入机),再启动它们将程序和数据输入计算机,然后启动计算机运行。当程序运行完毕并取走计算结果之后,才让下一个用户上机。这种人工操作方式有以下两方面的缺点:
29
(1) 用户独占全机。此时,计算机及其全部资源只能由上机用户独占。
(2) CPU等待人工操作。当用户进行装带(卡)、卸带(卡)等人工操作时,CPU及内存等资源是空闲的。 可见,人工操作方式严重降低了计算机资源的利用率,此即所谓的人机矛盾。随着CPU速度的提高和系统规模的扩大,人机矛盾变得日趋严重。此外,随着CPU速度的迅速提高而I/O设备的速度却提高缓慢,这又使CPU与I/O设备之间速度不匹配的矛盾更加突出。为了缓和此矛盾,曾先后出现了通道技术、缓冲技术,但都未能很好地解决上述矛盾,直至后来又引入了脱机输入/输出技术,才获得了较为令人满意的结果。
30
2.脱机输入/输出方式 为了解决人机矛盾及CPU和I/O设备之间速度不匹配的矛盾,20世纪50年代末出现了脱机输入/输出(Off-Line I/O)技术。该技术是事先将装有用户程序和数据的纸带(或卡片)装入纸带输入机(或卡片机),在一台外围机的控制下,把纸带(卡片)上的数据(程序)输入到磁带上。当CPU需要这些程序和数据时,再从磁带上将其高速地调入内存。
31
图1-3 脱机I/O示意图
32
类似地,当CPU需要输出时,可由CPU直接高速地把数据从内存送到磁带上,然后再在另一台外围机的控制下,将磁带上的结果通过相应的输出设备输出。图1-3示出了脱机输入/输出过程。由于程序和数据的输入和输出都是在外围机的控制下完成的,或者说,它们是在脱离主机的情况下进行的,故称为脱机输入/输出方式;反之,在主机的直接控制下进行输入/输出的方式称为联机 。
33
输入/输出(On-Line I/O)方式。这种脱机I/O方式的主要优点如下:
(1) 减少了CPU的空闲时间。装带(卡)、卸带(卡)以及将数据从低速I/O设备送到高速磁带(或盘)上,都是在脱机情况下进行的,并不占用主机时间,从而有效地减少了CPU的空闲时间,缓和了人机矛盾。 (2) 提高了I/O速度。当CPU在运行中需要数据时,是直接从高速的磁带或磁盘上将数据调入内存的,不再是从低速I/O设备上输入,极大地提高了I/O速度,从而缓和了CPU和I/O设备速度不匹配的矛盾,进一步减少了CPU的空闲时间。
34
1.2 操作系统的发展过程 1.2.1 无操作系统的计算机系统 1.2.2 单道批处理系统 1.2.3 多道批处理系统 1.2.4 分时系统
1.2 操作系统的发展过程 1.2.1 无操作系统的计算机系统 1.2.2 单道批处理系统 1.2.3 多道批处理系统 1.2.4 分时系统 1.2.5 实时系统 微机操作系统的发展
35
1.2.2 单道批处理系统 1.单道批处理系统的处理过程 上世纪50年代中期发明了晶体管,人们开始用晶体管替代真空管来制作计算机,从而出现了第二代计算机。它不仅使计算机的体积大大减小,功耗显著降低,同时可靠性也得到大幅度提高,使计算机已具有推广应用的价值,但计算机系统仍非常昂贵。为了能充分地利用它,应尽量让该系统连续运行,以减少空闲时间。为此,通常是把一批作业以脱机方式输入到磁带上,并在系统中配上监督程序(Monitor),在它的控制下使这批作业能一个接一个地连续处理。
36
其自动处理过程是:首先,由监督程序将磁带上的第一个作业装入内存,并把运行控制权交给该作业。当该作业处理完成时,又把控制权交还给监督程序,再由监督程序把磁带(盘)上的第二个作业调入内存。计算机系统就这样自动地一个作业一个作业地进行处理,直至磁带(盘)上的所有作业全部完成,这样便形成了早期的批处理系统。由于系统对作业的处理都是成批地进行的,且在内存中始终只保持一道作业,故称此系统为单道批处理系统(Simple Batch Processing System)。图1-4示出了单道批处理系统的处理流程。
37
图1-4 单道批处理系统的处理流程
38
2.单道批处理系统的特征 单道批处理系统是最早出现的一种OS。严格地说,它只能算作是OS的前身而并非是现在人们所理解的OS。尽管如此,该系统比起人工操作方式的系统已有很大进步。该系统的主要特征如下: (1) 自动性。在顺利情况下,在磁带上的一批作业能自动地逐个地依次运行,而无需人工干预。
39
(2) 顺序性。磁带上的各道作业是顺序地进入内存,各道作业的完成顺序与它们进入内存的顺序,在正常情况下应完全相同,亦即先调入内存的作业先完成。
(3) 单道性。内存中仅有一道程序运行,即监督程序每次从磁带上只调入一道程序进入内存运行,当该程序完成或发生异常情况时,才换入其后继程序进入内存运行。
40
1.2 操作系统的发展过程 1.2.1 无操作系统的计算机系统 1.2.2 单道批处理系统 1.2.3 多道批处理系统 1.2.4 分时系统
1.2 操作系统的发展过程 1.2.1 无操作系统的计算机系统 1.2.2 单道批处理系统 1.2.3 多道批处理系统 1.2.4 分时系统 1.2.5 实时系统 微机操作系统的发展
41
1.2.3 多道批处理系统 1.多道程序设计的基本概念 在单道批处理系统中,内存中仅有一道作业,它无法充分利用系统中的所有资源,致使系统性能较差。为了进一步提高资源的利用率和系统吞吐量,在20世纪60年代中期又引入了多道程序设计技术,由此而形成了多道批处理系统(Multiprogrammed Batch Processing System)。在该系统中,用户所提交的作业都先存放在外存上并排成一个队列,称为“后备队列”;然后,由作业调度程序按一定的算法从后备队列中选择若干个作业调入内存,使它们共享CPU和系统中的各种资源。具体地说,在OS中引入多道程序设计技术可带来以下好处:
42
(1) 提高CPU的利用率。当内存中仅有一道程序时,每逢该程序在运行中发出I/O请求后,CPU空闲,必须在其I/O完成后CPU才继续运行;尤其因I/O设备的低速性,更使CPU的利用率显著降低。图1-5(a)示出了单道程序的运行情况,从图中可以看出:在t2~t3、t6~t7时间间隔内CPU空闲。在引入多道程序设计技术后,由于同时在内存中装有若干道程序,并使它们交替地运行,这样,当正在运行的程序因I/O而暂停执行时,系统可调度另一道程序运行,从而保持了CPU处于忙碌状态。图1-5(b)示出了四道程序时的运行情况。
43
图1-5 单道和多道程序运行情况
44
(2) 可提高内存和I/O设备利用率。为了能运行较大的作业,通常内存都具有较大容量,但由于80%以上的作业都属于中小型,因此在单道程序环境下,也必定造成内存的浪费。类似地,对于系统中所配置的多种类型的I/O设备,在单道程序环境下也不能充分利用。如果允许在内存中装入多道程序,并允许它们并发执行,则无疑会大大提高内存和I/O设备的利用率。 (3) 增加系统吞吐量。在保持CPU、I/O设备不断忙碌的同时,也必然会大幅度地提高系统的吞吐量,从而降低作业加工所需的费用。
45
2.多道批处理系统的优缺点 虽然早在20世纪60年代就已出现了多道批处理系统,但至今它仍是三大基本操作系统类型之一。在大多数大、中、小型机中都配置了它,说明它具有其它类型OS所不具有的优点。多道批处理系统的主要优缺点如下: (1) 资源利用率高。由于在内存中驻留了多道程序,它们共享资源,可保持资源处于忙碌状态,从而使各种资源得以充分利用。
46
(2) 系统吞吐量大。系统吞吐量是指系统在单位时间内所完成的总工作量。能提高系统吞吐量的主要原因可归结为:第一,CPU和其它资源保持“忙碌”状态; 第二,仅当作业完成时或运行不下去时才进行切换,系统开销小。
47
(3) 平均周转时间长。作业的周转时间是指从作业进入系统开始,直至其完成并退出系统为止所经历的时间。在批处理系统中,由于作业要排队,依次进行处理,因而作业的周转时间较长,通常需几个小时,甚至几天。
(4) 无交互能力。用户一旦把作业提交给系统后,直至作业完成,用户都不能与自己的作业进行交互,这对修改和调试程序是极不方便的。
48
3.多道批处理系统需要解决的问题 多道批处理系统是一种有效、但十分复杂的系统。为使系统中的多道程序间能协调地运行,必须解决下述一系列问题。 (1) 处理机管理问题。在多道程序之间,应如何分配被它们共享的处理机,使CPU既能满足各程序运行的需要,又能提高处理机的利用率,以及一旦把处理机分配给某程序后,又应在何时收回等一系列问题,属于处理机管理问题。
49
(2) 内存管理问题。应如何为每道程序分配必要的内存空间,使它们“各得其所”且不致因相互重叠而丢失信息,以及应如何防止因某道程序出现异常情况而破坏其它程序等问题,就是内存管理问题。
(3) I/O设备管理问题。系统中可能具有多种类型的I/O设备供多道程序所共享,应如何分配这些I/O设备,如何做到既方便用户对设备的使用,又能提高设备的利用率,这就是I/O设备管理问题。
50
(4) 文件管理问题。在现代计算机系统中,通常都存放着大量的程序和数据(以文件形式存在),应如何组织这些程序和数据,才能使它们既便于用户使用,又能保证数据的安全性和一致性,这些属于文件管理问题。
(5) 作业管理问题。对于系统中的各种应用程序,其中有的属于计算型,即以计算为主的程序;有的属于I/O型,即以I/O为主的程序;又有些作业既重要又紧迫;而有的作业则要求系统能及时响应,这时应如何组织这些作业,这便是作业管理问题。
51
1.2 操作系统的发展过程 1.2.1 无操作系统的计算机系统 1.2.2 单道批处理系统 1.2.3 多道批处理系统 1.2.4 分时系统
1.2 操作系统的发展过程 1.2.1 无操作系统的计算机系统 1.2.2 单道批处理系统 1.2.3 多道批处理系统 1.2.4 分时系统 1.2.5 实时系统 微机操作系统的发展
52
1.2.4 分时系统 1.分时系统的产生 分时系统(Time Sharing System)与多道批处理系统之间有着截然不同的性能差别,它能很好地将一台计算机提供给多个用户同时使用,提高计算机的利用率。它被经常应用于查询系统中,满足许多查询用户的需要。用户的需求具体表现在以下几个方面: (1) 人-机交互。每当程序员写好一个新程序时,都需要上机进行调试。由于新编程序难免有些错误或不当之处需要修改,因而希望能像早期使用计算机时一样对它进行直接控制,并能以边运行边修改的方式,对程序中的错误进行修改,亦即,希望能进行人-机交互。
53
(2) 共享主机。在20世纪60年代计算机非常昂贵,不可能像现在这样每人独占一台微机,而只能是由多个用户共享一台计算机,但用户在使用机器时应能够像自己独占计算机一样,不仅可以随时与计算机交互,而且应感觉不到其他用户也在使用该计算机。 (3) 便于用户上机。在多道批处理系统中,用户上机前必须把自己的作业邮寄或亲自送到机房。这对于用户尤其是远地用户来说是十分不便的。用户希望能通过自己的终端直接将作业传送到机器上进行处理,并能对自己的作业进行控制。
54
2.分时系统实现中的关键问题 (1) 及时接收。要及时接收用户键入的命令或数据并不困难,为此,只需在系统中配置一个多路卡。例如,当要在主机上连接8个终端时,须配置一个8用户的多路卡。多路卡的作用是使主机能同时接收各用户从终端上输入的数据。此外,还须为每个终端配置一个缓冲区,用来暂存用户键入的命令(或数据)。
55
(2) 及时处理。人机交互的关键,是使用户键入命令后能及时地控制自己作业的运行,或修改自己的作业。为此,各个用户的作业都必须在内存中,且应能频繁地获得处理机而运行;否则,用户键入的命令将无法作用到自己的作业上。前面介绍的批处理系统是无法实现人机交互的。因为通常大多数作业都还驻留在外存上,即使是已调入内存的作业,也经常要经过较长时间的等待后方能运行,因而使用户键入的命令很难及时作用到自己的作业上。
56
由此可见,为实现人机交互,必须彻底地改变原来批处理系统的运行方式。首先,用户作业不能先进入磁盘,然后再调入内存。因为作业在磁盘上不能运行,当然用户也无法与机器交互,因此,作业应直接进入内存。其次,不允许一个作业长期占用处理机,直至它运行结束或出现I/O请求后,方才调度其它作业运行。为此,应该规定每个作业只运行一个很短的时间(例如0.1秒钟,通常把这段时间称为时间片),然后便暂停该作业的运行,并立即调度下一个程序运行。如果在不长的时间(如3秒)内能使所有的用户作业都执行一次 (一个时间片的时间),便可使每个用户都能及时地与自己的作业交互,从而可使用户的请求得到及时响应。
57
3.分时系统的特征 分时系统与多道批处理系统相比,具有非常明显的不同特征,由上所述可以归纳成以下四个特点: (1) 多路性。允许在一台主机上同时联接多台联机终端,系统按分时原则为每个用户服务。宏观上,是多个用户同时工作,共享系统资源;而微观上,则是每个用户作业轮流运行一个时间片。多路性即同时性,它提高了资源利用率,降低了使用费用,从而促进了计算机更广泛的应用。
58
(2) 独立性。每个用户各占一个终端,彼此独立操作,互不干扰。因此,用户所感觉到的,就像是他一人独占主机。
(3) 及时性。用户的请求能在很短的时间内获得响应。此时间间隔是以人们所能接受的等待时间来确定的,通常仅为1~3秒钟。 (4) 交互性。用户可通过终端与系统进行广泛的人机对话。其广泛性表现在:用户可以请求系统提供多方面的服务,如文件编辑、数据处理和资源共享等。
59
1.2 操作系统的发展过程 1.2.1 无操作系统的计算机系统 1.2.2 单道批处理系统 1.2.3 多道批处理系统 1.2.4 分时系统
1.2 操作系统的发展过程 1.2.1 无操作系统的计算机系统 1.2.2 单道批处理系统 1.2.3 多道批处理系统 1.2.4 分时系统 1.2.5 实时系统 微机操作系统的发展
60
1.2.5 实时系统 所谓“实时”,是表示“及时”,而实时系统(Real Time System)是指系统能及时(或即时)响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。 1.应用需求 虽然多道批处理系统和分时系统已能获得较为令人满意的资源利用率和响应时间,从而使计算机的应用范围日益扩大,但它们仍然不能满足以下某些应用领域的需要。
61
(1) 实时控制。当把计算机用于生产过程的控制,以形成以计算机为中心的控制系统时,系统要求能实时采集现场数据,并对所采集的数据进行及时处理,进而自动地控制相应的执行机构,使某些(个)参数(如温度、压力、方位等)能按预定的规律变化,以保证产品的质量和提高产量。类似地,也可将计算机用于对武器的控制,如火炮的自动控制系统、飞机的自动驾驶系统,以及导弹的制导系统等。此外,随着大规模集成电路的发展,已制作出各种类型的芯片,并可将这些芯片嵌入到各种仪器和设备中,用来对设备的工作进行实时控制,这就构成了所谓的智能仪器和设备。在这些设备中也需要配置某种类型的、能进行实时控制的系统。通常把用于进行实时控制的系统称为实时系统。
62
(2) 实时信息处理。通常,人们把用于对信息进行实时处理的系统称为实时信息处理系统。该系统由一台或多台主机通过通信线路连接到成百上千个远程终端上,计算机接收从远程终端上发来的服务请求,根据用户提出的请求对信息进行检索和处理,并在很短的时间内为用户做出正确的响应。典型的实时信息处理系统有早期的飞机或火车的订票系统、情报检索系统等。
63
2.实时任务 1) 按任务执行时是否呈现周期性来划分 (1) 周期性实时任务。外部设备周期性地发出激励信号给计算机,要求它按指定周期循环执行,以便周期性地控制某外部设备。 (2) 非周期性实时任务。外部设备所发出的激励信号并无明显的周期性,但都必须联系着一个截止时间(Deadline)。它又可分为开始截止时间(某任务在某时间以前必须开始执行)和完成截止时间(某任务在某时间以前必须完成)两部分。
64
2) 根据对截止时间的要求来划分 (1) 硬实时任务(Hard real-time Task)。系统必须满足任务对截止时间的要求,否则可能出现难以预测的结果。 (2) 软实时任务(Soft real-time Task)。它也联系着一个截止时间,但并不严格,若偶尔错过了任务的截止时间,对系统产生的影响也不会太大。
65
3.实时系统与分时系统特征的比较 (1) 多路性。实时信息处理系统也按分时原则为多个终端用户服务。实时控制系统的多路性则主要表现在系统周期性地对多路现场信息进行采集,以及对多个对象或多个执行机构进行控制。而分时系统中的多路性则与用户情况有关,时多时少。 (2) 独立性。实时信息处理系统中的每个终端用户在向实时系统提出服务请求时,是彼此独立地操作,互不干扰;而实时控制系统中,对信息的采集和对对象的控制也都是彼此互不干扰。
66
(3) 及时性。实时信息处理系统对实时性的要求与分时系统类似,都是以人所能接受的等待时间来确定的;而实时控制系统的及时性,则是以控制对象所要求的开始截止时间或完成截止时间来确定的,一般为秒级到毫秒级,甚至有的要低于100微秒。 (4) 交互性。实时信息处理系统虽然也具有交互性,但这里人与系统的交互仅限于访问系统中某些特定的专用服务程序。它不像分时系统那样能向终端用户提供数据处理和资源共享等服务。
67
(5) 可靠性。分时系统虽然也要求系统可靠,但相比之下,实时系统则要求系统具有高度的可靠性。因为任何差错都可能带来巨大的经济损失,甚至是无法预料的灾难性后果,所以在实时系统中,往往都采取了多级容错措施来保障系统的安全性及数据的安全性。
68
1.2 操作系统的发展过程 1.2.1 无操作系统的计算机系统 1.2.2 单道批处理系统 1.2.3 多道批处理系统 1.2.4 分时系统
1.2 操作系统的发展过程 1.2.1 无操作系统的计算机系统 1.2.2 单道批处理系统 1.2.3 多道批处理系统 1.2.4 分时系统 1.2.5 实时系统 微机操作系统的发展
69
微机操作系统的发展 1.单用户单任务操作系统 单用户单任务操作系统的含义是,只允许一个用户上机,且只允许用户程序作为一个任务运行。这是最简单的微机操作系统,主要配置在8位和16位微机上。最有代表性的单用户单任务微机操作系统是CP/M和MS-DOS。
70
1) CP/M 1974年第一代通用8位微处理机芯片Intel 8080出现后的第二年,Digital Research公司就开发出带有软盘系统的8位微机操作系统。1977年Digital Research公司对CP/M进行了重写,使其可配置在以Intel 8080、8085、Z80等8位芯片为基础的多种微机上。1979年又推出带有硬盘管理功能的CP/M 2.2版本。由于CP/M具有较好的体系结构,可适应性强,且具有可移植性以及易学易用等优点,使之在8位微机中占据了统治地位。
71
2) MS-DOS 1981年IBM公司首次推出了IBM-PC个人计算机(16位微机),在微机中采用了微软公司开发的MS-DOS(Disk Operating System)操作系统,该操作系统在CP/M的基础上进行了较大的扩充,使其在功能上有很大的增强。1983年IBM 推出PC/AT(配有Intel 80286芯片),相应地,微软又开发出MS-DOS 2.0版本,它不仅能支持硬盘设备,还采用了树形目录结构的文件系统。1987年又宣布了MS-DOS 3.3版本。从MS-DOS 1.0到3.3为止的DOS版本都属于单用户单任务操作系统,内存被限制在640 KB。从1989年到1993年又先后推出了多个MS-DOS版本,它们都可以配置在Intel 80386、80486等32位微机上。从20世纪80年代到90年代初,由于MS-DOS性能优越而受到当时用户的广泛欢迎,成为事实上的16位单用户单任务操作系统标准。
72
2.单用户多任务操作系统 单用户多任务操作系统的含义是,只允许一个用户上机,但允许用户把程序分为若干个任务,使它们并发执行,从而有效地改善了系统的性能。目前在32位微机上配置的操作系统基本上都是单用户多任务操作系统,其中最有代表性的是由微软公司推出的Windows。1985年和1987年微软公司先后推出了Windows 1.0和Windows 2.0版本操作系统,由于当时的硬件平台还只是16位微机,对1.0和2.0版本不能很好的支持。1990年微软公司又发布了Windows 3.0版本,随后又宣布了Windows 3.1版本,它们主要是针对386和486等32位微机开发的,较之以前的操作系统有着重大的改进,引入了友善的图形用户界面,支持多任务和扩展内存的功能,使计算机更好使用,从而成为386和486等微机的主流操作系统。
73
1995年微软公司推出了Windows 95,它较之以前的Windows 3
1995年微软公司推出了Windows 95,它较之以前的Windows 3.1有许多重大改进,采用了全32位的处理技术,并兼容以前的16位应用程序,在该系统中还集成了支持Internet的网络功能。1998年微软公司又推出了Windows 95的改进版Windows 98,它已是最后一个仍然兼容以前的16位应用程序的Windows,其最主要的改进是把微软公司自己开发的Internet浏览器整合到系统中,大大方便了用户上网浏览,另一个特点是增加了对多媒体的支持。2001年微软又发布了32位版本的Windows XP,同时提供了家用和商业工作站两种版本,它是当前使用最广泛的个人操作系统。2001年还发布了64位版本的Windows XP。
74
微机操作系统—Windows系列 Windows 1.0 1996 1985 Windows NT 4.0 1998 1987
2000 Windows ME 1990 2000 1992 Windows 3.1 Windows 2000 Windows NT 3.1 2001 Windows XP 1993 Windows 3.2 Windows 2003 2003 1994 Windows 95 2005 Windows Vista 1995
75
微机操作系统—Windows系列
76
3.多用户多任务操作系统 多用户多任务操作系统的含义是,允许多个用户通过各自的终端使用同一台机器,共享主机系统中的各种资源,而每个用户程序又可进一步分为几个任务,使它们能并发执行,从而可进一步提高资源利用率和系统吞吐量。在大、中和小型机中所配置的大多是多用户多任务操作系统,而在32位微机上也有不少是配置的多用户多任务操作系统,其中最有代表性的是UNIX OS。
77
UNIX OS是美国电报电话公司的Bell实验室在1969~1970年期间开发的,1979年推出来的UNIX V
UNIX OS是美国电报电话公司的Bell实验室在1969~1970年期间开发的,1979年推出来的UNIX V.7已被广泛应用于多种中、小型机上。随着微机性能的提高,人们又将UNIX移植到微机上。在1980年前后,将UNIX第7版本移植到Motorola公司的MC 680xx微机上,后来又将UNIX V7.0版本进行简化后移植到Intel 8080上,把它称为Xenix。现在最有影响的两个能运行在微机上的UNIX操作系统的变型是Solaris OS和Linux OS。
78
微机操作系统—Unix系列 设计目标 支持强大的计算能力与数据存储。 在需要时,用户能够容易地共享他们的数据。
向大的用户团体提供对计算机的同时访问。 支持强大的计算能力与数据存储。 在需要时,用户能够容易地共享他们的数据。 AT&T 贝尔实验室 1983年的Turing奖 Ken Thompson Dennis M. Ritchie
79
(1) Solaris OS:SUN公司于1982 年推出的SUN OS 1
(1) Solaris OS:SUN公司于1982 年推出的SUN OS 1.0是一个运行在Motorola 680x0平台上的UNIX OS。在1988年宣布的SUN OS 4.0把运行平台从早期的Motorola 680x0平台迁移到SPARC平台,并开始支持Intel公司的Intel 80x86;1992年SUN发布了Solaris 2.0。从1998年开始,Sun公司推出64 位操作系统Solaris 2.7和2.8,这几款操作系统在网络特性、互操作性、兼容性以及易于配置和管理方面均有很大的提高。
80
(2) Linux OS:Linux 是UNIX的一个重要变种,最初是由芬兰学生Linus Torvalds针对Intel 80386开发的。1991年在Internet网上发布第一个Linux版本,由于源代码公开,因此有很多人通过Internet与之合作,使Linux的性能迅速提高,其应用范围也日益扩大。相应地,源代码也急剧膨胀,此时它已是具有全面功能的UNIX系统,大量在UNIX上运行的软件(包括1000多种实用工具软件和大量的网络软件)被移植到Linux上,而且可以在主要的微机上运行,如Intel 80x86 Pentium等。
81
微机操作系统—Linux系列 Linux与Unix Linux与UNIX操作系统类似;
不是UNIX操作系统的变种,在开发初期其内核代码是仿效UNIX的; 几乎所有UNIX的工具与外壳都可以运行在Linux上。 1991年开始,1994年Linux1.0 Linus Torvalds
82
1.3 操作系统的基本特性 并发性 共享性 虚拟技术 异步性
83
并发性 1.并行与并发 并行性和并发性(Concurrence)是既相似又有区别的两个概念: 并行性:是指两个或多个事件在同一时刻发生; 并发性:是指两个或多个事件在同一时间间隔内发生。 在多道程序环境下,并发性是指在一段时间内宏观上有多个程序在同时运行,但在单处理机系统中,每一时刻却仅能有一道程序执行,故微观上这些程序只能是分时地交替执行。倘若在计算机系统中有多个处理机,则这些可以并发执行的程序便可被分配到多个处理机上,实现并行执行,即利用每个处理机来处理一个可并发执行的程序,这样,多个程序便可同时执行。
84
2.引入进程 应当指出,通常的程序是静态实体(Passive Entity),在多道程序系统中,它们是不能独立运行的,更不能和其它程序并发执行。在操作系统中引入进程的目的,就是为了使多个程序能并发执行。例如,在一个未引入进程的系统中,在属于同一个应用程序的计算程序和I/O程序之间,两者只能是顺序执行,即只有在计算程序执行告一段落后,才允许I/O程序执行;反之,在程序执行I/O操作时,计算程序也不能执行,这意味着处理机处于空闲状态 。但在引入进程后,若分别为计算程序和I/O程序各建立一个进程,则这两个进程便可并发执行。
85
由于在系统中具备使计算程序和I/O程序同时运行的硬件条件,因而可将系统中的CPU和I/O设备同时开动起来,实现并行工作,从而有效地提高了系统资源的利用率和系统吞吐量,并改善了系统的性能。引入进程的好处远不止于此,事实上可以在内存中存放多个用户程序,分别为它们建立进程后,这些进程可以并发执行,亦即实现前面所说的多道程序运行。这样便能极大地提高系统资源的利用率,增加系统的吞吐量。
86
为使多个程序能并发执行,系统必须分别为每个程序建立进程(Process)。简单说来,进程是指在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令、数据和堆栈等组成的,是一个能独立运行的活动实体。多个进程之间可以并发执行和交换信息。一个进程在运行时需要一定的资源,如CPU、存储空间及I/O设备等。
87
进程管理 #include <stdio.h> main() { int i,j,k; i=4; j=5; k = i+j;
printf("%d",k); } 单道程序技术 多道程序技术
88
进程管理 什么是进程? 进程是一个具有独立功能的程序在一个数据集合上的一次运行活动。 进程管理的具体任务
对进程进行控制和为进程分配CPU,即进行进程调度, 从而协调多道程序之间的关系,使CPU这一资源得到最充分的利用。
89
3.引入线程 通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的OS中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效地提高系统内多个程序间并发执行的程度。因而近年来推出的通用操作系统都引入了线程,以便进一步提高系统的并发性,并把它视作现代操作系统的一个重要标致。
90
进程管理 线程1 主存 线程2 主存 进程 线程3 什么是线程? 线程是进程中的一个实体,是CPU调度和分配的基本单位。
91
1.3 操作系统的基本特性 并发性 共享性 虚拟技术 异步性
92
1.3.2 共享性 1.互斥共享方式 系统中的某些资源,如打印机、磁带机,虽然它们可以提供给多个进程(线程)使用,但为使所打印或记录的结果不致造成混淆,应规定在一段时间内只允许一个进程(线程)访问该资源。为此,系统中应建立一种机制,以保证对这类资源的互斥访问。当一个进程A要访问某资源时,必须先提出请求。如果此时该资源空闲,系统便可将之分配给请求进程A使用。此后若再有其它进程也要访问该资源时(只要A未用完),则必须等待。仅当A进程访问完并释放该资源后,才允许另一进程对该资源进行访问。
93
我们把这种资源共享方式称为互斥式共享,而把在一段时间内只允许一个进程访问的资源称为临界资源或独占资源。计算机系统中的大多数物理设备,以及某些软件中所用的栈、变量和表格,都属于临界资源,它们要求被互斥地共享。为此,在系统中必需配置某种机制来保证诸进程互斥地使用独占资源。
94
2.同时访问方式 系统中还有另一类资源,允许在一段时间内由多个进程“同时”对它们进行访问。这里所谓的“同时”,在单处理机环境下往往是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问。典型的可供多个进程“同时”访问的资源是磁盘设备,一些用重入码编写的文件也可以被“同时”共享,即若干个用户同时访问该文件。 并发和共享是操作系统的两个最基本的特征,它们又是互为存在的条件。一方面,资源共享是以程序(进程)的并发执行为条件的,若系统不允许程序并发执行,自然不存在资源共享问题;另一方面,若系统不能对资源共享实施有效管理,协调好诸进程对共享资源的访问,也必然影响到程序并发执行的程度,甚至根本无法并发执行。
95
1.3 操作系统的基本特性 并发性 共享性 虚拟技术 异步性
96
1.3.3 虚拟技术 1.时分复用技术 时分复用,亦即分时使用方式,它最早用于电信业中。为了提高信道的利用率,人们利用时分复用方式,将一条物理信道虚拟为多条逻辑信道,将每条信道供一对用户通话。在计算机领域中,广泛利用该技术来实现虚拟处理机、虚拟设备等,以提高资源的利用率。
97
1) 虚拟处理机技术 在虚拟处理机技术中,利用多道程序设计技术,为每道程序建立一个进程,让多道程序并发地执行,以此来分时使用一台处理机。此时,虽然系统中只有一台处理机,但它却能同时为多个用户服务,使每个终端用户都认为是有一个处理机在专门为他服务。亦即,利用多道程序设计技术,把一台物理上的处理机虚拟为多台逻辑上的处理机,在每台逻辑处理机上运行一道程序。我们把用户所感觉到的处理机称为虚拟处理器。
98
2) 虚拟设备技术 我们还可以通过虚拟设备技术,将一台物理I/O设备虚拟为多台逻辑上的I/O设备,并允许每个用户占用一台逻辑上的I/O设备,这样便可使原来仅允许在一段时间内由一个用户访问的设备(即临界资源),变为在一段时间内允许多个用户同时访问的共享设备。例如,原来的打印机属于临界资源,而通过虚拟设备技术,可以把它变为多台逻辑上的打印机,供多个用户“同时”打印。
99
2.空分复用技术 早在上世纪初,电信业中就使用频分复用技术来提高信道的利用率。它是将一个频率范围非常宽的信道,划分成多个频率范围较窄的信道,其中的任何一个频带都只供一对用户通话。早期的频分复用只能将一条物理信道划分为十几条到几十条话路,后来又很快发展成上万条话路,每条话路也只供一对用户通话。之后,在计算机中也使用了空分复用技术来提高存储空间的利用率。
100
1) 虚拟磁盘技术 通常在一台机器上只配置一台硬盘。我们可以通过虚拟磁盘技术将一台硬盘虚拟为多台虚拟磁盘,这样使用起来既方便又安全。虚拟磁盘技术也是采用了空分复用方式,即它将硬盘划分为若干个卷,例如1、2、3、4四个卷,再通过安装程序将它们分别安装在C、D、E、F四个逻辑驱动器上,这样,机器上便有了四个虚拟磁盘。当用户要访问D盘中的内容时,系统便会访问卷2中的内容。
101
2) 虚拟存储器技术 在单道程序环境下,处理机会有很多空闲时间,内存也会有很多空闲空间,显然,这会使处理机和内存的效率低下。如果说时分复用技术是利用处理机的空闲时间来运行其它的程序,使处理机的利用率得以提高,那么空分复用则是利用存储器的空闲空间来存放其它的程序,以提高内存的利用率。
102
但是,单纯的空分复用存储器只能提高内存的利用率,并不能实现在逻辑上扩大存储器容量的功能,必须引入虚拟存储技术才能达到此目地。而虚拟存储技术在本质上就是使内存分时复用。它可以使一道程序通过时分复用方式,在远小于它的内存空间中运行。 例如,一个100 MB的应用程序可以运行在20 MB的内存空间。下一节将要介绍的用于实现内存扩充的“请求调入功能”和“置换功能”就是用于每次只把用户程序的一部分调入内存运行,这样便实现了用户程序的各个部分分时进入内存运行的功能。
103
应当着重指出:如果虚拟的实现是通过时分复用的方法来实现的,即对某一物理设备进行分时使用,设N是某物理设备所对应的虚拟的逻辑设备数,则每台虚拟设备的平均速度必然等于或低于物理设备速度的1/N。类似地,如果是利用空分复用方法来实现虚拟,此时一台虚拟设备平均占用的空间必然也等于或低于物理设备所拥有空间的1/N。
104
1.3 操作系统的基本特性 并发性 共享性 虚拟技术 异步性
105
1.3.4 异步性 在多道程序环境下允许多个进程并发执行,但只有进程在获得所需的资源后方能执行。在单处理机环境下,由于系统中只有一台处理机,因而每次只允许一个进程执行,其余进程只能等待。当正在执行的进程提出某种资源要求时,如打印请求,而此时打印机正在为其它某进程打印,由于打印机属于临界资源,因此正在执行的进程必须等待,且放弃处理机,直到打印机空闲,并再次把处理机分配给该进程时,该进程方能继续执行。可见,由于资源等因素的限制,使进程的执行通常都不是“一气呵成”,而是以“停停走走”的方式运行。
106
内存中的每个进程在何时能获得处理机运行,何时又因提出某种资源请求而暂停,以及进程以怎样的速度向前推进,每道程序总共需多少时间才能完成,等等,这些都是不可预知的。由于各用户程序性能的不同,比如,有的侧重于计算而较少需要I/O,而有的程序其计算少而I/O多,这样,很可能是先进入内存的作业后完成,而后进入内存的作业先完成。或者说,进程是以人们不可预知的速度向前推进,此即进程的异步性(Asynchronism)。尽管如此,但只要在操作系统中配置有完善的进程同步机制,且运行环境相同,作业经多次运行都会获得完全相同的结果。因此,异步运行方式是允许的,而且是操作系统的一个重要特征。
107
1.4 操作系统的主要功能 1.4.1 处理机管理功能 1.4.2 存储器管理功能 1.4.3 设备管理功能 1.4.4 文件管理功能
1.4 操作系统的主要功能 1.4.1 处理机管理功能 1.4.2 存储器管理功能 1.4.3 设备管理功能 1.4.4 文件管理功能 1.4.5 操作系统与用户之间的接口
108
1.4.1 处理机管理功能 在传统的多道程序系统中,处理机的分配和运行都是以进程为基本单位,因而对处理机的管理可归结为对进程的管理;在引入了线程的OS中,也包含对线程的管理。处理机管理的主要功能是: 创建和撤消进程(线程); 对诸进程(线程)的运行进行协调; 实现进程(线程)之间的信息交换; 以及按照一定的算法把处理机分配给进程(线程)。
109
在现代OS中,进程控制还应具有为一个进程创建若干个线程的功能和撤消(终止)已完成任务的线程的功能。
1.进程控制 在传统的多道程序环境下,要使作业运行,必须先为它创建一个或几个进程,并为之分配必要的资源。当进程运行结束时,立即撤消该进程,以便能及时回收该进程所占用的各类资源。进程控制的主要功能是: 为作业创建进程; 撤消已结束的进程; 控制进程在运行过程中的状态转换。 在现代OS中,进程控制还应具有为一个进程创建若干个线程的功能和撤消(终止)已完成任务的线程的功能。
110
2.进程同步 前已述及,进程是以异步方式运行的,并以人们不可预知的速度向前推进。为使多个进程能有条不紊地运行,系统中必须设置进程同步机制。进程同步的主要任务是为多个进程(含线程)的运行进行协调。有两种协调方式: (1) 进程互斥方式。这是指诸进程(线程)在对临界资源进行访问时,应采用互斥方式; (2) 进程同步方式。这是指在相互合作去完成共同任务的诸进程(线程)间,由同步机构对它们的执行次序加以协调。
111
3.进程通信 在多道程序环境下,为了加速应用程序的运行,应在系统中建立多个进程,并且再为一个进程建立若干个线程,由这些进程(线程)相互合作去完成一个共同的任务。而在这些进程(线程)之间,又往往需要交换信息。例如,有三个相互合作的进程,它们是输入进程、计算进程和打印进程。输入进程负责将所输入的数据传送给计算进程;计算进程利用输入数据进行计算,并把计算结果传送给打印进程;最后,由打印进程把计算结果打印出来。进程通信的任务就是用来实现在相互合作的进程之间的信息交换。
112
4.调度 在后备队列上等待的每个作业都需经过调度才能执行。在传统的操作系统中,包括作业调度和进程调度两步。 (1) 作业调度。作业调度的基本任务是从后备队列中按照一定的算法,选择出若干个作业,为它们分配运行所需的资源(首先是分配内存)。在将它们调入内存后,便分别为它们建立进程,使它们都成为可能获得处理机的就绪进程,并按照一定的算法将它们插入就绪队列。
113
(2) 进程调度。进程调度的任务是从进程的就绪队列中,按照一定的算法选出一个进程,把处理机分配给它,并为它设置运行现场,使进程投入执行。值得提出的是,在多线程OS中,通常是把线程作为独立运行和分配处理机的基本单位,为此,须把就绪线程排成一个队列,每次调度时,是从就绪线程队列中选出一个线程,把处理机分配给它。
114
1.4 操作系统的主要功能 1.4.1 处理机管理功能 1.4.2 存储器管理功能 1.4.3 设备管理功能 1.4.4 文件管理功能
1.4 操作系统的主要功能 1.4.1 处理机管理功能 1.4.2 存储器管理功能 1.4.3 设备管理功能 1.4.4 文件管理功能 1.4.5 操作系统与用户之间的接口
115
1.4.2 存储器管理功能 1.内存分配 内存分配的主要任务是为每道程序分配内存空间,使它们“各得其所”;提高存储器的利用率,以减少不可用的内存空间;允许正在运行的程序申请附加的内存空间,以适应程序和数据动态增长的需要。
116
OS在实现内存分配时,可采取静态和动态两种方式。在静态分配方式中,每个作业的内存空间是在作业装入时确定的;在作业装入后的整个运行期间,不允许该作业再申请新的内存空间,也不允许作业在内存中“移动”。在动态分配方式中,每个作业所要求的基本内存空间也是在装入时确定的,但允许作业在运行过程中继续申请新的附加内存空间,以适应程序和数据的动态增长,也允许作业在内存中“移动”。
117
为了实现内存分配,在内存分配的机制中应具有这样的结构和功能:
(1) 内存分配数据结构。该结构用于记录内存空间的使用情况,作为内存分配的依据; (2) 内存分配功能。系统按照一定的内存分配算法为用户程序分配内存空间; (3) 内存回收功能。系统对于用户不再需要的内存,通过用户的释放请求去完成系统的回收功能。
118
2.内存保护 内存保护的主要任务是确保每道用户程序都只在自己的内存空间内运行,彼此互不干扰;绝不允许用户程序访问操作系统的程序和数据;也不允许用户程序转移到非共享的其它用户程序中去执行。 为了确保每道程序都只在自己的内存区中运行,必须设置内存保护机制。一种比较简单的内存保护机制是设置两个界限寄存器,分别用于存放正在执行程序的上界和下界。系统须对每条指令所要访问的地址进行检查,如果发生越界,便发出越界中断请求,以停止该程序的执行。如果这种检查完全用软件实现,则每执行一条指令,便须增加若干条指令去进行越界检查,这将显著降低程序的运行速度。因此,越界检查都由硬件实现。当然,对发生越界后的处理,还须与软件配合来完成。
119
3.地址映射 一个应用程序(源程序)经编译后,通常会形成若干个目标程序;这些目标程序再经过链接便形成了可装入程序。这些程序的地址都是从“0”开始的,程序中的其它地址都是相对于起始地址计算的。由这些地址所形成的地址范围称为“地址空间”,其中的地址称为“逻辑地址”或“相对地址”。此外,由内存中的一系列单元所限定的地址范围称为“内存空间”,其中的地址称为“物理地址”。 在多道程序环境下,每道程序不可能都从“0”地址开始装入(内存),这就致使地址空间内的逻辑地址和内存空间中的物理地址不相一致。为使程序能正确运行,存储器管理必须提供地址映射功能,以将地址空间中的逻辑地址转换为内存空间中与之对应的物理地址。该功能应在硬件的支持下完成。
120
4.内存扩充 存储器管理中的内存扩充任务并非是去扩大物理内存的容量,而是借助于虚拟存储技术,从逻辑上去扩充内存容量,使用户所感觉到的内存容量比实际内存容量大得多,以便让更多的用户程序并发运行。这样,既满足了用户的需要,又改善了系统的性能。为此,只需增加少量的硬件。为了能在逻辑上扩充内存,系统必须具有内存扩充机制,用于实现下述各功能: (1) 请求调入功能。允许在装入一部分用户程序和数据的情况下,便能启动该程序运行。在程序运行过程中,若发现要继续运行时所需的程序和数据尚未装入内存,可向OS发出请求,由OS从磁盘中将所需部分调入内存,以便继续运行。
121
(2) 置换功能。若发现在内存中已无足够的空间来装入需要调入的程序和数据时,系统应能将内存中的一部分暂时不用的程序和数据调至盘上,以腾出内存空间,然后再将所需调入的部分装入内存。
122
1.4 操作系统的主要功能 1.4.1 处理机管理功能 1.4.2 存储器管理功能 1.4.3 设备管理功能 1.4.4 文件管理功能
1.4 操作系统的主要功能 1.4.1 处理机管理功能 1.4.2 存储器管理功能 1.4.3 设备管理功能 1.4.4 文件管理功能 1.4.5 操作系统与用户之间的接口
123
1.4.3 设备管理功能 1.缓冲管理 CPU运行的高速性和I/O低速性间的矛盾自计算机诞生时起便已存在了。而随着CPU速度迅速提高,使得此矛盾更为突出,严重降低了CPU的利用率。如果在I/O设备和CPU之间引入缓冲,则可有效地缓和CPU与I/O设备速度不匹配的矛盾,提高CPU的利用率,进而提高系统吞吐量。因此,在现代计算机系统中,都无一例外地在内存中设置了缓冲区,而且还可通过增加缓冲区容量的方法来改善系统的性能。
124
2.设备分配 设备分配的基本任务是根据用户进程的I/O请求、系统的现有资源情况以及按照某种设备的分配策略,为之分配其所需的设备。如果在I/O设备和CPU之间还存在着设备控制器和I/O通道时,还须为分配出去的设备分配相应的控制器和通道。 为了实现设备分配,系统中应设置设备控制表、控制器控制表等数据结构,用于记录设备及控制器的标识符和状态。根据这些表格可以了解指定设备当前是否可用,是否忙碌,以供进行设备分配时参考。在进行设备分配时,应针对不同的设备类型而采用不同的设备分配方式。对于独占设备(临界资源)的分配,还应考虑到该设备被分配出去后系统是否安全。在设备使用完后,应立即由系统回收。
125
3.设备处理 设备处理程序又称为设备驱动程序。其基本任务是用于实现CPU和设备控制器之间的通信,即由CPU向设备控制器发出I/O命令,要求它完成指定的I/O操作;反之,由CPU接收从控制器发来的中断请求,并给予迅速的响应和相应的处理。 处理过程是:设备处理程序首先检查I/O请求的合法性,了解设备状态是否是空闲的,了解有关的传递参数及设置设备的工作方式。然后,便向设备控制器发出I/O命令,启动I/O设备去完成指定的I/O操作。设备驱动程序还应能及时响应由控制器发来的中断请求,并根据该中断请求的类型,调用相应的中断处理程序进行处理。对于设置了通道的计算机系统,设备处理程序还应能根据用户的I/O请求,自动地构成通道程序。
126
1.4 操作系统的主要功能 1.4.1 处理机管理功能 1.4.2 存储器管理功能 1.4.3 设备管理功能 1.4.4 文件管理功能
1.4 操作系统的主要功能 1.4.1 处理机管理功能 1.4.2 存储器管理功能 1.4.3 设备管理功能 1.4.4 文件管理功能 1.4.5 操作系统与用户之间的接口
127
1.4.4 文件管理功能 1.文件存储空间的管理 为了方便用户的使用,对于一些当前需要使用的系统文件和用户文件,都必须放在可随机存取的磁盘上。在多用户环境下,若由用户自己对文件的存储进行管理,不仅非常困难,而且也必然是十分低效的。因而,需要由文件系统对诸多文件及文件的存储空间实施统一的管理。其主要任务是为每个文件分配必要的外存空间,提高外存的利用率,并能有助于提高文件系统的存、取速度。
128
为此,系统应设置相应的数据结构,用于记录文件存储空间的使用情况,以供分配存储空间时参考;系统还应具有对存储空间进行分配和回收的功能。为了提高存储空间的利用率,对存储空间的分配,通常是采用离散分配方式,以减少外存零头,并以盘块为基本分配单位。盘块的大小通常为1~8 KB。
129
2.目录管理 为了使用户能方便地在外存上找到自己所需的文件,通常由系统为每个文件建立一个目录项。目录项包括文件名、文件属性、文件在磁盘上的物理位置等。由若干个目录项又可构成一个目录文件。目录管理的主要任务是为每个文件建立其目录项,并对众多的目录项加以有效的组织,以实现方便的按名存取,即用户只须提供文件名便可对该文件进行存取。其次,目录管理还应能实现文件共享,这样,只须在外存上保留一份该共享文件的副本。此外,还应能提供快速的目录查询手段,以提高对文件的检索速度。
130
3.文件的读/写管理和保护 (1) 文件的读/写管理。该功能是根据用户的请求,从外存中读取数据,或将数据写入外存。在进行文件读(写)时,系统先根据用户给出的文件名去检索文件目录,从中获得文件在外存中的位置。然后,利用文件读(写)指针,对文件进行读(写)。一旦读(写)完成,便修改读(写)指针,为下一次读(写)做好准备。由于读和写操作不会同时进行,故可合用一个读/写指针。
131
(2) 文件保护。为了防止系统中的文件被非法窃取和破坏,在文件系统中必须提供有效的存取控制功能,以实现下述目标:
① 防止未经核准的用户存取文件; ② 防止冒名顶替存取文件; ③ 防止以不正确的方式使用文件。
132
1.4 操作系统的主要功能 1.4.1 处理机管理功能 1.4.2 存储器管理功能 1.4.3 设备管理功能 1.4.4 文件管理功能
1.4 操作系统的主要功能 1.4.1 处理机管理功能 1.4.2 存储器管理功能 1.4.3 设备管理功能 1.4.4 文件管理功能 1.4.5 操作系统与用户之间的接口
133
1.4.5 操作系统与用户之间的接口 为了方便用户使用操作系统,OS又向用户提供了“用户与操作系统的接口”。该接口通常可分为两大类: (1) 用户接口。它是提供给用户使用的接口,用户可通过该接口取得操作系统的服务; (2) 程序接口。它是提供给程序员在编程时使用的接口,是用户程序取得操作系统服务的惟一途径。
134
1.用户接口 为了便于用户直接或间接地控制自己的作业,操作系统向用户提供了命令接口。用户可通过该接口向作业发出命令以控制作业的运行。该接口又进一步分为联机用户接口和脱机用户接口。 (1) 联机用户接口。这是为联机用户提供的,它由一组键盘操作命令及命令解释程序所组成。当用户在终端或控制台上每键入一条命令后,系统便立即转入命令解释程序,对该命令加以解释并执行该命令。在完成指定功能后,控制又返回到终端或控制台上,等待用户键入下一条命令。这样,用户可通过先后键入不同命令的方式,来实现对作业的控制,直至作业完成。
135
(2) 脱机用户接口。该接口是为批处理作业的用户提供的,故也称为批处理用户接口。该接口由一组作业控制语言(JCL)组成。批处理作业的用户不能直接与自己的作业交互作用,只能委托系统代替用户对作业进行控制和干预。这里的作业控制语言(JCL)便是提供给批处理作业用户的、为实现所需功能而委托系统代为控制的一种语言。用户用JCL把需要对作业进行的控制和干预事先写在作业说明书上,然后将作业连同作业说明书一起提供给系统。当系统调度到该作业运行时,又调用命令解释程序,对作业说明书上的命令逐条地解释执行。如果作业在执行过程中出现异常现象,系统也将根据作业说明书上的指示进行干预。这样,作业一直在作业说明书的控制下运行,直至遇到作业结束语句时,系统才停止该作业的运行。
136
(3) 图形用户接口。用户虽然可以通过联机用户接口来取得OS的服务,但这时要求用户能熟记各种命令的名字和格式,并严格按照规定的格式输入命令。这既不方便又花时间,于是,另一种形式的联机用户接口——图形用户接口便应运而生。图形用户接口采用了图形化的操作界面,用非常容易识别的各种图标(Icon)来将系统的各项功能、各种应用程序和文件,直观、逼真地表示出来。用户可用鼠标或通过菜单和对话框来完成对应用程序和文件的操作。此时用户已完全不必像使用命令接口那样去记住命令名及格式,从而把用户从繁琐且单调的操作中解脱出来。
137
2.程序接口 该接口是为用户程序在执行中访问系统资源而设置的,是用户程序取得操作系统服务的惟一途径。它是由一组系统调用组成,每一个系统调用都是一个能完成特定功能的子程序,每当应用程序要求OS提供某种服务(功能)时,便调用具有相应功能的系统调用。早期的系统调用都是用汇编语言提供的,只有在用汇编语言书写的程序中才能直接使用系统调用;但在高级语言以及C语言中,往往提供了与各系统调用一一对应的库函数,这样,应用程序便可通过调用对应的库函数来使用系统调用。但在近几年所推出的操作系统中,如UNIX、OS/2版本中,其系统调用本身已经采用C语言编写,并以函数形式提供,故在用C语言编制的程序中,可直接使用系统调用。
138
1.5 OS结构设计 1.5.1 传统的操作系统结构 1.5.2 客户/服务器模式 1.5.3 面向对象的程序设计
传统的操作系统结构 客户/服务器模式 面向对象的程序设计 1.5.4 微内核OS结构
139
1.5 OS结构设计 1.5.1 传统的操作系统结构 1.无结构操作系统
传统的操作系统结构 1.无结构操作系统 在早期开发操作系统时,设计者只是把注意力放在功能的实现和获得高的效率上,缺乏首尾一致的设计思想。此时的OS是为数众多的一组过程的集合,每个过程可以任意地相互调用其它过程,致使操作系统内部既复杂又混乱。因此,这种OS是无结构的,也有人把它称为整体系统结构。
140
2.模块化结构OS 1) 模块化程序设计技术的基本概念 模块化程序设计技术是20世纪60年代出现的一种结构化程序设计技术。该技术是基于“分解”和“模块化”原则来控制大型软件的复杂度。为使OS具有较清晰的结构,OS不再是由众多的过程直接构成,而是将OS按其功能精心地划分为若干个具有一定独立性和大小的模块;每个模块具有某方面的管理功能,如进程管理模块、存储器管理模块、I/O设备管理模块等,并仔细地规定好各模块间的接口,使各模块之间能通过该接口实现交互。
141
然后,再进一步将各模块细分为若干个具有一定功能的子模块,如把进程管理模块又分为进程控制、进程同步等子模块,同样也要规定好各子模块之间的接口。若子模块较大时,可再进一步将它细分。我们把这种设计方法称为模块―接口法,由此构成的操作系统就是具有模块化结构的操作系统。图1-6示出了由模块、子模块等组成的模块化OS结构。
142
图1-6 模块化结构的操作系统
143
2) 模块的独立性 在模块―接口法设计方法中,关键问题是模块的划分和规定好模块之间的接口。如果我们在划分模块时,将模块划分得太小,虽然可以降低模块本身的复杂性,但会引起模块之间的联系过多,而会造成系统比较混乱;如果将模块划分得过大,又会增加模块内部的复杂性,使内部的联系增加。因此,在划分模块时,应在两者间进行权衡。
144
另外,在划分模块时,必须充分注意模块的独立性问题。因为模块的独立性越高,各模块间的交互就越少,系统的结构也就越清晰。衡量模块的独立性有以下两个标准:
(1) 内聚性,指模块内部各部分间联系的紧密程度。内聚性越高,模块的独立性越强。 (2) 耦合度,指模块间相互联系和相互影响的程度。显然,耦合度越低,模块的独立性越好。
145
3) 模块接口法的优缺点 利用模块―接口法开发的OS,较之无结构OS具有以下明显的优点: (1) 提高OS设计的正确性、可理解性和可维护性; (2) 增强OS的适应性; (3) 加速OS的开发过程。
146
模块化结构设计仍存在下述问题: (1) 在OS设计时,对各模块间的接口规定很难满足在模块完成后对接口的实际需求。 (2) 在OS设计阶段,设计者必须做出一系列的决定(决策),每一个决定必须建立在上一个决定的基础上。但在模块化结构设计中,各模块的设计齐头并进,无法寻找到一个可靠的决定顺序,造成各种决定的“无序性”,这将使程序设计人员很难做到“设计中的每一步决定都是建立在可靠的基础上”,因此模块―接口法又被称为“无序模块法”。
147
3.分层式结构OS 1) 分层式结构的基本概念 为了将模块―接口法中“决定顺序”的无序性变为有序性,引入了有序分层法。分层法的设计任务是,在目标系统An和裸机系统(又称宿主系统)A0之间,铺设若干个层次的软件A1、A2、A3、…、An-1,使An通过An-1、An-2、…、A2、A1层,最终能在A0上运行。在操作系统中,常采用自底向上法来铺设这些中间层。
148
自底向上的分层设计的基本原则是:每一步设计都是建立在可靠的基础上。为此规定,每一层仅能使用其底层所提供的功能和服务,这样可使系统的调试和验证都变得更容易。例如,在调试第一层软件A1时,由于它使用的是一个完全确定的物理机器(宿主系统)所提供的功能,在对A1软件经过精心设计和几乎是穷尽无遗的测试后,可以认为A1是正确的,而且它与其所有的高层软件A2、…、An无关;同样在调试第二层软件A2时,它也只使用了软件A1和物理机器所提供的功能,而与其高层软件A3、…、An无关;如此一层一层地自底向上增添软件层,每一层都实现若干功能,最后总能构成一个能满足需要的OS。在用这种方法构成操作系统时,已将一个操作系统分为若干个层次,每层又由若干个模块组成,各层之间只存在着单向的依赖关系,即高层仅依赖于紧邻它的低层。
149
2) 分层结构的优缺点 分层结构的主要优点有: (1) 易保证系统的正确性。自下而上的设计方式,使所有设计中的决定都是有序的,或者说是建立在较为可靠的基础上的,这样比较容易保证整个系统的正确性。 (2) 易扩充和易维护性。在系统中增加、修改或替换一个层次中的模块或整个层次,只要不改变相应层次间的接口,就不会影响其它层次,这必将使系统维护和扩充变得更加容易。
150
1.5 OS结构设计 1.5.1 传统的操作系统结构 1.5.2 客户/服务器模式 1.5.3 面向对象的程序设计
传统的操作系统结构 客户/服务器模式 面向对象的程序设计 1.5.4 微内核OS结构
151
客户/服务器模式 客户/服务器(Client/Server)模式可简称为C/S模式。 1.客户/服务器模式的组成 客户/服务器系统主要由客户机、服务器和网络系统三个部分组成。 (1) 客户机:通常在一个LAN网络上连接有多台网络工作站(简称客户机),每台客户机都是一个自主计算机,具有一定的处理能力,客户进程在其上运行,平时它处理一些本地业务,也可发送一个消息给服务器,以请求某项服务。
152
(2) 服务器:通常是一台规模较大的机器,在其上驻留有网络文件系统或数据库系统等,它应能为网上所有的用户提供一种或多种服务。平时它一直处于工作状态,被动地等待来自客户机的请求,一旦检查到有客户提出服务请求,便去完成客户的请求,并将结果送回客户。这样,工作站中的用户进程与服务器进程便形成了客户/服务器关系。 (3) 网络系统:用于连接所有客户机和服务器,实现它们之间通信和网络资源共享的系统。
153
2.客户/服务器之间的交互 在采用客户/服务器的系统中,通常是客户机和服务器共同完成对应用(程序)的处理。这时,在客户机和服务器之间就需要进行交互,即必须利用消息机制在这两者之间进行多次通信。一次完整的交互过程可分成以下四步: (1) 客户发送请求消息。当客户机上的用户要请求服务器进行应用处理时,应输入相应的命令和有关参数。由客户机上的发送进程先把这些信息装配成请求消息,然后把它发往服务器;客户机上的接收进程则等待接收从服务器发回来的响应消息。
154
(2) 服务器接收消息。服务器中的接收进程平时处于等待状态,一旦有客户机发来请求,接收进程便被激活,并根据请求信息的内容,将之提供给服务器上的相应软件进行处理。
(3) 服务器回送消息。服务器的软件根据请求进行处理,在完成指定的处理后,把处理结果装配成一个响应消息,由服务器中的发送进程将之发往客户机。 (4) 客户机接收消息。客户机中的接收进程把收到的响应消息转交给客户机软件,再由后者做出适当处理后提交给发送该请求的客户。
155
3.客户/服务器模式的优点 C/S模式之所以能成为当前分布式系统和网络环境下软件的主要工作模式,是由于该模式具有传统集中模式所无法比拟的一系列优点。 (1) 数据的分布处理和存储。由于客户机具有相当强的处理和存储能力,可进行本地处理和数据的分布存储,从而摆脱了由于把一切数据都存放在主机中而造成的既不可靠又容易产生瓶颈现象的困难局面。
156
(2) 便于集中管理。尽管C/S模式具有分布处理功能,但公司(单位)中的有关全局的重要信息、机密资料、重要设备以及网络管理等,仍可采取集中管理方式。这样可较好地保障系统的“可靠”与“安全”。
(4) 易于改编应用软件。在客户/服务器模式中,对于客户机程序的修改和增删,比传统集中模式要容易得多,必要时也允许由客户进行修改。
157
1.5 OS结构设计 1.5.1 传统的操作系统结构 1.5.2 客户/服务器模式 1.5.3 面向对象的程序设计
传统的操作系统结构 客户/服务器模式 面向对象的程序设计 1.5.4 微内核OS结构
158
面向对象的程序设计 1.面向对象技术的基本概念 面向对象技术是20世纪80年代初提出并很快流行起来的。该技术是基于“抽象”和“隐蔽”原则来控制大型软件的复杂度的。 对象:是指在现实世界中具有相同属性、服从相同规则的一系列事物(事物可以是一个物理实体、一个概念或一个软件模块等)的抽象,而把其中的具体事物称为对象的实例。 如果在OS中的各类实体如进程、线程、消息、存储器和文件等,都使用了对象这一概念,相应地,便有了进程对象、线程对象、存储器对象和文件对象等。
159
1) 对象 在面向对象的技术中,是利用被封装的数据结构(变量)和一组对它进行操作的过程(方法),来表示系统中的某个对象的,如图1-7所示。对象中的变量(数据)也称为属性,它可以是单个标量或一张表。面向对象中的方法是用于执行某种功能的过程,它可以改变对象的状态,更新对象中的某些数据值或作用于对象所要访问的外部资源。如果把一个文件作为一个对象(见图1-8),该对象的变量便是文件类型、文件大小、文件的创建者等。对象中的方法包含对文件的操作,如创建文件、打开文件、读文件、写文件、关闭文件等。
160
图1-7 一个对象的示意图
161
2) 对象类 在实践中,有许多对象可能表示的是同一类事物,每个对象具有自己的变量集合,而它们所具有的方法是相同的。如果为每一个相似的对象都定义一组变量和方法,显然是低效的,由此产生了“对象类”的概念,利用“对象类”来定义一组大体相似的对象。一个类同样定义了一组变量和针对该变量的一组方法,用它们来描述一组对象的共同属性和行为。类是在对象上的抽象,对象则是类的实例。对象类中所定义的变量在实例中均有具体的值。
162
例如,我们将文件设计成一个类,类的变量同样是文件类型、文件大小和文件的创建者等。类中的方法是文件的创建、打开、读写、关闭等。图1-8示出了一个文件类,在类的变量中,没有具体数值,一旦被赋予了具体数值就成了文件A对象。对象类的概念非常有用,因为它极大地提高了创建多个相似对象的效率。
163
图1-8 类和对象的关系
164
3) 继承 在面向对象的技术中,可以根据已有类来定义一个新的类,新类被称为子类(B),原来的类被称为父类(A),见图1-9。继承是父类和子类之间共享变量和方法的机制,该机制规定,子类自动继承父类中定义的变量和方法,并允许子类再增加新的内容。继承特性可使定义子类变得更为容易。一个父类可以定义多个子类,它们分别是父类的某种特例,父类描述了这些子类的公共变量和方法。类似地,这些子类又可以定义自己的子类,通过此途经可以生成一个继承的层次。另外,也允许一个子类有两个父类或多个父类,它可以从多个父类获得继承,此时称为“多重继承”。
165
图1-9 类的继承关系
166
2.面向对象技术的优点 在设计操作系统时,将计算机中的实体作为对象来处理,可带来如下好处: (1) 通过“重用”提高产品质量和生产率。 在面向对象技术中可通过“重用”以前项目中经过精心测试的对象,或由其他人编写、测试和维护的对象类,来构建新的系统,这不仅可大大降低开发成本,而且能获得更好的系统质量。
167
(2) 使系统具有更好的易修改性和易扩展性。
通过封装,可隐蔽对象中的变量和方法,因而当改变对象中的变量和方法时,不会影响到其它部分,从而可方便地修改老的对象类。另外,继承是面向对象技术的重要特性,在创建一个新对象类时,通过利用继承特性,可显著地减少开发的时空开销,使系统具有更好的易扩展性和灵活性。
168
(3) 更易于保证系统的“正确性”和“可靠性”。
对象是构成操作系统的基本单元,由于可以独立地对它进行测试,易于保证每个对象的正确性和可靠性,因此也就比较容易保证整个系统的正确性和可靠性。此外,封装对对象类中的信息进行了隐蔽,这样又可有效地防止未经授权者的访问和用户不正确的使用,有助于构建更为安全的系统
169
1.5 OS结构设计 1.5.1 传统的操作系统结构 1.5.2 客户/服务器模式 1.5.3 面向对象的程序设计
传统的操作系统结构 客户/服务器模式 面向对象的程序设计 微内核OS结构
170
1.5.4 微内核OS结构 1.微内核操作系统的基本概念 为了提高操作系统的“正确性”、“灵活性”、“易维护性”和”可扩充性”,在进行现代操作系统结构设计时,即使在单处理机环境下,大多也采用基于客户/服务器模式的微内核结构,将操作系统划分为两大部分:微内核和多个服务器。至于什么是微内核操作系统结构,现在尚无一致公认的定义,但我们可以从下面四个方面,对微内核结构的操作系统进行描述。
171
1) 足够小的内核 在微内核操作系统中,内核是指精心设计的、能实现现代OS最基本的核心功能的部分。微内核并非是一个完整的OS,而只是操作系统中最基本的部分,它通常用于:① 实现与硬件紧密相关的处理;② 实现一些较基本的功能;③ 负责客户和服务器之间的通信。它们只是为构建通用OS提供一个重要基础,这样就可以确保把操作系统内核做得很小。
172
2) 基于客户/服务器模式 由于客户/服务器模式具有非常多的优点,故在单机微内核操作系统中几乎无一例外地都采用客户/服务器模式,将操作系统中最基本的部分放入内核中,而把操作系统的绝大部分功能都放在微内核外面的一组服务器(进程)中实现。例如用于提供对进程(线程)进行管理的进程(线程)服务器,提供虚拟存储器管理功能的虚拟存储器服务器,提供I/O设备管理的I/O设备管理服务器等,它们都是被作为进程来实现的,运行在用户态,客户与服务器之间是借助微内核提供的消息传递机制来实现信息交互的。图1-10示出了在单机环境下的客户/服务器模式。
173
图1-10 在单机环境下的客户/服务器模式
174
3) 应用“机制与策略分离”原理 在现代操作系统的结构设计中,经常利用“机制与策略分离”的原理来构造OS结构。所谓机制,是指实现某一功能的具体执行机构。而策略,则是在机制的基础上,借助于某些参数和算法来实现该功能的优化,或达到不同的功能目标。通常,机制处于一个系统的基层,而策略则处于系统的高层。在传统的OS中,将机制放在OS的内核的较低层,把策略放在内核的较高层次中。而在微内核操作系统中,通常将机制放在OS的微内核中。正因为如此,才有可能将内核做得很小。
175
4) 采用面向对象技术 操作系统是一个极其复杂的大型软件系统,我们不仅可以通过结构设计来分解操作系统的复杂度,还可以基于面向对象技术中的“抽象”和“隐蔽”原则控制系统的复杂性,再进一步利用“对象”、“封装”和“继承”等概念来确保操作系统的“正确性”、“可靠性”、“易修改性”、“易扩展性”等,并提高操作系统的设计速度。正因为面向对象技术能带来如此多的好处,故面向对象技术被广泛应用于现代操作系统的设计中。
176
2.微内核的基本功能 1) 进程(线程)管理 大多数的微内核OS,对于进程管理功能的实现,都采用“机制与策略分离”的原理。例如,为实现进程(线程)调度功能,须在进程管理中设置一个或多个进程(线程)优先级队列;能将指定优先级进程(线程)从所在队列中取出,并将其投入执行。由于这一部分属于调度功能的机制部分,应将它放入微内核中。应如何确定每类用户(进程)的优先级,以及应如何修改它们的优先级等,都属于策略问题,可将它们放入微内核外的进程(线程)管理服务器中。
177
2) 低级存储器管理 通常在微内核中,只配置最基本的低级存储器管理机制。如用于实现将用户空间的逻辑地址变换为内存空间的物理地址的页表机制和地址变换机制,这一部分是依赖于机器的,因此放入微内核。而实现虚拟存储器管理的策略,则包含应采取何种页面置换算法,采用何种内存分配与回收策略等,应将这部分放在微内核外的存储器管理服务器中去实现。
178
3) 中断和陷入处理 大多数微内核操作系统都是将与硬件紧密相关的一小部分放入微内核中处理。此时微内核的主要功能,是捕获所发生的中断和陷入事件,并进行相应的前期处理。如进行中断现场保护,识别中断和陷入的类型,然后将有关事件的信息转换成消息后,把它发送给相关的服务器。由服务器根据中断或陷入的类型,调用相应的处理程序来进行后期处理。 在微内核OS中是将进程管理、存储器管理以及I/O管理这些功能一分为二,属于机制的很小一部分放入微内核中,另外绝大部分放在微内核外的各种服务器中来实现。事实上,其中大多数服务器都比微内核大。这进一步说明了为什么能在采用客户/服务器模式后,还能把微内核做得很小的原因。
179
3.微内核操作系统的优点 1) 提高了系统的可扩展性 由于微内核OS的许多功能是由相对独立的服务器软件来实现的,当开发了新的硬件和软件时,微内核OS只须在相应的服务器中增加新的功能,或再增加一个专门的服务器。与此同时,也必然改善系统的灵活性,不仅可在操作系统中增加新的功能,还可修改原有功能,以及删除已过时的功能,以形成一个更为精干有效的操作系统。
180
2) 增强了系统的可靠性 这一方面是由于微内核是出于精心设计和严格测试的,容易保证其正确性;另一方面是它提供了规范而精简的应用程序接口(API),为微内核外部的程序编制高质量的代码创造了条件。此外,由于所有服务器都是运行在用户态,服务器与服务器之间采用的是消息传递通信机制,因此,当某个服务器出现错误时,不会影响内核,也不会影响其它服务器。
181
3) 可移植性 随着硬件的快速发展,出现了各种各样的硬件平台,作为一个好的操作系统,必须具备可移植性,使其能较容易地运行在不同的计算机硬件平台上。在微内核结构的操作系统中,所有与特定CPU和I/O设备硬件有关的代码,均放在内核和内核下面的硬件隐藏层中,而操作系统其它绝大部分(即各种服务器)均与硬件平台无关,因而,把操作系统移植到另一个计算机硬件平台上所需作的修改是比较小的。
182
4) 提供了对分布式系统的支持 由于在微内核OS中,客户和服务器之间以及服务器和服务器之间的通信,是采用消息传递通信机制进行的,致使微内核OS能很好地支持分布式系统和网络系统。事实上,只要在分布式系统中赋予所有进程和服务器惟一的标识符,在微内核中再配置一张系统映射表(即进程和服务器的标识符与它们所驻留的机器之间的对应表),在进行客户与服务器通信时,只需在所发送的消息中标上发送进程和接收进程的标识符,微内核便可利用系统映射表,将消息发往目标,而无论目标是驻留在哪台机器上。
183
5) 融入了面向对象技术 在设计微内核OS时,采用了面向对象的技术,其中的“封装”,“继承”,“对象类”和“多态性”,以及在对象之间采用消息传递机制等,都十分有利于提高系统的“正确性”、“可靠性”、“易修改性”、“易扩展性”等,而且还能显著地减少开发系统所付出的开销。
184
4.微内核操作系统存在的问题 应当指出,在微内核OS中,由于采用了非常小的内核,以及客户/服务器模式和消息传递机制,这些虽给微内核OS带来了许多优点,但由此也使微内核OS存在着潜在的缺点。其中最主要的是,较之早期OS,微内核OS的运行效率有所降低。
185
效率降低的最主要的原因是,在完成一次客户对OS提出的服务请求时,需要利用消息实现多次交互和进行用户/内核模式及上下文的多次切换。然而,在早期的OS中,用户进程在请求取得OS服务时,一般只需进行两次上下文的切换:一次是在执行系统调用后,由用户态转向系统态时;另一次是在系统完成用户请求的服务后,由系统态返回用户态时。在微内核OS中,由于客户和服务器及服务器和服务器之间的通信,都需通过微内核,致使同样的服务请求至少需要进行四次上下文切换。第一次是发生在客户发送请求消息给内核,以请求取得某服务器特定的服务时;第二次是发生在由内核把客户的请求消息发往服务器时;第三次是当服务器完成客户请求后,把响应消息发送到内核时;第四次是在内核将响应消息发送给客户时。
186
实际情况是往往还会引起更多的上下文切换。例如,当某个服务器自身尚无能力完成客户请求,而需要其它服务器的帮助时,如图1-11中所示,其中的文件服务器还需要磁盘服务器的帮助,这时就需要进行八次上下文的切换。
187
图1-11 在传统OS和微内核OS中的上下文切换
Similar presentations