操作系统复习纲要(第1~3章)

纲要,不包含知识点的细节部分。

第一章 绪论

  • 主要内容:操作系统的定义、主要功能、主要类型、操作系统的特征以及分时概念等内容
  • 考核要求
    • 了解:操作系统的发展历程,批处理、分时和实时操作系统的特点,操作系统在计算机系统中的地位。
    • 理解:操作系统的主要类型(批处理、分时、实时)。分时概念,操作系统的特征。

对操作系统的几种观点

  • 从系统观点:操作系统是计算机资源管理者,包括计算机硬件和软件。

  • 从用户观点:操作系统使用户使用计算机的界面。

  • 从软件观点:操作系统是程序和数据结构的集合。

    操作系统在计算机中的地位:位于硬件之上,所有其他软件之下,对计算机硬件功能的首次扩充。

操作系统知识体系

  • 操作系统是方便用户,管理整个计算机软硬件资源的系统软件。
  • 操作系统有五大功能(进程管理、存储管理、文件管理、设备管理和用户接口)

操作系统概念

​ 没有任何软件支持的计算机成为裸机(物质基础)。

​ 实际呈现再用户面前的计算机系统是经过若干曾软件改造过的虚拟机

操作系统定义

​ 操作系统是管理和控制系统中的硬件及软件资源,合理地组织计算机工作流程,从而方便用户的系统软件。

操作系统的发展过程

引子:推动操作系统发展的主要动力

​ 根本动力:需求推动发展

  1. 不断提高计算机资源利用率
  2. 方便用户
  3. 器件的不断更新换代
  4. 计算机体系结构的不断发展

多道程序

  1. 多道程序设计概念:内存中同时主流多个程序,使它们共享系统资源,并发运行。
  2. 多道程序设计硬件支持:I/O中断、通道。
  3. 多道批处理特征:多道、成批(效率高)、无交互。

操作系统的基本类型

分时系统

分时系统

​ 推动多道批处理系统形成和发展的主要动力,提高资源利用率和系统吞吐量。

​ 推动分时系统形成和发展的主要动力,则是用户的需求。

分时系统的特征

​ 多路性、独立性、及时性、交互性。

实时系统

​ 实时系统特征:及时响应、高度可靠。

用户接口

命令接口

​ (1)联机用户接口。这是为联机用户提供的,它由一组键盘操作命令及命令解释程序所组成。

​ (2)脱机用户接口。该接口是为批处理用户提供的,故也称为批处理用户接口。该接口由一组作业控制语言JCL组成。

程序接口

​ 是用户程序去的操作系统服务的唯一途径,由一组系统调用组成。

操作系统的基本特征

并发、共享、虚拟、异步

区别:并行与并发
并行性是指两个或多个事件在同一时刻发生;
并发性是指两个过多个事件再统一时间间隔内发生。

第二章 用户界面

考核内容:命令界面 系统调用

考核要求:

  • 理解:系统调用与过程调用的区别
  • 掌握:系统调用的实现过程

用户系统简介

操作系统的用户界面分为两种类型

  • 操作命令界面: 不同的操作系统提供不同的操作命令界面,它包括键盘命令、图形界面以及批处理界面;
  • 系统调用界面:常被称作系统调用接口或系统调用函数,是每个操作系统都必须提供的系统服务功能,用户能够在源程序中使用它来请求系统服务。

不同操作系统针对自身特点提供不同的用户界面

  • 分时系统必须提供键盘命令和系统调用界面;
  • 批处理系统则必须提供批处理1控制语言和系统调用界面。

任何操作系统都必须提供系统调用界面

命令解释程序

命令解释程序的作用:

  • 交互式地解释和执行用户输入的命令;
  • 识别用户键入的命令,转到相应命令处理程序的入口地址,执行后的结果送屏幕上显示。

CPU执行状态

系统态和用户态:为了防止操作系统及关键数据(如PCB)收到用户程序有意无意的破坏,通常将处理机的执行状态分为系统态和用户态两种。

系统态(核心态、管态):具有较高特权,能执行一切指令,访问所有寄存器和存储区。

用户态(目态):具有较低执行权的状态,只能执行规定的指令,访问指定的寄存器和存储区。

特权指令:一类只能在核心态下运行而不能在用户态下运行的特殊指令。不同的操作系统特权指令会有所差别,但是一般来说主要是和硬件相关的一些指令。

系统调用

系统调用描述

  • 系统调用:是OS提供给编程人员的唯一接口。
  • 系统调用是由操作系统中的一段程序来完成特定功能的(如打印、读写盘等),属于一种特殊的过程调用。
  • 调用的方式:采用访问方式来实现。通过产生一个访问中断,使处理及由目态(用户态)转为管态(系统态)。

系统调用功能分类

  1. 设备管理:这类系统调用被用来请求和释放设备,以及启动设备操作等。
  2. 文件管理:这类系统调用包括创建、删除文件,读写操作以及移动文件指针等。
  3. 进程控制:当多个用户程序在系统内执行时引出了一个新的概念,称为进程。
  4. 进程管理:进程间传递消息或信号的系统调用。
  5. 存储管理:内存块的申请、释放,获取作业韩永内存块的首址、大小等。

系统调用的描述

  1. 每个系统调用对应一个系统调用号;
  2. 每个系统调用由有一个对应的执行程序段;
  3. 每个系统调用要求一定数量的输入参数和返回值;
  4. 整个系统有一个系统调用执行程序入口地址表。

系统调用的实现过程

  1. 用户在源程序中使用系统调用,给出系统调用名和函数后,即产生一条相应的陷入指令,处理机在执行到该指令时发生相应的中断;
  2. 保护处理机现场:处理机的现场一般被保护在特定的内存区或寄存器中;
  3. 取系统调用功能号并寻找子程序入口,通过入口地址表来调取系统子程序;
  4. 执行完毕后,推出中断,返回到用户程序的断点,恢复现场,继续执行用户程序。

系统调用与普通调用的相同点和不同点

  • 相同点
    • 改变指令流程
    • 重复执行和公用
    • 改变指令流程后需要返回原处
  • 不同点
    • 执行状态不同
    • 调用方法不同

执行状态不同

调用和返回经历了不同的系统状态:

通常核心代码运行在系统态(核心态/管态)下;应用程序运行下用户态(普通态/目态)下。

所用的地址空间也不同:

核心代码可以直接访问应用进程的地址空间,反之不然。

进入方式不同

利用$int$或$trap$指令发生访管中断,进行系统调用;利用$call$或$jmp$指令直接进入普通的过程调用。

call指令的内部实现过程:

  1. 返回地址压栈;
  2. 将该call指令中所含的地址(即被调用代码所在地址)送入PC。

RET指令的内部实现过程:

  1. 从栈顶弹出返回地址送入程序计数器PC。

第三章 进程管理

主要内容:进程定义、进程的状态及转换、进程的组成、进程控制、进程间的关系、进程同步机制、信号量的一般应用、死锁概念、产生死锁的必要条件、死锁的解决方法

考核要求:

  • 理解:进程概念、进程的组成、临界资源和临界区、死锁的概念,死锁的必要条件。
  • 掌握:进程定义、进程的状态及其转换、进程的同步与互斥信号量和P、V操作及其一般应用。

进程的基本概念

进程的概念

程序并发执行:一组逻辑上相互独立的程序或程序段在执行的过程中,其执行时间在客观上相互重叠,即一个程序段的执行尚未结束,另一个程序段的执行已经开始的这种执行方式。

程序并发执行时的特征

  • 间断性
  • 失去封闭性:是多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变
  • 不可再现性

进程的定义

进程:是具有一定独立功能的程序关于某个数据集合上的一次运行活动(程序的一次执行),是系统进行资源分配和调度的一个独立单位。

进程与程序的联系与区别

进程与程序既有联系又有区别。

联系

  • 程序是构成进程的组成部分之一。
  • 一个进程的运行目标是执行他所对应的程序,如果没有程序,进程就失去了其实际存在的意义。
  • 从静态的角度来看,进程是由程序、数据和进程控制块(PCB)三部分组成。

区别

  • 程序是静态的,而进程是动态的。
  • 一个进程可以执行一个或多个程序,一个程序亦可以构成多个进程。
  • 进程是暂时的,程序是永久的。

进程的特征

  1. 动态性
  2. 并发性
  3. 独立性:进程实体是一个能独立运行的基本单位,同时也是系统中独立获得资源和独立调度的基本单位。没有建立进程的程序,不能作为一个独立的单位参加运行。
  4. 异步性:指进程按各自独立的、不可预知的速度向前推进。
  5. 结构特性:从结构上看,进程由程序段、数据段及(PCB)三部分组成。

进程分类

进程分为系统进程和用户进程,系统进程的优先级同城高于用户进程的优先级。

进程描述

进程控制块

  • OS是根据PCB来对并发执行的进程进行控制和管理的。
  • PCB是进程存在的唯一标志。
  • PCB记录操作系统所需的、用于描述进程的当前情况以及控制进程运行的全部信息。
  • PCB保存于内存系统区。

进程控制块的组成

  1. 进程标识符信息
  2. 处理及状态信息(现场信息)
  3. 进程调度信息
  4. 进程控制信息

进程的状态及其转换

进程的状态及其转换

  1. 就绪状态
  2. 执行状态
  3. 阻塞状态

进程状态转移

进程控制

  1. 由原语实现:一般的,把系统状态下执行的某些具有特定功能的程序段成为原语。
  2. 和进程控制有关的原语有:创建原语、撤销原语、阻塞原语、唤醒原语。

原语

  • 原语是由若干条指令组成的,用于完成一定功能的一个过程。
  • 原语在执行过程中不允许被中断。
  • 在管态状态下,常驻内存。

进程创建原语

  1. 申请空白的PCB:为新进程分配唯一的数字标识符,并从PCB表项中申请一个空白的PCB;
  2. 为新建的进程分配资源;
  3. 初始化PCB:填写PCB相关表项,将进程的状态设置为”就绪“状态;
  4. 将新进程插入就绪队列。

进程阻塞原语

  • 阻塞原因:申请资源、I/O、等待数据等
  • 进程便通过调用阻塞原语block把自己阻塞
  • 进程的阻塞是进程自身的一种主动行为
  • 进程阻塞队列
  • 进程阻塞会引发进程调度事件
  • 与进程唤醒原语要成对出现

进程同步

  1. 临界资源:临界资源指的是一次只允许一个进程使用的独占资源。
  2. 临界区:临界区是指包含了访问临界资源的那段程序。
  3. 进程互斥:进程对临界区的排他性访问。
  4. 进程同步:两个以上相关进程在执行次序上的协调。

临界区访问模型:

解决互斥问题应遵循的规则(互斥四原则)

  1. 空闲让进。当无进程处于临界区时,应允许一个请求进入临界区的进程立即进入自己的临界区。
  2. 忙则等待。当已有进程进入临界区时,其他试图进入临界区的进程必须等待。
  3. 有限等待。对要求访问临界资源的进程,应保证在有限时间内能进入自己的临界区,一面陷入”死等“状态。
  4. 让权等待。当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入”忙等“状态。

信号量及其P、V操作

本章知识点

  • 信号量机制作为进程通信方式之一,主要用于实现进程之间的同步和互斥。
  • 每个信号量是一个二元组,由信号量s和s的等待队列q组成。
  • 对s值的修改只能通过操作系统提供的p、v操作进行。
  • 通过执行信号量的p操作和v操作来申请或释放信号量:
    • p操作便是申请资源
    • v操作表示释放资源
  • p、v操作用原语实现,不允许中断。
  • 要会计算信号量取值范围
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/*P操作原语--请求资源或条件*/
P(s)
{
s--;
if(s<0){
保留调用进程的CPU现场;
将该进程插入s的等待队列;
置该状态为等待态;
转进程调度;
}
}

/*V操作原语--释放资源或条件*/
V(s)
{
s++;
if(s<=0){
移出s等待队列中的第一个进程;
将该进程插入就绪队列;
置该进程为就绪态;
}
}

用P、V操作实现进程同步与互斥

实现例子:生产者消费者问题,读者写者问题(照顾写者),哲学家就餐问题(不能死锁)。

信号量的物理含义:

  1. s>0,表示由s个资源可用
  2. s<0,则|s|表示s等待队列中的进程个数

对信号量只能执行p、v操作。

必须成对使用p和v原语:

  1. 遗漏p原语则不能保证互斥访问
  2. 遗漏v原语则不能在使用临界资源之后将其释放(给其他等待的进程)
  3. p、v原语不能次序错误、重复或遗漏

进程通信的类型

高级通信机制

  1. 共享存储器系统(Shared-Memory System)
  2. 消息传递系统(Message passing System)
  3. 管道(pipe)通信系统

消息缓冲通信机构是以内存缓冲区为基础
管道是以文件系统为基础。

线程

  1. 从操作系统的角度来看,线程是可以被操作系统独立调度和分派的基本单位。
  2. 线程自己几乎不拥有资源,但它可以与同属一个进程的其他线程共享进程所拥有的全部资源。
  3. 一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。

线程的开销小

  • 创建/撤销:一个新线程花费时间少
  • 线程切换花费时间少
  • 县城直接相互通信不必调用内核(同一进程内的线程共享内存和文件)

线程的定义

线程可定义为“进程内的一个执行单位”,或者定义为“进程内的一个可调度的实体”。

在具有多线程机制的操作系统中,处理机调度的基本单位不是进程而是线程。负责处理机调度的程序成为线程调度程序,它是操作系统内核的重要组成部分,线程调度也是内核的主要功能之一。

线程的属性

  1. 轻型实体。只拥有运行所必需的资源:PC,寄存器,栈
  2. 独立调度的基本单位
  3. 可并发执行。
  4. 共享所在进程的地址空间和其他资源。
  5. 同步:互斥锁、条件变量、信号量

线程是系统调度的一个基本单位。在程序中线程是以函数的形式出现的,它的代码是进程代码的一部分,并与进程及其派生的其他线程共享进程的全局变量和文件打开表等公用信息。

每个进程都有私有的虚拟地址空间,进程的所有线程共享同一地址空间

死锁

本章知识点

  • 产生死锁的原因
  • 死锁的预防
  • 死锁的避免
  • 死锁的检测与恢复

死锁简介

​ 死锁的定义:一组进程中,每个进程都无限等待被该组进程中另一进程所占有的资源,因而永远无法得到的资源,这种现象称为进程死锁,这一组进程就称为死锁进程。

关于死锁的一些结论:

  • 参与死锁的进程最少是两个
  • 参与死锁的进程至少有两个已经占有资源
  • 参与死锁的所有进程都在等待资源
  • 参与死锁的进程是当前系统中所有进程的子集

产生死锁的原因

产生死锁的原因有两点:

  1. 竞争资源:为多个进程所共享的资源不够,引起他们对资源的竞争而产生死锁;
  2. 进程推进顺序不当:在进程运行过程中,请求资源和释放资源的顺序不当,也会产生死锁。

产生死锁的必要条件

只有四个条件都满足是,才会出现死锁:

  1. 互斥:任意时刻只允许一个进程使用资源
  2. 不剥夺:进程已经占用的资源,不会强制剥夺(资源只能由占有者主动释放)
  3. 请求和保持(部分分配):进程在请求其余资源时,不主动释放已经占用的资源
  4. 环路等待:环路中的每一条边是进程在请求里另一进程已经占有的资源

处理死锁的基本方法

  1. 预防死锁:掌握具体预防策略
  2. 避免死锁:银行家算法
  3. 检测死锁
  4. 解除死锁

系统安全状态

安全状态:是指能够按照某种进程顺序如<p1,p2,…,pn>(称<p1,p2,…,pn>序列为安全序列),来为每个进程分配其所需资源,直至最大需求,是每个进程都可以顺利完成。

不安全状态:是指系统招不到一个进程安全序列<p1,p2,…,pn>,党委每个进程分配其所需资源后,能是每个进程可以顺利完成。

避免死锁的实质就是如何是系统不进入不安全状态。

由安全状态向不安全状态的转换

如果不按照安全顺序分配资源,则系统可能由安全状态进入不安全状态。

例如:

假定有三个进程P1,P2,P3,有12台磁带机。

进程 最大需求量 已分配 可用
P1 10 5 3
P2 4 2
P3 9 2

在T0时刻P3又申请了一台磁带机,若剩余三台中的一台分配给P3则系统会进入不安全状态。

安全状态、不安全状态和死锁状态之间的关系

死锁的避免

死锁预防是:设法至少破坏产生死锁的三个必要条件之一(互斥条件、不剥夺资源、部分分配),严格地防止死锁的出现。总的来说都是施加了较强的限制条件,从而使实现较简单,却严重的损害了系统性能。

而死锁的避免则:不那么严格地限制产生死锁的必要条件的存在(因为即使思索必要条件成立,也未必一定会发生死锁),而是在系统运行过程中小心地避免死锁的最终发生,因而有可能获得令人满意的系统性能。

如何避免死锁

  1. 允许进程动态地申请资源,即:需要时再申请,且不需要按任何资源次序申请。
  2. 但:系统在进行每次资源分配以前,都需要先运行银行家算法计算此次资源分配的安全性。
  3. 该算法对于一个进程发出的每一个系统能够满足的资源申请命令加以动态检查。
  4. 如果发现分配资源后,系统进入不安全状态,则不予分配;
  5. 而分配资源后,系统仍处于安全状态,则分配资源。
  6. 所以,死锁的避免策略主要是:根据系统是否处于安全状态,来决定分配资源与否。

银行家算法的特点

  • 允许互斥、部分分配和不可抢占,可提高资源利用率。
  • 要求事先说明最大资源要求,在现实中很困难。

死锁定理引理:

  1. 如果资源分配图中没有环路,则系统中没有死锁,如果图中存在环路则系统可能存在死锁。
  2. 如果每个资源类中只包含一个资实例,则环路是死锁存在的充分必要条件。
银行家算法习题

设系统中有三种类型的资源(A\B\C)和5个进程,资源的数量为(17\5\20)。在T0时刻系统状态见表。系统采用银行家算法实施死锁避免策略。

  1. T0时刻是否为安全状态?若是,请给出安全序列、
  2. 在T0时刻若进程P2请求资源(0\3\4),是否能实施资源分配?为什么?
  3. 在2的基础上,若进程P4请求资源(2\0\1),是否能实施资源分配?为什么?
  4. 在3的基础上,若进程P1请求资源(0\2\0),是否能实现资源分配?为什么?

T0时刻系统状态

答案

安全序列

感谢您的支持
-------------本文结束感谢您的阅读-------------