第一章 导言

现代操作系统的要求——抽象和共享

1.1 计算机与软件

    计算机系统由硬件和软件组成,它们合在一起形成了解决一些特定问题的工具。根据应用目的的不同,软件是有区别的。应用软件是设计用于解决一个专门问题的。任何计算机的价值可以通过应用软件的价值来评定。

    系统软件提供一个一般的编程环境,从而程序员可以生成特定的应用程序以适应他们的客户的需要。编程环境由程序设计工具(如编辑器和编译器)和抽象(如文件和对象)组成。应用程序员使用系统软件,包括了操作系统,来为终端用户提供一系列的应用。从应用程序员的视角来看,系统软件非常重要,因为它界定了程序的实现环境。系统软件和硬件为应用软件的编写和有效使用提供了支持。系统软件应该为应用程序员提供尽可能多的功能。但尽可能为终端用户提供通用的功能。通用的功能也是最有效的。为了使机器资源(如处理器时间和内存)更多地花费在应用程序上,系统软件对机器资源的使用应该尽可能最少

    一般系统软件设计的最初动机,主要是提供一些程序员可以使用的功能以备应用软件调用,后来,系统软件(特别是操作系统)实现了另一个重要目的:使应用软件能够以有序的方式去共享硬件。共享提高了系统整体的性能,它让不同的程序同时去使用计算机的不同部件,通过减少所有程序执行的时间,从而提高了系统整体的性能。一般说来,操作系统是系统软件的一部分,操作系统保证共享的实现最安全和有效,它是“最贴近硬件”的软件实现,其他的系统软件和所有的应用软件把操作系统作为使用硬件的一个界面。操作系统程序员编写控制硬件的软件(实现共享和抽象),给应用程序员提供一个可以使用的软件环境。

1.1.1 通常的系统软件

    应用编程接口(API)。编译器将程序翻译成适合运行的形式,装载器将程序复制到内存执行,类库用来完成一些功能,如格式化输入及输出或创建对象。例如在C和C++程序设计环境中,一些重要的工具是在C运行时库系统软件中实现的。包括:

(1)标准输入/输出(I/O)库提供过程实现数据流的缓冲输入/输出,如printf()和scanf()。

(2)数学库提供计算功能的函数,如sqrt()。

(3)图形库提供如drawcircle()之类以位图显示方式渲染图像的函数。

其他的系统软件实现了系统的逻辑组件。类库为应用程序员提供了大量的函数,能被应用程序调用,这些组件是计算环境必不可少的部分。下面是这些组件的例子:

(1)命令行解释程序(也称作外壳程序)是一个基于文本的程序,用户可以利用它来与系统软件进行交互。

(2)窗口系统也是系统软件,它为应用程序提供了虚拟终端。

(3)数据库管理系统(DBMS)可以将信息保存在计算机的永久性存储设备中。

操作系统是如何区别于其他的系统软件的:

(1)操作系统直接作用于硬件之上,它为其他系统软件和应用软件提供接口。

(2)通用的操作系统是与应用领域无关的。这意味着操作系统可支持很多应用领域软件,如库存管理软件等。

(3)应用程序使用操作系统所提供的资源抽象,从而使用硬件资源部件。

(4)操作系统允许不同的应用程序通过它所提供的资源管理策略来共享硬件资源。

1.1.2 资源抽象

    抽象在简化了应用程序员控制硬件的方式的同时,也限制了操纵特定硬件的灵活性。通用性是有代价的,也就是说,当一些操作变得容易实现时,其他的一些操作就无法使用这种抽象来完成。仔细考虑一个自动的银行出纳机,允许客户按一个按钮,就可以从他的账户里取出特定数量的钱,假定出纳机仅提供了几种抽象操作,可以从账户上提取20美元、40美元、100或200美元。这样用户就不能提取到30美元,机器操作起来很容易,但不灵活。

    计算机系统中有很多不同种类的硬件部件,被作为资源可以在应用程序中使用。任何一种特定的资源,例如一个磁盘驱动器,都有一个通用的接口,其中定义了程序员如何使用该资源来完成需要的操作。一个抽象的接口比实际的硬件接口简单得多,就像前面例子中的虚拟终端一样,抽象是在系统软件中实现的,使用抽象编程可以使程序员在使用一种资源时,无需了解它的物理接口实现,而只关心它的抽象接口就可以了(抽象屏蔽了设备的具体操作),从而程序员可以集中精力于高层次的一些问题上。

    很多情况下,类似的资源可以被抽象成一个通用抽象资源接口。例如系统软件可以将软磁盘和硬磁盘操作抽象成一个抽象的磁盘接口,当程序员编程时,只需要知道使用磁盘抽象就可以了,而无需关心所用磁盘的动作行为,以及磁盘输入/输出的具体细节。

1.1.3 资源共享

    在操作系统的研究中,我们模糊了真正的同时执行和看起来是同时执行这两种情况的区别。当看起来两个或多个程序能同时执行,或者真正地在同时执行,这两种情况都称为系统支持并发执行(concurrent execution)。如果两个程序是真正的同时执行,我们就称它为并行执行(parallel execution)。

    并发和并行执行与资源共享的概念都相关,不管程序是并发还是并行执行,它们都共享计算机资源。操作系统在抽象机器间通过透明共享的方式来管理资源。也就是说,用户和应用程序员并没有意识到资源被共享。操作系统也提供了一些机制使得运行的程序可以显式共享资源,这需要应用程序员来管理共享机器资源的方式。

1.1.4 虚拟机和透明资源共享

    操作系统必须管理计算机的处理器、内存、设备以及所有其他的抽象资源,使得它们能在执行的程序间共享,并将机器的抽象(也称虚拟机)呈现给程序员。每一个虚拟机是真正计算机的仿真:每个程序都在自己的抽象机器上运行。操作系统通过共享硬件的方式来实现这层抽象,这些硬件对程序员来说是不可见的。在一台虚拟机上运行的程序也称为进程。

    有两种共享的方法用于创建虚拟机:空分复用共享和时分复用共享

    空分复用共享(space-multiplexed sharing)表示资源可以进一步分割成两个或多个不同的单元部分来给进程使用。在计算机中,虚拟机(进程)能够空分复用那些满足如下属性的资源,即能够将资源的不同单元同时分配给不同进程,内存和磁盘是空分复用资源共享的例子。

    时分复用共享(time-multiplexed sharing)并不是把资源进一步分割成小的单元;相反,一个进程可以在一个短的时间片内独立使用整个资源,其他进程则可以在另外的时候使用这个资源。在计算机系统中,在一段时间内,进程对整个计算机资源有独占的控制权,当时间片一用完,资源就被释放掉并可以分配给另一个进程。如计算机的处理器资源就采用了时分复用技术。

    不同的进程能并发使用系统提供的虚拟机,操作系统使用时分复用或空分复用技术确保了物理机器组件的共享。例如,三个进程的虚拟机以时分复用的技术共享处理器,然而,一个进程的虚拟机可能在读磁盘,另一个进程的虚拟机正在读另一个磁盘,这三个进程利用空分复用的技术使用硬件的不同部分。

    处理器的时分复用共享是虚拟机实现的一个关键的方面,它常常是作为资源共享的一个特例来研究的。虚拟机上的一个进程在一个时间片内使用物理处理器,然后操作系统利用时分复用技术,将处理器分配给另一个虚拟机。同时,计算机的内存通过空分复用的方式来进行共享。这些技术对共享处理器来说是非常重要的,它被称为多道程序设计( multiprogramming),多道程序设计不能提升任何单个进程的性能,但是能提高整个系统的性能。

    进程执行的特征:

(1)在现代的计算机系统中,输入/输出操作比处理器操作要花费更多的时间。

(2)进程Pi在做输入/输出时并不需要处理器(如用户输入信息、调试程序等)。

(3)每个进程花费在输入/输出设备上的时间最多。

(4)在每一个传统的计算机系统中,有多个设备,但只有一个处理器。

1.1.5 显式资源共享

    显式资源共享机制使得进程可以通过它们自己的协调策略来使用普通资源(与操作系统的协调策略相反)。显式资源共享有两个重要的方面,并不依赖它是时分还是空分复用:

(1)系统必须根据某种分配策略隔离资源访问。

(2)系统必须在有资源请求时,能允许进程相互合作共享资源。

    资源隔离(resource   isolation)是操作系统的责任,当资源分配给一个虚拟机使用时,操作系统要阻止其他虚拟机的未授权访问。例如,存储器隔离机制允许两个进程同时加载到存储器的两个不同的部分,但是任何虚拟机都不能访问其他虚拟机使用的内存块;处理器隔离机制强制虚拟机顺序地共享处理器。任何一个进程都不能改变或访问另一个进程正在使用的内存内容。

    为了大多数虚拟机的正确操作,资源隔离是必须的。单操作系统也必须在有多个请求时,明确地使两个或多个执行的虚拟机能共享资源访问。授权的共享是必要的,例如,一个进程想共享另一个进程计算出来的结果;两个进程需要共享同一内存块。

    操作系统负责硬件资源的正确共享和隔离。可以使用操作系统接口(也称系统调用接口)来操纵操作系统抽象。其他的系统软件也可以实现自己的抽象资源和共享机制(如数据库和窗口系统)。这些系统软件并不作为可靠软件实现;它的正确性依赖于操作系统的可靠操作。

    在应用软件、系统软件和操作系统间有一个层次结构。操作系统使用软件-硬件接口提供的功能来实现操作系统接口。系统软件使用操作系统接口来导出API。应用程序使用API来实现人机交互界面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值