操作系统的特征

并发

  • 并发:两个或多个事件在同一时间间隔内发生,这些事件在宏观上是同时发生的,在微观上是交替发生的, 操作系统的并发性指系统中同时存在着多个运行的程序

  • 并行:两个或多个事件在同一时刻发生

    一个单核(CPU)同一时刻只能执行一个程序,因此操作系统会协调多个程序使他们交替进行(这些程序在宏观上是同时发生的,在微观上是交替进行的)

共享

定义:系统中的资源可以供内存中多个并发执行的进程共同使用

互斥共享

  • 计算机中的某个资源在一段时间内只能允许一个进程访问,别的进程没有使用权
  • 临界资源(独占资源):在一段时间内只允许一个进程访问的资源,计算机中大多数物理设备及某些软件中的栈、变量和表格都属于临界资源,它们被要求互斥共享
  • 举个例子:比如QQ和微信视频。同一段时间内摄像头只能分配给其中一个进程

同时共享

  • 计算机中的某个资源在在一段时间内可以同时允许多个进程访问
  • 同时共享通常要求一个请求分为几个时间片段间隔的完成,即交替进行,“分时共享”
  • 这里的同时指在宏观上是同时的,在微观上是交替进行访问的,只是cpu处理速度很快,我们感觉不到,在宏观上感觉是在同时进行
  • 举个例子:比如QQ在发送文件A,微信在发送文件B,宏观上两个进程A和B都在访问磁盘,在我们看来是同时进行的,但是在微观上两个进程A和B是交替进行访问磁盘的,只是时间太短,cpu处理速度太快,我们感觉不到。

并发性和共享性互为存在条件

虚拟

  1. 定义: 多道程序设计:是指在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制之下,相互穿插的运行。 两个或两个以上程序在计算机系统中同处于开始到结束之间的状态。这就称为多道程序设计。多道程序技术运行的特征:多道、宏观上并行、微观上串行。
  2. 虚拟是把一个物理上的实体变为若干逻辑上的对应物。
  3. 物理实体(前者)是实际存在的;而后者是虚的,是用户感觉上的事务
  4. 虚拟技术:用于实现虚拟的技术
  5. 虚拟处理器(CPU):通过多道程序设计技术,采用让多道程序并发执行的方法,分时来使用一个CPU,实际物理上只有一个CPU,但是用户感觉到有多个CPU
  6. 虚拟存储器:从逻辑上扩充存储器容量,用户感觉到的但实际不存在的存储器
  7. 虚拟设备:将一台物理设备虚拟为逻辑上的多台设备,使多个用户在同一时间段内访问同一台设备,即同时共享,用户宏观上感觉是同时的,但实际上是微观交替访问同一台设备的

虚拟技术分类

  • 时分复用技术:如处理器的分时共享
  • 空间复用技术:如虚拟存储器

异步

​ 异步:多道程序环境允许多个程序并发执行,但由于资源有限,如cpu只有一个,进程的执行并不是一贯到底的,而是走走停停的,它以不可预知的速度向前推进。

​ 比如A进程正在占用CPU计算,B进程这时也想占用CPU计算,B进程只有等,等A进程算完了,A进程去访问磁盘资源了,这时B进程再占用CPU进行计算,B进程还没计算完,A进程从磁盘取出资源了,A进程发现B这时在占用CPU,这时A进程就需要等待,等B算完后再继续到CPU中进行计算。由于每个进程占用资源的时间不固定,所以进程的执行以不可预知的速度前进

操作系统的运行机制和体系结构

运行机制

两种命令

  • 特权指令: 不允许用户直接使用的命令,例如:I/O指令,中断指令
  • 非特权指令: 加减乘除等普通运算指令

两种处理器状态

用程序状态寄存器PSW中的某标志位来标识处理器处于什么状态: 0–用户态,1–核心态

  • 核心态:特权指令和非特权指令都可在当前状态下执行
  • 用户态: 只能执行非特权指令

用户态 -> 核心态是通过中断实现的,且中断是唯一途径

两种程序

  • 内核程序:操作系统内核程序是系统的管理者,特权指令和非特权指令都可执行,运行在核心态
  • 用户程序:为了系统能够安全运行,用户程序只能执行非特权指令,运行在用户态

操作系统内核

定义: 内核是计算机配置在底层的软件,是操作系统最基本最核心的部分;实现操作系统内核功能的程序是内核程序

时钟管理

中断机制

原语

  • 系统中的设备驱动,cpu切换,进程通信等功能中的部分操作都可定义为原语
  • 特点:
    • 是一种特殊的程序,处于操作系统最底层,最接近硬件的部分
    • 具有原子性,操作一气呵成
    • 程序运行时间比较短,调用频繁

对资源进行管理的功能

  • 进程管理:进程状态管理,进程调度和分派,创建与撤销进程控制块(PCB)等
  • 存储器管理:存储器的空间分配和回收,内存信息保护程序,代码对换程序
  • 设备管理:缓冲区管理,设备分配和回收

操作系统的体系结构

大内核

  • 将内核的主要功能模块都作为一个紧密联系的整体运行在核心态
  • 优点:高性能
  • 缺点:内核代码庞大,结构混乱,难以维护

微内核

  • 将内核中最基本的功能保留在内核,不需要运行在内核态执行的功能移到用户态执行
  • 优点:内核功能少,结构清晰,方便维护
  • 缺点:需要频繁的在用户态和核心态之间切换,性能低

在这里插入图片描述

中断和异常

产生中断的原因

​ 为了实现多道程序并发执行的一种技术,为了提高资源利用率

中断的概念和作用

​ 发生了中断,意味着操作系统要介入开展管理工作,CPU会立即进入内核态,此外,中断是CPU从用户态进入内核态的唯一途径

中断的分类

内中断

​ 信号来源CPU内部,与当前执行的指令有关

  • 自愿中断:系统调用时使用的陷入指令
  • 强迫中断:硬件故障或软件中断(整数除0)

外中断

​ 信号源来自CPU外部,与当前执行的指令无关

  • I/O操作完成发出的中断信号
  • 用户强行终止一个进程

中断处理过程

  1. 关中断:CPU响应中断后,拒绝响应高级中断源的中断请求
  2. 保存断电:为了之后能重新恢复执行这个程序,需要将原来的程序的断点保存起来
  3. 中断服务程序寻址
  4. 保存现场和屏蔽字
  5. 开中断
  6. 执行中断服务程序
  7. 关中断
  8. 恢复现场和屏蔽字
  9. 开中断,中断返回

系统调用

什么是系统调用?作用是什么

​ 系统调用是操作系统提供给应用程序的接口

作用:应用程序可以通过系统调用(程序接口)请求获得操作系统的服务

系统调用会使处理机从用户态切换到内核态

系统调用与库函数的区别

​ 系统调用是操作系统向上提供的接口,库函数是对系统调用的进一步封装,高级语言提供的库函数间接进行系统调用

系统调用过程

  1. 用户程序执行陷入指令,请求操作系统服务
  2. 操作系统内核程序对系统调用进行相应处理
  3. 处理完成后,操作系统内核程序将CPU使用权交还给用户

注意

  • 系统调用发生在用户态
  • 对系统调用的处理在内核态
  • 执行陷入指令会使CPU产生内中断,使其进入内核态

在这里插入图片描述

进程管理

进程的定义

​ 程序段,数据段,PCB三部分组成了进程实体,一般情况下,进程实体简称进程,创建进程,其实就是在创建PCB

  • 进程是程序的一次执行过程
  • 进程是一个程序及其数据在处理机上顺序执行时所发生的活动
  • 进程是系统进行资源分配的基本单元

在这里插入图片描述

进程的特征

  • 动态性:进程是程序的一次执行过程,是动态产生,变化和消亡的
  • 并发性:内存中有多个进程实体,各进程可并发执行
  • 独立性:进程能独立的运行,独立的获得资源,独立的接受资源调度
  • 异步性:各个进程按各自独立的,不可预知的速度向前推进,操作系统要提供进程同步机制来解决异步问题
  • 结构性:每个进程都会配置一个PCB

什么是PCB

PCB简介:
PCB中记录了操作系统所需的,用于描述进程的当前情况以及控制进程运行的全部信息。
PCB的作用是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能与其他进程并发执行的进程。
或者说,OS是根据PCB来对并发执行的进程进行控制和管理的。
例如,当OS要调度某进程执行时,要从该进程的PCB中查处其现行状态及优先级;在调度到某进程后,要根据其PCB中所保存的处理机状态信息,设置该进程恢复运行的现场,并根据其PCB中的程序和数据的内存始址,找到其程序和数据;
进程在执行过程中,当需要和与之合作的进程实现同步,通信或者访问文件时,也都需要访问PCB;
当进程由于某种原因而暂停执行时,又须将器断点的处理机环境保存在PCB中。
可见,在进程的整个生命期中,系统总是通过PCB对进程进行控制的,即系统是根据进程的PCB而不是任何别的什么而感知到该进程的存在的。
所以说,PCB是进程存在的唯一标志。

进程的组织

在这里插入图片描述

链接方式

在这里插入图片描述

索引方式

在这里插入图片描述

进程的状态

三种基本状态(就绪,运行,阻塞)

在这里插入图片描述

线程全部状态

在这里插入图片描述

状态间的切换

在这里插入图片描述

进程的控制

定义

​ 进程控制的主要功能是对系统中所有的进程实施有效的管理,它具有创建新进程,撤销已有进程,实现进程状态切换等功能。进程控制的目的就是要实现进程状态的切换

进程状态

原语实现进程控制

​ 原语的特点就是在执行期间操作不允许中断,这种操作称为原子操作。

进程控制图解

在这里插入图片描述

调度与切换的区别

  • 调度是指决定资源分配给哪个进程的行为,是一种决策行为

  • 切换是指实际分配的行为,是执行行为

    一般来说现有资源调度,后有进程切换

进程创建原语

在这里插入图片描述

进程终止原语

在这里插入图片描述

进程的唤醒和阻塞原语

在这里插入图片描述

进程的切换原语

在这里插入图片描述

进程间的通信

定义

​ 进程通信就是指进程之间的信息交换。进程是系统资源分配的单位,因此各进程拥有的内存地址空间相互独立。为了保证安全,一个进程不能直接访问另一个进程的地址空间

进程通信的三种方式

共享存储

共享一块大家都可以访问的空间,一次只能有一个进程进行读或写操作

在这里插入图片描述

管道通信

在这里插入图片描述

消息传递

发送信息的进程将消息头写好,接受信息进程根据消息头读取信息或寻找信封是哪一个

在这里插入图片描述

线程与多线程模型

什么是线程

在这里插入图片描述

进程与线程

在这里插入图片描述

线程属性

在这里插入图片描述

线程实现方式

用户级线程

在这里插入图片描述

内核级线程

在这里插入图片描述

多线程模型

多对一模型

在这里插入图片描述

一对一模型

在这里插入图片描述

多对多模型

在这里插入图片描述

处理机调度

调度的基本概念

在这里插入图片描述

调度的三个层次

高级调度(作业调度)

在这里插入图片描述

中级调度

在这里插入图片描述

低级调度

在这里插入图片描述

三层调度的联系和对比

在这里插入图片描述

进程调度的时机

在这里插入图片描述

进程调度算法

先来先服务(FCFS)

在这里插入图片描述

短作业优先算法(SJF)

在这里插入图片描述

高响应比优先算法(HRRN)

img

时间片轮转算法

在这里插入图片描述

优先级调度算法

在这里插入图片描述

多级反馈队列调度算法

在这里插入图片描述

算法对比

image-20210121225805102

在这里插入图片描述

进程的同步与互斥

进程同步

  • 同步也称为直接制约关系
  • 在多道程序环境下,进程是并发执行的,不同进程之间存在着不同的相互制约关系。为了协调进程之间的相互制约关系,如等待、传递信息等,引入了进程同步的概念。进程同步是为了解决进程的异步问题
  • 例如,让系统计算1 + 2x3,假设系统产生两个进程: 一个是加法进程,一个是乘法进程。要让计算结果是正确的,一定要让加法进程发生在乘法进程之后,但实际上操作系统具有异步性,若不加以制约,加法进程发生在乘法进程之前是绝对有可能的,因此要制定一定的机制去约束加法进程,让它在乘法进程完成之后才发生

异步性:进程具有异步性的特征。异步性是指,各并发执行的进程以各自独立的、不可预知的速度向前推进。

进程互斥

  • 指当一个进程访问某临界资源时,另一个想要访问该临界资源的进程必须等待。当前访问临界资源的进程访问结束,释放该资源之后,另一个进程才能去访问临界资源
    • 临界资源:我们把一个时间段内只允许一个进程使用的资源称为临界资源。许多物理设备(比如摄像头、打印机)都属于临界资源。此外还有许多变量、数据、内存缓冲区等都属于临界资源
  • 对临界资源的访问,必须互斥地进行

在这里插入图片描述

  • 为了禁止两个进程同时进入临界区,需遵循以下准则

在这里插入图片描述

临界区进程互斥的实现方式

单标志法

在这里插入图片描述

在这里插入图片描述

双标志先检查法

在这里插入图片描述

双标志后检查法

在这里插入图片描述

Peterson算法

在这里插入图片描述

信号量机制

在这里插入图片描述

整型信号量

在这里插入图片描述

记录型信号量

在这里插入图片描述

信号量机制实现进程的互斥、同步与前驱关系

信号量机制实现进程互斥

在这里插入图片描述

信号量机制实现进程同步

在这里插入图片描述

在这里插入图片描述

信号量机制实现前驱关系

在这里插入图片描述

死锁

思维导图

在这里插入图片描述

死锁、饥饿、死循环的区别

在这里插入图片描述

在这里插入图片描述

死锁产生的四个必要条件

在这里插入图片描述

什么时候会发生死锁?

在这里插入图片描述

死锁的处理策略

在这里插入图片描述

预防死锁

  1. 破坏互斥条件

    在这里插入图片描述

  2. 破坏不可剥夺条件

    在这里插入图片描述

  3. 破坏请求和保持条件

    在这里插入图片描述

  4. 破坏循环等待条件

    img

避免死锁

安全序列,安全状态

在这里插入图片描述

避免系统进入不安全状态——银行家算法

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

死锁的检测和解除

死锁的检测

在这里插入图片描述

在这里插入图片描述

死锁的解除

在这里插入图片描述

内存管理

在这里插入图片描述

从写程序到程序运行—编译、链接、装入

在这里插入图片描述

装入的三种方式

绝对装入

在这里插入图片描述

静态重定位

在这里插入图片描述

动态重定位

在这里插入图片描述

链接的三种方式

静态链接

在这里插入图片描述

装入时动态链接

在这里插入图片描述

运行时动态链接

在这里插入图片描述

覆盖技术与交换技术

在这里插入图片描述

覆盖技术

在这里插入图片描述

在这里插入图片描述

交换技术

在这里插入图片描述

在这里插入图片描述

内存的分配与回收

在这里插入图片描述

在这里插入图片描述

单一连续分配

在这里插入图片描述

固定分区分配

在这里插入图片描述

动态分区分配

在这里插入图片描述

系统要用怎样的数据结构记录内存的使用情况

在这里插入图片描述

当多个空闲分区都能满足要求时,应该选择哪个分区进行分配

在这里插入图片描述

内部碎片与外部碎片

在这里插入图片描述

动态分区分配的四种算法

首次适应算法

在这里插入图片描述

最佳适应算法

在这里插入图片描述

最坏(大)适应算法

在这里插入图片描述

临近适应算法

在这里插入图片描述

四种算法归纳比较

在这里插入图片描述

分页存储

在这里插入图片描述

在这里插入图片描述

分页存储优势

在这里插入图片描述

分页存储管理的重要概念

在这里插入图片描述

虚拟内存

在这里插入图片描述

在这里插入图片描述

传统存储管理的特征、缺点

在这里插入图片描述

局部性原理

在这里插入图片描述

虚拟内存的定义和特征

在这里插入图片描述

如何实现虚拟内存技术

在这里插入图片描述