计算机基础综合速成(3):操作系统

11操作系统(Operating System)相关内容。本篇是计组的延续,请在完成相关内容学习后继续阅读。

Hyplus目录

1 操作系统概述

特征:并发、共享、虚拟、异步(其中并发和共享最基本)

发展:批处理操作系统 → 分时操作系统 → 实时操作系统 → 网络和分布式操作系统

体系结构:大内核、微内核

1.1 操作系统的目标和功能

什么是操作系统?

  1. 操作系统是计算机资源的管理者:
    1. 处理机管理:进程控制、进程同步、进程通信、死锁处理、处理机调度。
    2. 存储器管理:提高内存利用率,内存的分配与回收、地址映射、内存保护与共享、内存扩充。
    3. 文件管理:计算机中的信息都是以文件的形式存在的。
    4. 设备管理:完成用户的I/O请求,方便用户使用设备,提高设备的利用率。
  2. 操作系统为用户提供使用计算机硬件系统的接口
    1. 命令接口:用户通过控制台或终端输入操作命令,向系统提供各种服务要求。
    2. 程序接口:由系统调用组成,用户在程序中使用这些系统调用来请求操作系统为其提供服务。
    3. 图形接口:最常见的为图形用户界面(GUI)(最终仍是通过调用程序接口实现)
  3. 操作系统用作扩充机器
    • 没有任何软件支持的计算机称为裸机,实际呈现在用户面前的计算机系统是经过若干层软件改造的计算机。
    • 操作系统将裸机改造成功能更强、使用更方便的机器,常将覆盖了软件的机器称为扩充机器虚拟机

1.2 操作系统的运行机制

在计算机系统中,CPU通常执行两种不同性质的程序:操作系统内核程序(具体实现上位于核心态/管态)和用户自编程序或系统外层的应用程序(具体实现上位于用户态/目态)。内核程序是应用程序的“管理者”,可以执行一些特权指令(如I/O指令置中断指令、存取用于内存保护的寄存器、送程序状态字到程序状态字寄存器等指令),而“被管理程序“出于安全考虑不能执行这些指令。

层次式结构:操作系统的各项功能分别设置在不同的层次上。一些与硬件关联较紧密的模块,诸如时钟管理、中断管理、设备驱动等处于最底层。其次是运行频率较高的程序,诸如进程管理、存储管理和设备管理等。上述这两部分内容构成了操作系统的内核,其指令操作位于核心态。

内核是计算机上配置的底层软件,是计算机功能的延伸,包括以下4个方面的内容:

  1. 时钟管理:时钟的第一功能是计时,操作系统需要通过时钟管理,向用户提供标准的系统时间。其次,通过时钟中断的管理,可以实现进程切换。在分时操作系统中,采用时间片轮转调度的实现;在实时系统中,按截至时间控制运行的实现。在批处理系统中,还可通过时钟管理来衡量一个作业的运行程度等。
  2. 中断机制:引入中断技术的初衷是提高多道程序运行环境中CPU的利用率,主要针对外部设备。之后逐步得到发展,形成了多种类型,成为操作系统各项操作的基础。例如键盘或鼠标信息的输入、进程的管理和调度、系统功能的调用、设备驱动、文件访问等,都依赖于中断机制。可以说,现代操作系统是靠中断驱动的软件。中断机制中,只有一小部分功能属于内核,负责保护和恢复中断现场的信息,转移控制权到相关的处理程序。这样可以减少中断的处理时间,提高系统的并行处理能力。
  3. 原语:操作系统底层的一些可被调用的公用小程序,其各自完成一个规定的操作。原语的特点如下:
    • 这些程序处于操作系统的最底层,是最接近硬件的部分。
    • 这些程序的运行具有原子性,其操作只能一气呵成
      • 定义原语的直接方法是关闭中断,让其所有动作不可分割地进行完再打开中断。
    • 这些程序的运行时间都较短,而且调用频繁
  4. 系统控制的数据结构及处理:系统中用于登记状态信息的数据结构很多,例如作业控制块、进程控制块、设备控制块、各类链表等。为了实现有效的管理,系统有如下三种常见的基本操作:
    1. 进程管理:进程状态管理、进程调度和分配、创建和撤销进程控制块等。
    2. 存储器管理:存储器的空间分配和回收、内存信息保护程序、代码对换程序等。
    3. 设备管理:缓冲区管理、设备分配和回收等。

1.3 中断和异常

中断(Interruption,外中断)指来自CPU执行指令以外的事件的发生,如设备发出的I/O结束中断、时钟中断等。这一类中断通常是与当前执行的指令无关的事件

异常(Exception,内中断例外陷入)指源自CPU执行指令内部的事件,如程序的非法操作码、地址越界、算术溢出、缺页异常等。对异常的处理一般要依赖与当前程序的运行现场,不能被屏蔽

中断的引入是为了支持CPU和设备之间的并行操作,异常的引入是为了表示CPU执行指令本身时出现的问题

中断和异常的联系与区别:

  • 中断
    • 内中断
      • 自愿中断:指令中断
      • 强迫中断:硬件故障、软件中断
    • 外中断(强迫中断):外设请求、人为干预

不同计算机的中断处理过程各具特色,大多数情况下,中断执行的一般流程如下:

  1. 关中断:CPU响应中断后,首先要保护程序的现场状态,在保护现场的过程中,CPU不应响应更高级中断源的中断请求。否则,若现场保存不完整,在中断服务程序结束后,也就不能正确地恢复并继续执行现行程序。
  2. 保存断点:为保证中断服务程序执行完毕后能正确地返回到原来的程序,必须将原来的程序的断点(即程序计数器PC)保存起来。
  3. 引出中断服务程序:其实质是取出中断服务程序的入口地址送入程序计数器PC。
  4. 保存现场和屏蔽字:进入中断服务程序后,首先要保存现场,现场信息一般是指程序状态字寄存器PSWR和某些通用寄存器的内容。
  5. 开中断:允许更高级中断请求得到响应。
  6. 执行中断服务程序:这是中断请求的目的。
  7. 关中断:保证在恢复现场和屏蔽字时不被中断。
  8. 恢复现场和屏蔽字:将现场和屏蔽字恢复到原来的状态。
  9. 开中断中断返回:中断服务程序的最后一条指令通常是一条中断返回指令,使其返回到原程序的断点处,以便继续执行原程序。

以上是多重中断的流程,其中1〜3步由硬件(中断隐指令)完成,4〜9步由中断服务程序完成。

1.4 系统调用

计算机系统的各种硬件资源是有限的,为了更好地管理这些资源,进程不允许被直接操作,所有对这些资源的访问都必须由操作系统控制。即操作系统是使用这些资源的唯一入口,而该入口就是操作系统提供的系统调用。一般情况下系统调用都是通过中断实现(例如Linux系统的中断号0x80)。

系统调用是用户态进程与硬件设备进行交互的一组接口,优点如下:

  1. 把用户从底层的硬件编程中解放了出来
  2. 极大地提高了系统的安全性,使用户程序具有可移植性;用户程序与具体硬件已经被抽象接口所替代。

系统调用流程图如下:

系统调用流程图

1.5 大内核和微内核

大内核结构将操作系统功能作为一个紧密结合的整体放到内核。由于各模块共享信息,因此性能较高

由于操作系统不断复杂,因此需要将一部分操作系统功能移出内核,从而降低内核的复杂性。移出的部分根据分层的原则划分成若干服务,相互独立。

微内核结构下,操作系统被划分成小的、定义良好的模块,只有微内核这一个模块运行在内核态,其余模块运行在用户态。因为需要频繁地在用户态和核心态之间进行切换,所以会有一定的性能损失

微内核示意图如下:

微内核示意图


2 进程管理

在多道程序环境下,允许多个进程并发执行,此时它们将失去封闭性,并具有间断性及不可再现性的特征。为此引入了进程的概念,以便更好地描述和控制程序的并发执行,实现操作系统的并发性共享性

进程是程序的运行过程,是系统进行资源分配和调度的一个独立单位。

在早期操作系统中能拥有资源和独立运行的基本单位是进程,然而随着计算机技术的发展,进程出现了很多弊端,一是由于进程是资源拥有者,创建、撤消与切换存在较大的时空开销,因此需要引入轻型进程;二是由于对称多处理机(SMP)出现,可以满足多个运行单位,而多个进程并行开销过大。

线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,每条线程执行不同的任务。

2.1 进程与线程

进程(Process)与线程(Thread)的区别:

  1. 进程是系统进行资源分配调度的基本单位,线程是CPU调度分派的基本单位。
  2. 线程依赖于进程而存在,一个进程至少有一个线程
  3. 每个进程有独立的地址空间线程共享所属进程的地址空间
  4. 进程是拥有系统资源的一个独立单位,而线程本身几乎不拥有系统资源,只拥有一些在运行中必不可少的资源(如程序计数器、一组寄存器和栈),和其他线程共享本进程的相关资源(如内存、I/O、CPU等)。
  5. 进程切换涉及到整个当前进程CPU环境的保存环境的设置以及新被调度运行的CPU环境的设置,而线程切换只需保存和设置少量的寄存器内容,不涉及存储器管理方面的操作。可见,进程切换的开销远大于线程切换
  6. 线程之间的通信更方便,同一进程下的线程共享全局变量等数据,而进程之间的通信需要以进程间通信(IPC)的方式进行。
  7. 多线程程序只要有一个线程崩溃,整个程序就崩溃;但多进程程序中一个进程崩溃不会对其他进程造成影响,因为每个进程有独立的地址空间。因此多进程程序更健壮

进程和程序的区别:

  1. 程序是永存的;进程是暂时的,是程序在数据集上的一次执行,有创建有撤销,存在是暂时的。
  2. 程序是静态的观念,进程是动态的观念。
  3. 进程具有并发性,而程序没有;
  4. 进程是竞争计算机资源的基本单位,程序不是。
  5. 进程和程序不是一一对应的:一个程序可对应多个进程,即多个进程可执行同一程序;一个进程可以执行一个或几个程序。

2.2 进程的通信方式

2.3 进行的状态及转换过程

2.4 进程的调度算法

2.5 同步和互斥

2.6 死锁

2.7 饥饿

2.8 银行家算法


发表评论