操作系统 - 2.1 操作系统的功能和发展

操作系统的功能

  直接在计算机硬件上开发应用程序是一件及其困难而且繁杂的事情,但有了操作系统就不一样了。操作系统为应用程序和计算机硬件之间提供了交互的接口,使得用户可以更加方便、有效地使用计算机的资源。操作系统的功能或者说目标主要体现在一下三个方面:

  • 用户/计算机接口
      如下图所示,计算机系统为用户提供的硬件和软件可视为一种层次结构,但仅仅是具有层次结构,而不是完全的层次化,可能完全的层次化是一件很难办到或者降低效率的事情吧。操作系统是最重要的系统程序,对程序员来说,操作系统在很大程度上为程序开发屏蔽了硬件细节,同时提供了方便的接口。总的来说,就是让计算机系统在上层看来更加简单、亲和。
    计算机软硬件结构
    下面简洁的说明一下通常情况下操作系统提供的一些服务:
    • 程序开发:提供各种各样的工具和服务,如编辑器、调试工具之类的;
    • 程序运行:处理复杂的指令调度问题;
    • I/O设备访问:提供统一的I/O接口,程序员可以通过简单的读写操作来访问这些设备;
    • 文件访问控制:实际上没有操作系统也就没有文件的概念;
    • 系统访问:控制、保护、异常处理;
    • 错误检测和响应
    • 记账:类似于大楼的监控系统,收集各种资源的利用率、响应时间等参数,可以用来自身性能的调整等。
      接下来对上图中左侧的三种接口进行说明:
    • ISA(指令系统体系结构):ISA定义了计算机遵循的机器语言指令集,是计算机系统软硬件的分界线。另外,需要注意的是,ISA也为utilities和应用程序提供服务,这些程序使用的ISA子集称为用户级ISA,而操作系统使用的子集称为系统级ISA;
    • ABI(应用程序二进制接口):定义了操作系统的系统调用接口以及通过用户级ISA能够使用的系统硬件资源和服务;
    • API(应用程序编程接口):API让应用程序能够通过用户级ISA和高级语言库调用来访问系统的硬件资源和服务,所有系统调用都是通过库文件来执行的。使用API能够让应用程序更容易通过重编译移植到其他配备相同API的系统上。
  • 资源管理器
      操作系统管理着所谓的“计算机资源”,也就是说它控制着数据的移动、存储和处理,但是它的“控制”有两个特别的地方:
    • 操作系统也是应用程序。与其他应用程序的主要区别只是在于程序的意图;
    • 操作系统会经常释放对处理器的控制权,且依赖处理器才能恢复控制。实际上,处理器要想执行操作系统之外的程序指令都必须停止操作系统的执行。
  • 易扩展性

操作系统的发展

  • 串行处理(Serial Processing)
      用户必须按顺序访问计算机。对于早期计算机,还没有操作系统,程序员都是直接和硬件打交道,用机器码编写程序,然后通过卡片阅读机之类的输入设备载入计算机。这种早期的系统当然有非常多的弊端,其中两个主要的问题就是调度问题和准备时间。当时大多数计算机系统都是用一个硬拷贝的登记表预定机器时间,比如说用户A登记了1个小时,但是却仅使用了40分钟,这样剩下的20分钟计算机就只能限制;另外如果用户遇到了意外的问题,没能在预定的时间内完成工作,他也只能在解决问题之前停止使用计算机。这就是调度问题,导致计算机利用率不高。另外在执行一个程序之前,还必须花费大量的时间来进行准备工作,比如说往内存中加载编译器和源程序。如果每个程序都独自进行准备工作,这样就浪费了很多的时间。
  • 简单批处理系统(Simple Batch Systems)
      用户程序和监控程序交替执行。这种方案的中心思想就是使用监控程序。使用这种系统,用户不直接访问机器,而是将作业交给操作员,由操作员将作业按顺序组织成一批输入,供监控程序使用。每个程序完成处理后返回到监控程序,然后监控程序会自动加载下一个程序。这样,虽然监控程序会增加系统开销,但还是提高了计算机的利用率。
  • 多道程序批处理系统(Multiprogrammed Betch Systems)
      即便使用了由简单批处理操作系统提供的自动作业序列,处理器仍然是经常空闲的。原因在于I/O设备相对于处理器的速度太慢了,比如说一个处理器每秒钟可以处理100条指令,但I/O读一条记录可能就要花上一条指令执行时间的十几倍。如果程序中有很多的I/O操作,那么处理器绝大多数时间可能就只是花在了等待的状态。多道程序设计就是为了解决这种低效率问题。
      假设内存中存有操作系统和两个用户程序,当一个作业需要等待I/O时,处理器可以切换到另一个可能不需要等待I/O的作业上。进一步的,我们将内存保存的程序数扩展到三条、四条甚至更多,然后让他们在管理程序的控制下相互穿插地运行。这就是所谓的多道程序设计。还需要注意的是,这种处理在宏观上是并行,但微观上仍为串行。

并发与并行的区别

并发 并行
单CPU 多CPU
分时;同一时间段 同一时刻
指令级上串行;共用CPU和PC 指令级上并行
宏观上并行;微观上串行 并行
  • 分时系统(Time Sharing Systems)
      使用多道程序设计可以使批处理变得更加有效,但是使得用户既不能了解自己程序的运行情况,也不能控制计算机。对于许多作业来说,需要提供一种可以让用户直接与计算机交互的模式。当今通常使用个人计算机或者工作站来完成交互式计算任务,但在60年代计算机非常庞大且价格昂贵,因此诞生了分时系统,才实现多个用户分享处理器时间。
      在分时系统中,多个用户可以通过终端同时访问系统,由操作系统控制每个用户程序以很短的时间为单位交替执行。
    分时操作系统有以下特点:
    • 并行性(多路调制性):即众多联机用户可以同时使用同一台计算机;
    • 独占性:各终端用户都感觉自己独占了计算机;
    • 交互性:用户和计算机之间可进行“会话”。
  • 实时系统(Real Time Systems)
      实时操作系统能够对外部输入的信息在规定的时间内处理完毕,并作出反应。其最重要的特征是必须满足控制对象的截止期限的要求,若不能满足这一时间约束,一般认为系统失败。其另一个重要的特征是可预测性分析,操作系统各功能模块的实现应该具有有限的、已知的执行时间。
    -> 实时操作系统的特点如下:
    • 实时响应:系统对外部的信号必须能够及时响应(在规定的时间内);
    • 高可靠性和安全性,效率放在第二位;
    • 系统整体性强;
    • 不要求很强的会话能力。
  • 个人操作系统(Personal Operating systems)
  • 分布式操作系统(Distributed Operating Systems)
  • 并行操作系统(Parallel Operating Ststems)

分布式处理和并行处理是为了提高并行处理速度采用的两种不同的体系架构。
并行处理是利用多个功能部件或多个处理机同时工作来提高系统性能或可靠性的计算机系统;
分布式处理则是将不同地点,或具不同功能的,或拥有不同数据的多台计算机通过通信网络连接起来,在控制系统的统一管理控制下,协调地完成大规模信息处理任务的计算机系统。

  • 云计算(Cloud Computing)
  • 泛在系统/物联网(Ubiquitous Systems/Internet of Things)