软考(操作系统原理)

操作系统原理

  • 操作系统概述
    • 操作系统主要特征
  • 中断
    • 中断机制的产生
    • 中断的概念
    • 中断向量
    • 中断的分类
      • 内中断
      • 外中断
  • 1 进程
    • 1.1 进程的特征
    • 1.2 进程的组成
    • 1.2.1 进程控制块PCB
    • 1.3 进程和程序的区别
    • 1.4 系统进程和用户进程
    • 1.5 线程
      • 1.5.1 多线程结构进程的优点
      • 1.5.2 进程与线程的区别
      • 1.5.3 线程的类型
        • 1.5.3.1 用户级线程
        • 1.5.3.2 内核级线程
    • 1.6程序的顺序执行
    • 程序的并发执行和资源共享
    • 作业 程序 进程 任务之间的关系
  • 2. 进程的状态(重点)
    • 2.1 进程状态小结
    • 2.2 进程控制的原语
      • 2.2.1 进程创建的原语
      • 2.2.2 进程终止的原语
      • 2.2.3 进程的唤醒和阻塞原语
      • 进程的切换原语
    • 进程管理-前趋图
    • 进程的同步与互斥
    • *PV操作
    • *pv操作与前趋图
    • 死锁问题
      • *银行家算法(死锁的避免)
  • 3. *进程调度算法
    • 3.1 原则
      • 3.1.1 面向用户的原则
        • 3.1.1.1 周转时间
        • 3.1.1.2 响应时间(等待时间)
        • 3.1.1.3 最后期限
    • 3.2 进程调度
    • 3.3 处理机调度的类型
      • 3.3.1 三级调度之间的联系
    • 3.4 *进程调度算法类型(重点)
      • 3.4.1 * 先来先服务(FCFS)
        • 先来先服务例题
      • 3.4.2 短作业(进程)优先(SJF/SPF)
        • 短作业优先调度例题
      • 3.4.3 优先级
        • 3.4.3.1 非抢占优先级例子
        • 3.4.3.2 抢占优先级例子
      • 3.4.3.3 静态动态优先级
      • 3.4.4 * 最高响应比优先 HRRN
        • 最高响应比例题
      • 3.4.5 时间片轮转法 RR
        • 时间片轮转法例子
      • 3.4.6 最短剩余时间 SRT
        • 最短剩余时间例题
  • 4. 同步和互斥
    • 4.1 须知
      • 4.1.1 并发
      • 4.1.2 临界资源
      • 4.1.3 临界区
      • 4.1.4 死锁
      • 4.1.5 活锁
      • 4.1.6 饥饿
      • 4.1.7 原子操作
    • 4.2 互斥
    • 4.3 同步
      • 4.4 信号量
        • 4.4.1 信号量实现互斥基本原理
        • 4.4.2 信号量的分类
  • 5.死锁产生的必要条件和破坏
  • 6. * 银行家算法
    • 6.1 银行家算法中的数据结构
    • 6.2 银行家算法解题步骤
      • 6.2.1 安全算法
    • 6.3 银行家算法例题
  • 7. 虚拟存储管理
    • 7.1 程序的局部性原理
    • 7.2 虚拟存储器的定义
    • 7.3 虚拟存储器的特征
    • 7.4 虚拟存储管理实现技术
      • 7.4.1 请求分页存储管理技术
        • 7.4.1.1 最佳OPT
        • 7.4.1.2 先进先出FIFO
        • 7.4.1.3 最近最少使用LRU
  • 8. 内存管理
    • 8.1 地址转换
    • 8.2 内存空间的扩充(覆盖和交换)
      • 8.2.1 覆盖技术
      • 8.2.2 交换技术
  • 8.3 连续分配管理方式
      • 8.3.1 单一连续分配
      • 8.3.2 固定分区分配
        • 8.3.2.1 分区大小相等
        • 8.3.2.2 分区大小不相等
      • 8.3.3 动态分区分配
      • 8.3.4 动态碎片和外部碎片以及紧凑
    • 8.4 动态重定位
    • 8.4 *动态分区分配算法
      • 8.4.1 首次适应算法
      • 8.4.2 临近适应算法
      • 8.4.3 最佳适应算法
      • 8.4.4 最坏适应算法
  • 9. 非连续分配管理方式
    • 9. 1 分页存储管理
      • 9.1.1 基本概念
      • 9.1.2 地址的转换
      • 9.1.3 页表
    • 9. 2 分段存储管理
    • 分页和分段区别
  • 文件管理
    • 顺序文件
    • 索引文件
    • 索引顺序文件
    • 多级索引顺序文件
  • 索引文件结构

操作系统概述

软考(操作系统原理)_第1张图片

操作系统主要特征

  1. 并发性
  2. 共享性
  3. 异步性
  4. 虚拟性

中断

中断机制的产生

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

中断的概念

发生中断,就意味着需要操作系统介入工作,cpu会立即进入核心态
同时,中断也是用户唯一进入核心态的途径

中断向量

为了提高响应中断的速度,通常把所有中断服务程序的入口地址汇集为中断向量表

中断的分类

内中断

信号来源cpu内部,与当前执行的执行有关

外中断

信号来源自cpu外部,与当前指令无关,一般是I/O操作,或者用户自己强行停止一个进程而产生的中断

1 进程

https://www.cnblogs.com/IvesHe/p/4418300.html

  1. 是操作系统最核心的概念之一
  2. 是操作系统要面对的最核心的管理对象
  3. 是占用CPU资源和其他资源的实体

是一个具以下特征的活动:一组指令序列的执行,一个当前状态和相关的系统资源集

1.1 进程的特征

  1. 动态特征:生命周期
  2. 并发特征:在一个时间段内都处在宏观的运行状态
  3. 独立特征:独立占用资源,独立参与CPU调度
  4. 异步特征:运行推进速度不可预知
  5. 结构特征:PCB+进程体

1.2 进程的组成

软考(操作系统原理)_第2张图片

1.2.1 进程控制块PCB

软考(操作系统原理)_第3张图片

1.3 进程和程序的区别

  1. 程序是指令集合,是静态概念,进程是程序在处理机上的一次执行过程,是动态的概念
  2. 进程是一个独立的运行单位,能与其它进程并发执行,而程序则不可以并发执行
  3. 进程是进行计算机资源分配的基本单位,也是进行处理机调度的基本单位
  4. 一个程序可以作为多个进程的运行程序,这些进程可以同时存在,而他们使用的是同一程序

1.4 系统进程和用户进程

进程分为系统进程和用户进程,其区别如下:

  1. 系统进程可以独占分配给它们的资源,也能以最高优先级运行,而用户进程需要通过系统服务请求(即系统调用)的方式来竞争使用系统资源
  2. 用户进程不能直接I/O操作,而系统进程是可以的
  3. 系统进程在内核态下活动,而用户进程则是在用户态下活动

1.5 线程

线程是现代操作系统引入的一种执行实体,也称“轻型进程”,是进程的组成部分,进程是资源占有单位,线程只是CPU调度单位

1.5.1 多线程结构进程的优点

  1. 快速线程切换
  2. 通信易于实现
  3. 减少管理开销
  4. 并发程度提高

1.5.2 进程与线程的区别

进程是个独立的实体单位:
独立占用资源:进程拥有对资源的控制权或所有权
独立参与调度/执行:进程是一个可被操作系统调度和分配的单位
线程仅是分派(调度运行)的单位:
线程不是单独占用资源的代为,线程共享其所属进程的资源

1.5.3 线程的类型

分为用户级线程和内核级线程

1.5.3.1 用户级线程

线程的创建,撤销和切换都不利用系统调度来实现,线程与内核无关,内核也不着线程的存在

1.5.3.2 内核级线程

依赖于内核,线程的创建,撤销和切换都由内核实现,在内核中有线程控制块(TCB),内核根据TCB感知线程的存在,并对线程进行控制

1.6程序的顺序执行

在早期的单道程序计算机系统中,一次只能运行一个程序,当有多个程序需要运行时,程序的执行方式必定的顺序的
软考(操作系统原理)_第4张图片
其程序顺序执行的特征如下:

  • 顺序性
  • 封闭性
  • 可再现性

程序的并发执行和资源共享

在这里插入图片描述
程序的并发执行具有的特征如下:

  • 间断性
  • 失去封闭性
  • 不可再现性

作业 程序 进程 任务之间的关系

软考(操作系统原理)_第5张图片

2. 进程的状态(重点)

进程在运行过程中通常有三种基本状态,分别是

  1. 就绪状态
  2. 运行状态
  3. 阻塞状态
    进程在执行过程中的状态会不断变化,三种基本状态之间的转换关系如下图
    软考(操作系统原理)_第6张图片
    引起进程状态转换的原因可能如下:
    软考(操作系统原理)_第7张图片

2.1 进程状态小结

软考(操作系统原理)_第8张图片

2.2 进程控制的原语

人话就是孔明原语目的是建立,删除,修改PCB

2.2.1 进程创建的原语

软考(操作系统原理)_第9张图片

2.2.2 进程终止的原语

软考(操作系统原理)_第10张图片

2.2.3 进程的唤醒和阻塞原语

软考(操作系统原理)_第11张图片

进程的切换原语

软考(操作系统原理)_第12张图片

进程管理-前趋图

软考(操作系统原理)_第13张图片

进程的同步与互斥

软考(操作系统原理)_第14张图片

*PV操作

所谓的pv操作是属于操作系统中的一种同步机制,实现对于并发进程中临界区的管理,实在难以理解的话,可以简单理解成P为阻塞,V为通知,如果S信号量初始值为0的话

  • P操作:申请资源操作
  • V操作:释放资源操作
  • 信号量S:用来记录资源数量,看是否能满足申请资源的操作。例如:删除线格式 S=3,表示三个可用空闲资源,S<0表示可用空闲资源无,进程申请要进入等待队列中。

软考(操作系统原理)_第15张图片
软考(操作系统原理)_第16张图片
例题:
软考(操作系统原理)_第17张图片

*pv操作与前趋图

软考(操作系统原理)_第18张图片
软考(操作系统原理)_第19张图片
答案是 C B A

死锁问题

软考(操作系统原理)_第20张图片
答案是13个
软考(操作系统原理)_第21张图片
可能导致死锁的四大条件:

  1. 互斥:如果资源是共享所有进程可以同时访问那么就没必要继续探究死锁问题了
  2. 保持和等待:各个进程会保持自己的资源并且等待其他进程释放更多的进程以获得
  3. 不剥夺:系统不会把已经分配给某进程的资源重新拿回来
  4. 环路等待:比如三个进程,分别是A,B,C,A在等B释放资源,B在等C释放资源,C在等A释放资源,形成了闭环。

而解决死锁问题就有两种方案,一种是死锁的预防,例如如果采用预防,资源根本就不是互斥打破了四大条件,就不用继续往下谈死锁的内容,亦或者资源根本就不会等待,进程自己等久了自己就把资源释放给别人也打破了四大条件,另一种是死锁的避免,有序资源分配法,如同字面意思有序一个一个的将资源分配给进程,但这样一来会发现,资源利用率会比较低,而更加灵活有效的是银行家算法

*银行家算法(死锁的避免)

软考(操作系统原理)_第22张图片

软考(操作系统原理)_第23张图片
答案是B

3. *进程调度算法

3.1 原则

满足用户的要求:响应时间(等待时间),周转时间,截止时间
满足系统的要求:系统吞吐量,处理机利用率,各类资源的平衡使用,公平性及优先级

3.1.1 面向用户的原则

3.1.1.1 周转时间

从提交到完成之间的时间间隔
周转时间包括作业在外存后备队列上等待调度的时间,进程在就绪队列上等待进程调度的时间,进程在CPU上执行的时间,以及进程等待I/O操作完成的时间四个部分

公式是:
周转时间=作业完成时间-作业提交时间
平均周转时间=(作业1的周转时间+…+作业N的周转时间)/n
带权周转时间=作业周转时间/作业实际运行时间
平均带权周转时间=(作业1的带权周转时间+…+作业N的带权周转时间)/n

PS:带权周转时间就是指作业周转时间与作业实际运行的时间的比值

3.1.1.2 响应时间(等待时间)

从提交到开始接受相应之间的时间间隔
响应时间是指从用户提交一个请求开始,到系统首次产生相应为止的时间间隔。
输入的请求传送到处理机的时间+处理机对请求信息进行处理的时间+将响应结果发送到输出终端的时间=响应时间

3.1.1.3 最后期限

进程完成的最后期限

3.2 进程调度

进程调度的方式可分为非抢占方式抢占方法两种
软考(操作系统原理)_第24张图片

3.3 处理机调度的类型

分为长程调度(作业调度队列),又称作业调度,中程调度(进程调度队列),又称中级调度,短程调度(进程调度队列),又称进程调度

软考(操作系统原理)_第25张图片

3.3.1 三级调度之间的联系

  1. 作业调度(长程调度)为进程活动做准备,进程调度(短程调度)使进程正常活动起来,中级调度(中程调度)将暂时不能运行的进程挂起,中级调度(中程调度)处于作业调度(长程调度)和进程调度(短程调度)之间
  2. 作业调度次数少,中级调度次数略多,进程调度频率最高
  3. 进程调度是最基本的,不可或缺

3.4 *进程调度算法类型(重点)

软考(操作系统原理)_第26张图片

3.4.1 * 先来先服务(FCFS)

属于最简单的调度算法,可用于作业调度,也可用于进程调度,其算法是非抢占式的
这里需要先去了解一下 3.1.1 的用户原则,即可很快的理解题目该如何做
反正需要知道的是
等待时间=开始时间-提交时间
周转时间=完成时间-提交时间
带权周转时间=(完成时间-提交时间)/ 运行时间
带平均的话,除作业数量就好

先来先服务例题

软考(操作系统原理)_第27张图片
其执行顺序时间如下
在这里插入图片描述
通过
周转时间=完成时间-提交时间
带权周转时间=(完成时间-提交时间)/ 运行时间

来计算

周转时间 带权周转时间
A 3 1
B 7 1.17
C 9 2.25
D 12 2.4
E 12 6

然后平均一下得出
在这里插入图片描述

3.4.2 短作业(进程)优先(SJF/SPF)

最短作业优先调度是指对短作业或短进程优先调度的算法,说人话,就是选择一个运行时间最短的进程拿去执行就对了

短作业优先调度例题

软考(操作系统原理)_第28张图片
按照最短优先的顺序时间如下:
在这里插入图片描述
通过
周转时间=完成时间-提交时间
带权周转时间=(完成时间-提交时间)/ 运行时间

来计算

周转时间 带权周转时间
A 3 1
B 7 1.17
C 11 2.75
D 14 2.8
E 3 1.5

在这里插入图片描述

3.4.3 优先级

人话,根据线程优先级来排序运行顺序,分抢占和非抢占的,非抢占的简单很多,优先级高的大哥属于有素质的那种,不会插队,反正小弟比大哥先来并且已经运行的话,那大哥得等着不能强行把小弟腾走自己运行,但是小弟如果没运行的话得给大哥让路,抢占的话就是大哥比较霸道了,小弟哪怕先来哪怕运行了,都得给大哥滚蛋。

3.4.3.1 非抢占优先级例子

在这里插入图片描述
根据不抢占优先级优先原则,其执行顺序时间如下
在这里插入图片描述
通过
周转时间=完成时间-提交时间
带权周转时间=(完成时间-提交时间)/ 运行时间

来计算

周转时间 带权周转时间
A 3 1
B 7 1.17
C 14 3.5
D 8 1.6
E 12 6

平均如下:
在这里插入图片描述

3.4.3.2 抢占优先级例子

软考(操作系统原理)_第29张图片
根据抢占优先级优先原则,其执行顺序时间如下
在这里插入图片描述
通过
周转时间=完成时间-提交时间
带权周转时间=(完成时间-提交时间)/ 运行时间

来计算

周转时间 带权周转时间
A 14 4.67
B 11 1.83
C 14 3.5
D 5 1
E 12 6

平均如下:
软考(操作系统原理)_第30张图片

3.4.3.3 静态动态优先级

静态优先级:人话就是创建的时候确定了,在进程整个运行期间都不再修改
动态优先级:人话就是优先级会变,在运行前会确定一个优先级,根据等待时间的长短,执行时间的多少,输入输出信息量的大小得出一个优先级

3.4.4 * 最高响应比优先 HRRN

人话来解释的话就是当你有好几个进程可以跟在后面的时候,去算每个进程跟在后面的带权周转时间(响应比),选个最大的跟,以此进行的排序
响应比的计算方式
软考(操作系统原理)_第31张图片

最高响应比例题

软考(操作系统原理)_第32张图片
A先到,执行完后,发现能运行的只有B,B运行,等到B运行完后发现有C,D,E可以运行,这时候进行最高响应比计算

如果是C排在后面

A B C
3 9 13

其带权周转时间为 (13-4)/4 =9/4

如果是D排在后面

A B D
3 9 14

其带权周转时间为 (14-6)/5 =8/5
如果是E排在后面

A B C
3 9 11

其带权周转时间为 (11-8)/2 =3/2

根据最高响应比优先原则,所以跟在AB后的是C,接着就是再重新判断D和E的响应比来判断谁跟再ABC的后面

如果是D排在后面

A B C D
3 9 13 18

其带权周转时间为 (18-6)/5 =12/5
如果是E排在后面

A B C E
3 9 13 15

其带权周转时间为 (15-8)/2 =7/2

根据最高响应比优先原则,所以跟在ABC的是E再次才是D,得出排序如下:
软考(操作系统原理)_第33张图片
通过
周转时间=完成时间-提交时间
带权周转时间=(完成时间-提交时间)/ 运行时间

来计算

周转时间 带权周转时间
A 3 1
B 7 1.17
C 9 2.25
D 14 2.8
E 7 3.5

平均如下:在这里插入图片描述

3.4.5 时间片轮转法 RR

人话就是,每个进程运行后,一旦时间片用完,也就是时间用完,则主动退出让下一个排队的进程进来,如此反复

时间片轮转法例子

时间片为4
软考(操作系统原理)_第34张图片
其排序如下:
在这里插入图片描述
通过
周转时间=完成时间-提交时间
带权周转时间=(完成时间-提交时间)/ 运行时间

来计算

周转时间 带权周转时间
A 3 1
B 5 2.5
C 7 1.75
D 14 2.8
E 11 5.5

其平均如下:
在这里插入图片描述

3.4.6 最短剩余时间 SRT

人话:哪个进程服务时间当前最少先运行哪个

最短剩余时间例题

软考(操作系统原理)_第35张图片
其排序结果如下:
在这里插入图片描述
通过
周转时间=完成时间-提交时间
带权周转时间=(完成时间-提交时间)/ 运行时间

来计算

周转时间 带权周转时间
A 3 1
B 13 2.17
C 4 2
D 14 2.8
E 2 1

其平均如下:
在这里插入图片描述

4. 同步和互斥

4.1 须知

4.1.1 并发

  1. 单处理多道程序设计系统中,多个进程交替执行
  2. 多个并发进程在一个时间段内都处于运行状态
  3. 共享系统资源
  4. 每个进程都”走走停停“
  5. 并发带来了异步性

4.1.2 临界资源

  1. 也称互斥资源
  2. 一种一次只能为一个进程服务的共享资源

4.1.3 临界区

  1. 使用临界资源的代码段
  2. 使用同一临界资源的不同的代码段叫做相关临界区
  3. 当一个进程已经在临界区运行时,也就是在使用临界资源,其他进程不能进入相关临界区

4.1.4 死锁

两个或两个以上的进程,因其中的每个进程都在等待其他进程做完某些事情而不能继续执行,所有进程都阻塞等待,而且是永远阻塞等待
人话就是a等b释放资源,b等a释放资源,就会造成死锁

4.1.5 活锁

两个或两个以上进程为了响应其他进程中的变化而持续改变自己的状态,但不做有用的工作

4.1.6 饥饿

一个可运行的进程被调度程序无期限忽略,不被调度执行的情形
人话就是,孩子饿坏了却依旧不给饭吃

4.1.7 原子操作

保证指令序列要么作为一个组来执行,要么都不执行
人话就是:要画个圆结果你只画了一半你能说它是圆吗?反正就是执行要么运行完,要么一点都别动

4.2 互斥

  1. 当一个进程在临界区访问临界资源时,其他进程不能进入相关临界区访问该资源
  2. 临界资源一个时刻只允许一个进程使用
  3. 进程使用该临界资源的顺序没有约束
  4. 体现竞争关系

4.3 同步

  1. 不但不能同时使用临界资源,还得有严格的使用的先后顺序
  2. 体现协作关系

4.4 信号量

4.4.1 信号量实现互斥基本原理

两个或多个进程可以通过传递信号进行合作,可以迫使进程在某个位置暂时停止执行(阻塞等待),直到它收到一个可以“向前推进”的信号(被唤醒)

而上述实现信号灯作用的信号称呼为信号量

4.4.2 信号量的分类
  1. 二进制信号量(binary semaphore):只允许信号量取0或1值,其同时只能被一个线程获取。

  2. 整型信号量(integer semaphore):信号量取值是整数,它可以被多个线程同时获得,直到信号量的值变为0。

  3. 记录型信号量(record semaphore):每个信号量s除一个整数值value(计数)外,还有一个等待队列List,其中是阻塞在该信号量的各个线程的标识。当信号量被释放一个,值被加一后,系统自动从等待队列中唤醒一个等待中的线程,让其获得信号量,同时信号量再减一。

5.死锁产生的必要条件和破坏

  1. 资源独占
  2. 不可抢占
  3. 保持申请
  4. 循环等待

仅上述条件都满足时,死锁才有可能发生,破坏上述任意一个条件也可以消除死锁,但是通常指破坏循环等待,因为:

  • 互斥条件是临界资源的固有属性,保证进程互斥访问临界资源是必要的,不能因为互斥会导致死锁而禁止互斥
  • “占有并等待”条件很多时候都是存在的,也是合理的,比如一个进程假设要有两个临界资源才能继续执行,不可能要求进程每次申请新资源时,必须释放已占用的资源
  • “非剥夺”条件也属于该保留的,允许剥夺资源是指那些,一旦剥夺中断进程的执行后,可以从断点恢复执行的资源,否则,属于非剥夺资源
  • 而“循环等待”,也可以说是环路等待,是存在上三个条件同时存在时可能会出现的情况,只要系统出现循环等待,则一定出现死锁

6. * 银行家算法

  • 每当进程提出资源请求并且系统的资源能够满足请求时,系统尝试着满足此次请求,然后检查分配后系统状态是否还处于安全状态,如果处于安全状态则可以分配,不是安全状态则不分配
  • 银行家算法执行的前提条件:进程必须预先提出自己的最大资源数量请求,这一数量不能超过系统资源的总数

6.1 银行家算法中的数据结构

  • Available : 表示可用资源的数量,如果Available[j]=k,表示系统中现有j类资源k个。
  • Max : 一个n x m的 矩阵,指得是 n 个进程对m类资源的最大需求量,如果Max[i,j]=k,则表示进程Pi需要j类资源k个。
  • Allocation : 一个n x m的 矩阵,用来定义每个进程现在所获得资源的各类数量,如果Allocation [i,j]=k,则表示进程Pi当前分配到k个j类资源。
  • Need : 一个n x m的 矩阵,用来表示每个进程还需要的各类资源的数量,如果Need [i, j]=k,则表示进程Pi尚需k个j类资源才能完成其任务。

好了,人话来讲,Available 是可用资源还剩多少,Max是进程的最大需求数,Allocation是已经分配给该进程的资源数量,Need是进程还需要多少资源数量
MAX-Allocation=Need

6.2 银行家算法解题步骤

  1. 请求资源不可以超过进程还需要的资源数量,超过则拒绝申请并阻塞不执行下一步
  2. 请求资源不可以超过系统剩余资源数量,超过则阻塞不执行下一步
  3. 执行安全算法,检查如果系统分配资源给进程,系统是否仍处于安全状态,若安全则分配,不安全则阻塞进程

6.2.1 安全算法

  1. 将可用资源扔给一个进程使用,并命名为 work ,如果可用资源大于需要资源,即work 大于 need则该进程的状态为true,然后将资源回收,即将woke+Allocation拿回来,再放到下一个进程里,判断是否大于Need,以此类推

6.3 银行家算法例题

假设系统中有5个进程{P1、P2、P3、P4、P5}和4种类型的资源{R1,R2,R3、R4},资源的数量分别为8、5、9、7,在T0时刻的资源分配情况如下表所示
软考(操作系统原理)_第36张图片

在这里插入图片描述

work Need Allocation Work+Allocation Finish
P3 1 2 2 2 1 1 0 2 4 0 0 3 5 2 2 5 true
P1 5 2 2 5 1 2 0 3 2 0 1 1 7 2 3 6 true
P2 7 2 3 6 0 1 3 1 0 1 2 1 7 3 5 7 true
P4 7 3 5 7 1 3 2 0 0 2 1 0 7 5 6 7 true
P5 7 5 6 7 2 0 0 3 1 0 3 0 8 5 9 7 true

答:T0时刻安全,因为存在安全序列,系统处于安全状态

答案:能够分配

7. 虚拟存储管理

之所以引入虚拟存储管理是因为传统存储管理方式有两个特征

  1. 一次性:要求将作业全部装入内存才能运行,但是许多作业每次运行时,并非要用到全部程序和数据,并且有的作业太大,内存装不下而无法运行和统中作业数量太多,因系统容量优先只能让少数作业先运行两个问题
  2. 驻留性:作业装入内存直到运行结束,便一直驻留在内存中,尽管进程在运行中会因为I/O等原因而长期处于阻塞状态,或有的程序模块在运行过一次后就不再需要,但它们都仍将继续占用宝贵的内存资源。

7.1 程序的局部性原理

指程序在执行过程中的一个较短时间内,所执行的指令地址或操作数地址分别局限于一定的存储区域中。又可细分时间局部性和空间局部性。

  • 时间局限性:程序中的的某条指令一旦执行,不久后会再次执行。
  • 空间局限性:程序一旦访问某存储单元,不久后会访问其附近的存储单元。

7.2 虚拟存储器的定义

所谓虚拟存储器是指具有请求调入功能置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统

7.3 虚拟存储器的特征

  • 离散性
    作业不装入连续的存储空间,内存分配采用离散分配方
  • 多次性
    一个作业被分割,被多次调入内存。
  • 对换性
    作业在运行过程中换进、换出内存。
  • 虚拟性
    从逻辑上扩充了内存的容量。

7.4 虚拟存储管理实现技术

  • 使用分页实现虚存
  • 使用分段实现虚存
  • 使用段页式实现虚存

7.4.1 请求分页存储管理技术

它的基本思想是:在进程开始运行之前,不是装入全部页面,而是装入部分页面,之后根据进程运行的需要,动态装入其它页面。当内存空间已满,而又需要装入新的页面时,根据某种算法淘汰某个页面,以便装入新的页面。

7.4.1.1 最佳OPT

人话:预知算法,理论上很好,实际上实现不了,作为标准来衡量其他算法,就是当需要置换页框的时候,去预知当前内存已有的哪个是最晚才能遇到的页框,然后将其替换
例题:
软考(操作系统原理)_第37张图片
软考(操作系统原理)_第38张图片

7.4.1.2 先进先出FIFO

人话就是:置换在内存中时间最长的页
软考(操作系统原理)_第39张图片
软考(操作系统原理)_第40张图片

7.4.1.3 最近最少使用LRU

置换内存中上次使用距当前最远的页,是属于性能接近于OPT,但开销很大,难以实现的置换法。
软考(操作系统原理)_第41张图片
软考(操作系统原理)_第42张图片

8. 内存管理

软考(操作系统原理)_第43张图片

8.1 地址转换

重定向,将逻辑路径转换为物理路径

8.2 内存空间的扩充(覆盖和交换)

8.2.1 覆盖技术

软考(操作系统原理)_第44张图片

软考(操作系统原理)_第45张图片

8.2.2 交换技术

其实就是中级调度,内存空间紧张的时候将某些进程暂时换出外村,把外村中某些已具备运行条件的进程换入内存

8.3 连续分配管理方式

连续分配:指为用户进程分配的必须是一个连续的内存空间

8.3.1 单一连续分配

内存会被分为系统区和用户区,系统区通常位于内存的低地址部分,用于存在操作系统相关数据,用户区存放用户进程相关数据,内存中只能有一道用户程序,用户程序独占整个用户区空间

  • 优点:实现简单,无外部碎片,可以采用覆盖技术扩充内存
  • 缺点:只能用于单用户,单任务的操作系统中,有内部碎片(下图蓝蓝的部分全是内部碎片),存储器利用率低下

软考(操作系统原理)_第46张图片

8.3.2 固定分区分配

为了支持多道程序的系统,为了能在内存中装入多道程序,且程序之间不会互相干扰,于是将整个用户空间划分为若干个固定大小的分区,在每个分区只装入一道作业

8.3.2.1 分区大小相等

软考(操作系统原理)_第47张图片

8.3.2.2 分区大小不相等

软考(操作系统原理)_第48张图片

8.3.3 动态分区分配

又称可变分区分配,这种分配方式不会预先划分内存分区,而是在进程装入内存时,根据进程的大小动态地建立分区,并使分区的大小和数目是可变的

8.3.4 动态碎片和外部碎片以及紧凑

  • 内部碎片,分配给某进程的内部区域,有些部分没用上
  • 外部碎片,是指内存中某些空闲分区由于太小了而难以利用
  • 紧凑技术,人话就是将细小的外部碎片凑到一起将其能用的技术

8.4 动态重定位

进程在内存中连续存放是,通过动态重定位来实现地址的转换

8.4 *动态分区分配算法

8.4.1 首次适应算法

每次都从低地址开始查找,找到第一个能够满足大小的空闲分区,四种算法中,首次适应的综合效果是最好的(没想到吧)

8.4.2 临近适应算法

首次适应算法的up版,首次适应每次都是从开头开始找,执行多后前面占的差不多,后面却还有剩,每次都要经过前面的分区,增加了查找的开销,所以这是从上次查找结束的位置继续往下查找的版本

8.4.3 最佳适应算法

人话,优先使用更小的空闲区,缺点是每次都选最小的分区进行分配,会留下越来越多的很小的难以利用的内存块,会产生很多的外部碎片

8.4.4 最坏适应算法

人话,和最佳相反,选最大的空闲区,缺点是会导致较大的连续空闲区迅速用完,如果之后有大进程进来,就没有内存分区可用了

9. 非连续分配管理方式

产生的原因:如果采用连续分配要么会产生大量的内部碎片亦或者外部碎片,所以该采用不连续的内存分配方法,基于着思想产生了“非连续分配方式”,或称“离散分配方式”

9. 1 分页存储管理

9.1.1 基本概念

  • 内存被划分程大小固定相等的块(Frame 帧,页框,主存块),且块相对比较小
  • 每个进程装入时被分成同样大小的页,一页装入一帧
  • 整个进程被离散装入到多个不连续的帧
    将内存空间分为一个一个大小相等的分区(比如:每个分区4kb),每个分区就是一个“页框”,或称“页帧”,“内存块”,“物理块”,每个页框有个编号,即“页框号“,页框号从零开始
    软考(操作系统原理)_第49张图片
    将用户进程的地址空间也分为与页框大小相等的一个一个区域,称为页或页面,每个页面也有编号(最后一个页面可能没有一个页框那样大,因此,页框不能太大,否则可能产生过大的内部碎片)
    软考(操作系统原理)_第50张图片
    接着操作系统以页框为单位将进程的页面分配进去,可以说是页面和页框是一一对应的关系
    软考(操作系统原理)_第51张图片
    因为分页是离散存储的,所以操作系统为了需要知道每个页面在内存中存放的位置,为每个进程建立一张页表
    软考(操作系统原理)_第52张图片

9.1.2 地址的转换

软考(操作系统原理)_第53张图片
软考(操作系统原理)_第54张图片
就是通过页面长度换算称2进制,然后前面是页号,后面就是页内地址
软考(操作系统原理)_第55张图片

9.1.3 页表

因为分页是离散存储的,所以操作系统为了需要知道每个页面在内存中存放的位置,为每个进程建立一张页表
软考(操作系统原理)_第56张图片

9. 2 分段存储管理

与分页最大的区别就是离散分配时所分配地址空间的基本单位不同

  • 把程序和其相关的数据划分到几个段中
  • 段有一个最大长度限制,但不要求所有程序的所有段的长度都相等
  • 分段与动态分区的区别:一个进程可以占据多个分区,一个程序占据的多个分区不需要是连续的
    软考(操作系统原理)_第57张图片

分页和分段区别

  1. 页是信息的物理单位,而段时信息的逻辑单位,分页时为了实现离散分配,减少内存碎片,提高内存利用率
  2. 页的大小由系统确定,由系统把逻辑定制分为页号和页内地址两部分,整个系统只能有一种大小的页面,而段的长度却不固定,它取决于用户的程序,通常由编译程序对源代码进行编译时,根据程序的性质
  3. 分页的进程地址空间时一维的,即单一的线性空间,而分段的进程地址空间时二维的,由段号和段内地址两部分决定

文件管理

按文件是否有结构分类,可以分为无结构文件和有结构文件两种
无结构文件:文件内部的数据就是一系列二进制流或字符流组成,又称“流式文件”,如:.txt文件
有结构文件:由一组相似的记录组成,又称“记录式文件”,每条记录又若干个数据项组成,数据库表文件,一般来说,每条记录有一个数据项,根据各条记录的长度是否相当,又可分为定长记录,和可变长记录两种
软考(操作系统原理)_第58张图片

顺序文件

文件中的记录一个接一个地顺序排列(逻辑上),记录可以时定长的或可变长的,各个记录物理上可以顺序存储链式存储
姑且当作是数组和链表
而顺序存储又有两种结构,分别是串结构和顺序结构

  • 串结构:记录之间的顺序与关键字无关(通常按照记录存入的时间决定记录的顺序)
  • 顺序结构:记录之间的顺序按关键字顺序排列
    软考(操作系统原理)_第59张图片
    两者的区别
    软考(操作系统原理)_第60张图片

索引文件

对于可变长记录文件,要找到第i个记录,必须先顺序查找前i-1个记录,但是很多场景中又必须使用可变长记录,索引文件就是为了解决这个问题产生的
建立一张索引表以加快文件检索速度,每条记录对应一个索引项
软考(操作系统原理)_第61张图片
索引表本身是定长记录的顺序表,因此可以很快速的找到第i个记录对应的索引项。
其缺点:
每个记录对应一个索引表象,因此索引表可能会很大,比如每个记录平均8B,而每个索引表项占32个字节,那么索引表都要比文件本身大四倍,存储空间的利用率大下降,

索引顺序文件

索引顺序文件是索引文件和顺序文件思想的结合。
索引顺序文件中,同样会为文件建立一张索引表,但与索引文件不同的是,并不是每个记录对应一个索引表项,而是一组记录对应一个索引表项,人话来讲,就是先将文件进行分组然后再用一个索引来对应它
软考(操作系统原理)_第62张图片
类似上图先将名字全部分组,后各用一个索引对应它,如下图:
软考(操作系统原理)_第63张图片
索引顺序文件的效率分析软考(操作系统原理)_第64张图片

多级索引顺序文件

为了进一步提高检索效率,可以为顺序文件建立多级索引表,人话来讲就是,在索引顺序文件的基础上,再将索引项进行分组,然后再多一个顶级索引表的玩意以一个对一组索引项的形式,就是套娃
软考(操作系统原理)_第65张图片

索引文件结构

规定索引节点0-9为直接索引,10节点是一级间接索引,11是二级间接索引,12是三级
软考(操作系统原理)_第66张图片

默认题目没讲就是十三个盘块,假设一个物理盘块是4k的大小,如果采用直接索引
4k x 13 =52 k
那么该物理盘只能有52k的容量
假设第十个节点的盘口为4字节,那么它能存4k除以4字节总共1024个地址的物理盘块
那么即4k(物理盘口容量) 乘以1024 (地址数量)就是一级索引的容量大小
二级索引节点即多乘以一个1024(地址数量)
简单来说,求解很简单,求得该节点能存多少个地址数量然后乘以物理盘块容量就好了,如果是二级三级,那么就多乘个地址数量

你可能感兴趣的:(笔记,操作系统)