第二章 操作系统
章节重点
操作系统概述
进程管理
存储管理
文件管理
作业管理
设备管理
1、操作系统概述
计算机软件 = 系统软件 + 应用软件
- 系统软件:操作系统(核心)、程序设计语言、数据库系统
- 应用软件:为了解决某一类问题而研发的软件
程序设计语言:
机器语言:二进制代码。是机器唯一能直接识别和执行的语言。执行效率最高。
汇编语言:符号化的机器语言
高级语言:高级语言无法被机器识别,需要通过编译或转换成机器语言,才能被机器识别执行。
- 编译程序:把整个高级语言源程序转换成等价的机器语言目标程序
- 翻译程序:高级语言源程序输入一句翻译一句执行一句。不会形成对应的目标程序。
4GL语言:告诉系统要做什么,系统会自动帮我们实现。如:SQL
2、进程状态
程序是静态的概念,只要程序编写完成,程序就会存在。
进程是动态的,进程包含三个模块:程序块、进程控制块PCB(记录进程相关信息)、数据块
进程的状态
- 运行:正在被CPU执行
- 就绪:进程获得了除了CPU之外的所有资源。只有就绪状态的进程才能被CPU调度
- 等待:程序在执行的过程中等待某个事件发生。如果一直没发生,就一直等待。如果发生了,就发生状态变化
3、死锁问题
进程管理是操作系统的核心,若设计不当,就会出现死锁问题。如果一个进程在等待一个不可能发生的事情,则进程就死锁了。而如果一个或多个进程产生死锁,就会造成系统的死锁。
产生死锁的四个必要条件:当四个条件都同时满足时,就会产生死锁
- 互斥:某个资源在某个时刻只能被一个进程使用。一个进程在使用,其他进程就无法使用该资源。
- 保持和等待:一个进程本身就占有一种或多种资源,同时还有资源未得到满足。在不释放本身就占有的资源的情况下,等待其他进程释放需要的资源。
- 不剥夺:别人已经占有了某项资源,不能因为自己需要就去把别人的资源抢过来。只能等待别人主动释放。
- 环路等待: 存在一个进程链,使得每个进程都占有下一进程需要的至少一种资源。各自都在等待对方释放资源,各自又不主动释放资源。
若系统有若干互斥资源R,M个并发进程中每个都需要N个资源R,那么使系统不发生死锁的资源R的最少数目是:M * (N - 1)+ 1
假设M个进程都已经占有了N-1个资源,然后再添加一个资源就是最少资源数了
eg:若系统有若干互斥资源R,3个并发进程中每个都需要2个资源R,那么使系统不发生死锁的资源R的最少数目是多少个?
答:3 * (2-1)+1 = 4
解决死锁的方法:
- 死锁预防:不让四个死锁产生的必要条件同时成立。
- 死锁避免:银行家算法
- 死锁检测:定期检测是否有死锁产生。检测到有死锁就进行死锁解除
- 死锁解除:如果检测到有死锁产生,撤销死锁进程或者剥夺对应进程的资源
4、银行家算法
分配资源的原则
- 当一个进程对资源的最大需求量不超过系统中的资源总数时,可以接纳该进程
- 进程可以分期请求资源,但请求的总数不能超过最大需求量
- 当系统现有的资源不满足进程尚需资源数时,对进程的请求可以推迟分配,但总能时进程在有限的时间里得到解决
eg:假设系统中有三类互斥资源R1、R2、R3,可用资源分别是9,8,5。在T0时刻,系统中分别有P0,P1,P2,P3,P4和P5五个进程,这些进程对资源的最大需求量和已分配资源数如下图,如果进程按序列 (B)执行,那么系统是安全的。
进程\资源 | 最大需求量 R1,R2,R3 | 已分配资源数 R1,R2,R3 |
---|---|---|
P1 | 6,5,2 | 1,2,1 |
P2 | 2,2,1 | 2,1,1 |
P3 | 8,1,1 | 2,1,0 |
P4 | 1,2,1 | 1,2,0 |
P5 | 3,4,4 | 1,1,3 |
A:P1-P2-P4-P5-P3; B:P2-P4-P5-P1-P3; C:P2-P1-P4-P5-P3; D:P4-P2-P5-P1-P3
分析:
由进程资源表可知
- 各个进程还需要的资源R1,R2,R3分别是:P1:5,3,1;P2:0,1,0;P3:6,0,1;P4:0,0,1;P5:2,3,1。
- R1,R2,R3分别已分配:7,7,5。R1,R2,R3分别还剩下:2,1,0。
- 此时,剩下的资源(2,1,0)可以满足P2进程所需要的资源(0,1,0),所以执行P2。R1,R2,R3分别还剩下:2,0,0。
- P2执行完成后释放P2进程所需的最大资源(2,2,1),加上剩余的资源(2,0,0),此时R1,R2,R3分别还剩下:4,2,1。
- 此时,剩下的资源(4,2,1)可以满足P4(0,0,1),所以执行P4。R1,R2,R3分别还剩下:4,2,0。
- P4执行完成后释放P4进程所需的最大资源(1,2,1),加上剩余的资源(4,2,0),此时R1,R2,R3分别还剩下:5,4,1。
- 根据选项,可以选出B选项
5、进程管理
互斥:某一资源在同一时刻只允许一个访问者对其进行访问。间接制约
同步:多个进程相互协作。直接制约
临界区:每个进程中访问临界资源的那段代码称为临界区
信号量:特殊的变量,资源数量计数器,代表资源数量
互斥信号量:解决资源一次只能被一个进程访问占用的问题
同步信号量:代表资源个数
PV操作:
解决互斥和同步的问题,PV操作是分开来看的。P操作用于申请资源,V操作用于释放资源。
P操作:使S=S-1,若S>=0,该进程继续执行,否则该进程排入等待队列。
V操作:使S=S+1,若S<=0,唤醒等待队列中的一个进程。
互斥模型
互斥模型中的PV操作都是成对存在的
eg:多个进程共享一台打印机。互斥信号量S的初始值为1。
P(S); //当只有一个进程A来使用打印机的时候,S=S-1=0,S >=0,执行P操作。如果此时又来一个进程B需要执行打印机,S=S-1=-1,S<0,排入等待队列
使用打印机;
V(S); //执行完进程A后,释放进程A所占用的资源。S=S+1=0,S<=0,唤醒等待队列中的进程B
后续操作;
同步模型
eg:单缓冲区生产者,消费者问题。市场只能容纳一个产品。S1初值为1,S2初值为0。
生产者:
生产一个产品;
P(S1); //S1=S1-1=0,S1>=0,执行P操作
送产品到缓冲区;
V(S2); //S2=S2+1=1,S2>0。不进行V操作
消费者:
P(S2); //S2=S2-1=0,S2>=0,执行P操作
从缓冲区取产品;
V(S1); //S1=S1+1=1,S1>=0,执行P操作
消费产品;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VUsgj5dr-1651054748041)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220427160023694.png)]
答案:B、A
6、存储管理
作用提高主存的利用率
存储管理分为:
- 区域存储:实现数据的连续存储。数据需要多大的存储空间来存储,就给数据分配多大的连续空间来存放该数据。
- 段式存储:数据不连续存储。段和段之间的大小不一定
- 页式存储:数据不连续存储。页与页的大小固定。
页式存储
优点:利用率高,碎片小,分配及管理简单
缺点:增加了系统开销,可能产生抖动现象
页式存储的逻辑地址:页号+页内地址
- 页号的位数:一共可以有多少页。计算出对应的二进制位数,然后求出最大的十进制值
- 页号值:表示是第几页
- 页内地址的位数:表示页的大小
- 页内地址的数值:页内偏移值。从偏移量开始才是页面存储的数据
eg:某计算机页面大小为4K,进程的页面变换表如图所示,若进程的逻辑地址为2D16H,该地址经过变换后,物理地址为?若逻辑地址为3D16H,物理地址为?
页号 | 物理块号 |
---|---|
0 | 1 |
1 | 3 |
2 | 4 |
3 | 6 |
解:页内地址位数 = 2n = 4K = 12位
2D16H转换成二进制后 10 1101 0001 1010,逻辑地址=页号+页内地址,去除页内地址后剩下二进制为 10,转换成十进制为2。页号为2,对应的物理块为4。转换成二进制为100。完整逻辑地址为 100 1101 0001 1010,即4D16H
同理,逻辑地址3D16H转换成物理地址为:6D16H
页面置换算法:
- 先进先出算法FIFO
- 最佳置换算法OPT
- 最久未使用替换算法URL
7、文件管理
Linux系统只用一个根目录开始
绝对路径:从根目录开始,只有一个
相对路径:和当前目录有关
8、设备管理
数据传输控制方式:
程序控制方式:串行工作,按顺序执行。整个过程由CPU控制
程序中断方式:程序做好准备后会发送中断请求,CPU收到中断请求后会暂时中止当前进程,去处理该程序。等到程序处理完后,再回来继续处理被停止的进程。整个中断窦世友设备驱动程序进行的。数据传输过程需要CPU干预。
- 中断向量:
- 现场保护:中断的时候,会从当前程序停止,把停止的位置以栈的方式存储,就叫做“现场保护”
DMA方式:直接存储访问方式。是为了实现主存和外设之间的高速传输
- CPU只做初始化,数据传输过程中CPU不参与