1. 导论
  • 操作系统(Operating System,OS)位于计算机用户与计算机硬件之间。
  • 操作系统的目的是提供环境,以便用户能够便捷而高效地执行程序。
  • 操作系统是管理计算机硬件的程序。它还为应用程序提供基础,并充当计算机用户和硬件的中介。
  • 大型机的操作系统主要用于优化硬件使用率。 个人计算机(PC)的操作系统支持复杂游戏、商业应用和这两者之间的其他应用。
  • 操作系统既庞大又复杂

1.1 操作系统的功能

  计算机系统可以分为4个组件:硬件、操作系统、应用程序、用户。计算机系统组件的抽象视图如下图所示。

操作系统(一)—— 概论(1):导论_内存管理

  • 硬件:如中央处理单元(CPU)、内存、输入/输出设备,为系统提供基本的计算机资源。
  • 操作系统控制硬件,并协调各个用户应用程序的硬件使用。
  • 计算机系统可以分为硬件、软件及数据。当计算机系统运行时,操作系统以正确手段以便使用这些资源。
  • 操作系统类似于政府,其本身不能实现任何有用功能,而是提供一个方便其他程序执行有用工作的环境。

1.1.1 用户视角

  计算机的用户视角因使用界面不同而不同。
    ⋄ \diamond ⋄ PC用户: 操作系统设计的主要目的是用户使用方便、次要的是性能,不在乎的资源利用。
    ⋄ \diamond ⋄ 大型机或小型机用户: 操作系统的设计目标是优化资源利用率,确保所有的CPU时间、内存和I/O都能得到有效使用,并且确保没有用户使用超过限额以外的资源。
    ⋄ \diamond ⋄ 工作站用户: 工作站与其他工作站和服务器相连。操作系统的设计需要兼顾使用方便性和资源利用率。
    ⋄ \diamond ⋄ 智能手机和平板电脑等移动计算机用户: 大多数移动计算机为单用户使用,用户通过触摸屏来交互。
    ⋄ \diamond ⋄ 嵌入式设备: 家电和汽车等嵌入式计算机。

1.1.2 系统视角

  从计算机角度来看,操作系统是与硬件紧密相连的程序,可将操作系统看作资源分配器
  计算机系统可能具有许多资源:CPU时间、内存空间、文件存储空间、I/O设备等。操作系统管理这些资源。面对许多甚至冲突的资源请求,操作系统应考虑如何为各个程序和用户分配资源,以便计算机系统能有效且公平地运行。

1.1.3 操作系统的定义

  一般来说,没有一个关于操作系统的完全准确的定义。
  操作系统的存在是因为提供了合理方式解决创建可用计算系统的问题。
  计算机系统的根本目的是,执行用户程序并更容易解决用户问题。为实现这一目的,构造了计算机硬件。由于硬件本身并不十分容易使用,因此开发了应用程序。这些应用程序需要一些共同操作,如控制I/O设备。这些控制和分配I/O设备资源的共同功能被组成一个软件模块:操作系统。
  一个比较公认的定义是:操作系统是一直运行在计算机上的程序(通常称为内核)。
  除了内核外,还有两类程序:
    ⋄ \diamond ⋄ 系统程序: 是与系统运行有关的程序,但不是内核的一部分;
    ⋄ \diamond ⋄ 应用程序: 与系统运行无关的所有其他程序。

1.2 计算机系统的组成

  计算机系统的结构组成如下图所示。

操作系统(一)—— 概论(1):导论_计算机系统_02

1.2.1 计算机系统的运行

  现代通用计算机系统包括一个或多个CPU和若干设备控制器,通过公用总线相连接,总线提供了共享内存的访问。
  每个设备控制器负责一类特定的设备(如磁盘驱动器、音频设备或视频显示器)。CPU与设备控制器可以并发执行,并竞争访问内存。为了确保有序访问共享内存,需要内存控制器来协调访问内存。

  引导程序: 当计算机开机运行时,需要运行一个初始程序,该程序位于计算机的固件(如只读内存ROM或电可擦编程只读内存EEPROM)。
  引导程序必须知道如何加载操作系统并开始执行系统。为了完成这一目标,引导程序必须定位操作系统内核并加载到内存。
  一旦内核加载到内存并执行,它就开始为系统与用户提供服务。除了内核外,系统程序也提供一些服务,它们在启动时加到内存而成为系统程序或系统后台程序。一旦这个阶段完成,系统就完全启动了,并且等待事件发生。
  事件发生通常通过硬件或软件的中断来通知。硬件可以通过系统总线发送信号到CPU,以触发中断。软件可通过执行特别操作即系统调用,以触发中断。

  当CPU被中断时,它停止正在做的事,并立即转到固定位置再继续执行。该固定位置通常包含中断服务程序的开始地址。中断服务程序开始执行,在执行完后,CPU重新执行中断的计算。这一运行的时间表如图:

操作系统(一)—— 概论(1):导论_内存管理_03

1.2.2 存储结构

  • 内存(main memory),也称随机访问内存(Random Access Memory,RAM),内存通常为动态随机访问内存(Dynamic Random Access Memory,DRAM)。
  • 只读内存(Read Only Memory,ROM),数据不可修改,即不可写。
  • 内存特点: 易失性。掉电丢失数据。
  • 外存: 磁盘、硬盘、U盘、光碟、固态硬盘等。非易失性,数据可持久化。

  存储设备的层次如下图所示。

操作系统(一)—— 概论(1):导论_应用程序_04

1.2.3 I/O结构

  • 每个通用计算机系统由一个CPU和多个设备控制器组成,它们通过总线连接在一起。
  • 每个设备控制器管理某一特定类型的设备。
  • 通常,操作系统为每个设备控制器提供一个设备驱动程序(device driver)。

1.3 计算机系统的体系结构

  根据通用处理器数量来对算机系统的体系结构进行粗略分类。

1.3.1 单处理器系统

  • 只有一个CPU的系统。 执行一个通用指令集,该指令集包括执行用户进程的指令。
  • 几乎所有单处理器系统都带有其他的专用处理器。它们为特定设备的处理器,如磁盘、键盘、图形处理器。专用处理器执行有限的指令集,而并不执行用户进程

1.3.2 多处理器系统

  • 多CPU系统,多核系统。 集成多个计算核到单个芯片的系统,称为多核

  • 多处理器系统的优点
    - 增加吞吐量
    - 规模经济
    - 增加可靠性

  • 非对称处理器: 每个处理器都有各自特定的任务。一个主处理器控制系统,其它处理器或向主处理器要任务或处理预先规定的任务,这种称为主从关系。主处理器调度从处理器,并安排任务。

  • 对称处理器: 每个处理器都参与完成操作系统的所有任务 ,处理器之间没有主从关系。

  对称多处理的体系结构如下图所示。

操作系统(一)—— 概论(1):导论_应用程序_05

1.3.3 集群系统

  • 集群系统将多个CPU组合在一起。一般通过网络连接,提供高可用性的服务。

操作系统(一)—— 概论(1):导论_计算机系统_06

1.4 操作系统的结构

  操作系统具有多道程序能力。一般来说,单个程序不能让CPU和IO设备始终忙碌。
  单个用户通常具有多个运行程序。多道程序设计通过安排作业(job),使得CPU总有一个执行作业,从而提高CPU利用率
  操作系统在内存中同时保存多个任务。由于内存太小不能容纳所有作业,因此这些作业首先保存在磁盘的作业池(job pool)上。该作业池包括磁盘上的、等待分配内存的所有进程。

操作系统(一)—— 概论(1):导论_操作系统_07
  分时系统是多道程序设计的自然延伸。对于分时系统,虽然CPU还是通过切换作业来执行多个作业,但是由于切换频率很高,用户可以在程序运行时与其交互。
  分时系统需要确保响应时间。为每个用户提供一小部分的分时计算机资源。加载到内地并执行的程序,称为进程

1.5 操作系统的执行

  • 操作系统是中断驱动的。事件是由中断或陷阱(或异常)引起的。
  • 陷阱(或异常)是一种软件生成的中断,或源于出错,或源于用户程序的特定请求。

1.5.1 双重模式与多重模式的执行

  • 为确保操作系统的正确运行,必须区分操作系统代码用户代码的执行。
  • 用户模式(user mode)和内核模式(kernel mode)
    - 计算机硬件可以通过模式位(mode bit)来表示当前模式:内核模式(0)和用户模式(1)。
    - 当计算机系统执行用户应用时,系统处于用户模式,当用户应用通过系统调用,请求操作系统服务时,系统必须从用户模式切换到内核模式,如下图所示。

    操作系统(一)—— 概论(1):导论_内存管理_08
  • 双重模式执行提供保护手段,以便防止操作系统和用户程序受到错误用户程序的影响。
  • 这种防护实现为:将可能引起损害的机器指令作为特权指令,并且硬件只有在内核模式下才允许执行特权指令。
  • 如果在用户模式下试图执行特权指令,那么硬件并不执行该指令,而是认为该指令非法,并将以陷阱形式通知操作系统。

1.5.2 定时器

  • 操作系统应该维持控制CPU,防止用户程序陷入死循环,或不调用系统服务并且不将控制返给操作系统。为了实现这一目标可以使用定时器(timer)。
  • 定时器可设置为指定周期后中断计算机

1.6 进程管理

  • 在未被CPU执行之前,程序做不了任何事情。
  • 执行中的程序称为进程
  • 程序本身不是进程,程序是被动实体,而进程是主动实体
  • 单线程进程有一个程序计数器(PC),指定了下一个所要执行的指令。
  • 进程是系统的工作单元。系统由多个进程组成,其中有操作系统进程,也有用户进程。所有进程并发执行
  • 操作系统负责进程管理的以下活动:
    - 在CPU上调度进程和线程
    - 创建和销毁用户进程和系统进程
    - 挂起和重启进程
    - 提供进程同步机制
    - 提供进程通信机制

1.7 内存管理

  • 内存简单理解就是一个大的字节数组
  • 如果CPU需要执行指令,那么这些数据必须首先通过CPU的IO调度传到内存。
  • 为了改进CPU的利用率和用户的计算机响应速度,计算机应在内存中保留多个程序,这就需要内存管理。
  • 操作系统负责内存管理的以下活动:
    - 记录内存的哪部分在被使用以及谁使用
    - 决定哪些进程会调入或调出内存
    - 根据需要分配和释放内存空间

1.8 存储管理

  • 操作系统提供信息存储的统一逻辑视图
  • 操作系统对存储设备的物理属性进行了抽象,并定义了逻辑单元,即文件(File)。操作系统映射文件到物理媒介,并通过存储设备来访问文件。

1.8.1 高速缓存

  高速缓存(caching)一般集成在CPU中。

  各种级别存储的性能如下图所示。

操作系统(一)—— 概论(1):导论_高速缓存_09

  • 高速缓存的几个问题
    - 为什么需要高速缓存?(由于每次读取数据的速度比较慢,但是执行的速度比较快,所以造成了CPU的浪费,所以高速缓存是为了解决低速的外设和高速的CPU之间速度不匹配的问题。)
    - 高速缓存的大致原理是什么?(高速缓存内存标识位于主内存中的重复指令和数据,并将其复制到其内存中。CPU不再为相同的指令和数据重复访问较慢的主内存,而是访问更快的缓存。)
    - 高速缓存的数据一致性问题(数据一致性的问题的原因主要是由于两次操作时间不同步导致的数据一致性问题。)
    - 多级高速缓存(为提高存储性能而采用的多层次结构的高速缓存。)

  下图是整数A从磁盘到寄存器的迁移过程。

操作系统(一)—— 概论(1):导论_应用程序_10

1.8.2 I/O系统

  • IO子系统为操作系统本身隐藏了IO设备的特性。
  • IO子系统包括以下几个组件:
    - 包括缓冲、高速缓存和假脱机的内存管理组件
    - 设备驱动器的通用接口
    - 特定硬件设备的驱动程序
  • 只有设备驱动程序才能知道控制设备的特性。

1.9 保护与安全

  • 保护是一种机制,用于控制进程或用户访问计算机系统的资源,比如阻止用户对内核接口的非法调用等。
  • 安全: 防止系统不受外部或内部的攻击。

1.10 内核数据结构

  • 列表、堆栈、队列
  • 哈希函数与哈希表
  • 位图

1.11 计算环境

  讨论操作系统如何用于各种计算环境。

  • 传统计算
      ⋄ \diamond ⋄ PC访问Web等
      ⋄ \diamond ⋄ 单机游戏
      ⋄ \diamond ⋄ 单机应用
      ⋄ \diamond ⋄ …
  • 移动计算
      ⋄ \diamond ⋄ 就是智能手机或平板电脑的计算
      ⋄ \diamond ⋄ IOS 和 Android等
  • 分布计算
      ⋄ \diamond ⋄ 分布式系统是物理上分开的,通过网络相连的一组计算机系统。
      ⋄ \diamond ⋄ 网络协议(如TCP/IP协议)、局域网、广域网、互联网
      ⋄ \diamond ⋄ 网络操作系统
  • 客户机-服务器计算

    操作系统(一)—— 概论(1):导论_应用程序_11
  • 对等计算
      ⋄ \diamond ⋄ 对等系统模型(Peer-to-Peer,P2P)这个模型不区分客户机和服务器,所有系统节点都是对等的,每个节点都可以作为客户机或服务器,这取决于它是提供请求还是提供服务。
      ⋄ \diamond ⋄ 无中央控制的对等系统如下图所示。

    操作系统(一)—— 概论(1):导论_操作系统_12
  • 虚拟化
      ⋄ \diamond ⋄ 通过虚拟化技术,操作系统可以在其他操作系统上运行应用程序。
      ⋄ \diamond ⋄ 虚拟化技术是一种软件技术,用于实现模拟。例如:VMware软件、JVM、阿里云服务器。
  • 云计算
      ⋄ \diamond ⋄ 云计算(cloud computing)可以通过网络提供计算、存储甚至应用程序登服务。从某些方面来看,它是虚拟化技术的延伸
      ⋄ \diamond ⋄ 云计算实际上有许多类型,包括:
      - 公有云(public cloud)
      - 私有云(private cloud)
      - 混合云(hybrid cloud)
      - 软件即服务(Software as a Service,SaaS)
      - 平台即服务(Platform as a Service,PaaS)
      - 基础设施及服务(Infrastructure as a Service,IaaS)

    操作系统(一)—— 概论(1):导论_操作系统_13
  • 实时嵌入式系统
      ⋄ \diamond ⋄ 如汽车、家电等都能应用到实时嵌入式系统。
      ⋄ \diamond ⋄ 嵌入式系统几乎总是采用实时操作系统(real-time OS),比如导弹系统使用的是实时操作系统。

1.12 开源操作系统

  • Linux、Unix开源,开放源代码
  • Windows闭源,不开放源代码
  • Google的Android开放源代码
  • 苹果的IOS不开放源代码