6.1. 概述

6.1.1. 什么是操作系统

通常把操作系统定义为用以控制和管理计算机系统资源,方便用户使用的程序和数据结构的集合。

在所有的系统软件中,操作系统是一种首要的、最基本、最重要的系统程序,也是最庞大、最复杂的系统软件。

从系统的视角看计算机是系统的控制中心,是系统的大脑。CPU是计算机硬件的核心,是计算机系统的心脏;操作系统则是计算机软件的核心,是计算机系统的大脑,从而操作系统是整个系统的控制中心,是计算机或智能控制管理系统中首要的、最重要的、最复杂的系统软件。

操作系统的作用类似于城市交通的决策、指挥、控制和调度中心,它组织和管理整个计算机系统的硬件和软件资源,在用户和程序之间分配系统资源,使之协调一致地、高效地完成各种复杂的任务。

从用户的视角看,用户几乎不可能使用裸机。如果在裸机之上覆盖一层I/O设备管理软件,就能使用户较方便地使用外部设备;如果在其上再覆盖一层文件管理软件,用户就很容易存取系统文件和用户文件;每覆盖一层新的软件,就构造了一台功能更强的虚拟机器。通过OS,计算机能提供种类更多,质量更高的服务。

从软件的观点看,操作系统是直接与硬件相邻的第一层软件,它是由大量极其复杂的系统程序和众多的数据结构集成的。在计算机中的所有软件中,它起到了核心和控制的作用,其他软件的运行都要依赖它的支持。操作系统是在系统中永久运行的超级程序。

6.1.1.1. 特征

  • 并发(Concurrence)
    • 在某一时间间隔内计算机系统内存在着多个程序活动(与并行的区别)。

  • 共享(Sharing)
    • 多个用户或程序共享系统的硬、软件资源。

    • 互斥共享和同时共享

  • 虚拟
    • 在原先的物理机器上覆盖了一至多层系统软件,将其改造成一台功能更强大而且易于使用的扩展机或虚拟机

    • 提供了高级的抽象服务。

  • 不确定性
    • 使用同样一个数据集的同一个程序在同样的计算机环境下运行,每次执行的顺序和所需的时间都不相同。

6.1.1.2. 主要功能

  • 处理机管理
    • 进程调度、进程控制、进程同步与互斥、进程通信、死锁的检测与处理

  • 存储管理
    • 对要运行的作业分配内存空间

    • 作业运行结束时收回其所占用的内存空间

    • 保护每个作业的内存空间和系统内存空间

  • 设备管理
    • 设备的分配和回收,设备的控制和信息传输即设备驱动

    • 缓冲管理

    • 虚设备管理

  • 文件管理
    • 文件存储空间的分配和回收等

  • 用户接口

6.1.2. 内核分类

6.1.2.1. 宏内核

宏内核,又称单核心,是操作系统核心架构的一种,此架构的特性是整个核心程序都是以核心空间(KernelSpace)的身份及监管者模式(Supervisor Mode)来运行。

传统UNIX、BSD、Linux、MS-DOS、Windows 9x都是宏内核。

宏内核效率高、反应快,但是耦合度高、灵活性差。

6.1.2.2. 微内核

微内核的基本原理是只有最基本的操作系统功能才能放在内核中,非基本的服务和应用程序在微内核之上构造,并在用户态下运行。尽管什么应该在微内核中、什么应该在微内核外,不同的设计有不同的分界线,但是共同的特点是许多传统上属于操作系统一部分的功能现在都是在外部子系统现代操作系统,包括设备驱动程序、文件系统、虚存管理程序、窗口系统和安全服务。他们可以与内核交互,也可以相互交互。

第一代微内核主要是Mach,第二代微内核是QNX、L4,第三代微内核是Windows NT、Mac OS X。

微内核主要有一下优势

  • 一致接口
    • 微内核设计为进程发出的请求提供一致接口,进程不需要区分是内核级服务还是用户级服务,因为所有服务都是通过消息传递提供的

  • 可扩展性
    • 微内核促进了可扩展性,允许增加新的服务以及在同一个功能区域中提供多个服务。因此,用户可以从各种服务现代操作系统中选取最适合的一种。当增加一个新功能时,只需要修改或添补选中的服务。新服务程序或修改过的服务程序的影响被限制在系统的一个子集中,而且修改不会导致需要构造一个新内核

  • 灵活性
    • 不仅可以在操作系统中增加新功能,还可以删减现有的功能,产生一个更小、更有效的实现

  • 可移植性
    • 在微内核结构中,所有或者至少大部分处理器的专用代码都在微内核中。因此,当把系统移植到一个新处理器上时只需要很少的变化,且易于进行逻辑上的归类。

  • 可靠性
    • 小的微内核可以被严格地测试,他使用少量的应用程序编程接口(API),这就为内核外部的操作系统服务产生高质量的代码提供了机会。系统程序员只掌握有限数量的API和有限数量的交互方式,因此不易影响到其他系统部件

  • 微内核结构有助于提供分布式系统支持,包括分布式操作系统控制的集群

  • 微内核结构也适用于面向对象操作系统环境

6.1.3. 文件系统

6.1.3.1. 文件

磁盘通常会提供最基础的读写操作,但是往往是以块为单位的。为了更好的提供数据检索、权限校验、判断块是否被占用等功能,提出了文件系统做为存储的抽象。

文件(Files)是由进程创建的逻辑信息单元。一个磁盘会包含几千甚至几百万个文件,每个文件是独立于其他文件的。

文件由操作系统进行管理,有关文件的构造、命名、访问、使用、保护、实现和管理方式都是操作系统设计的主要内容。从总体上看,操作系统中处理文件的部分称为文件系统(file system)。

6.1.3.2. 文件访问

早期的操作系统只有一种访问方式:序列访问(sequential access)。在这些系统中,进程可以按照顺序读取所有的字节或文件中的记录,但是不能跳过并乱序执行它们。顺序访问文件是可以返回到起点的,需要时可以多次读取该文件。当存储介质是磁带而不是磁盘时,顺序访问文件很方便。

在使用磁盘来存储文件时,可以不按照顺序读取文件中的字节或者记录,或者按照关键字而不是位置来访问记录。这种能够以任意次序进行读取的称为随机访问文件(random access file)。