第一章
判断操作系统类型
操作系统按功能可以分为
-
批处理操作系统
将选中的若干作业调入内存以多道方式投入运行。
优点是系统吞吐量大,资源利用率高。
不具有交互性,这是其缺点。
-
分时操作系统 --------- 人机交互 共享主机
采用“时间片”、动态优先数等方式使CPU轮流为多个用户终端或多个任务服务。
主要特点:
多路调制性 独占性 及时性 交互性
-
实时操作系统
响应速度 快,可靠性要求 高
更强调系统的 安全性 和 可靠性
不具备分时系统的强交互性。
主要特点是:
- 对响应时间的实时要求(可高可低)。
- 系统可靠性和安全性放在第一位,系统效率放在次要地位,交互性差或根本没有交互性。
- 系统整体性强。很多实时系统同时又是分布式系统,具有分布式系统整体性强的优点。
类型:工业武器控制系统、信息查询系统、多媒体系统、嵌入式系统
操作系统主要特征
并发性(进程)、共享性、虚拟性、异步性
操作系统主要功能
处理机管理、存储器管理、设备管理、文件管理
1.为什么说操作系统实现了对计算机资源的抽象?
OS首先在裸机上覆盖一层I/O设备管理软件,实现了对计算机硬件操作的第一层次抽象;在第一层软件上再覆盖文件管理软件,实现了对硬件资源操作的第二层次抽象。OS 通过在计算机硬件上安装多层系统软件,增强了系统功能,隐藏了对硬件操作的细节,由它们共同实现了对计算机资源的抽象。
2.实现分时系统的关键问题是什么?应如何解决?
关键问题是当用户在自己的终端上键入命令时,系统应能及时接收并及时处理该命令,
在用户能接受的时延内将结果返回给用户。
解决方法:针对及时接收问题,可以在系统中设置多路卡,使主机能同时接收用户从各个终
端上输入的数据;为每个终端配置缓冲区,暂存用户键入的命令或数据。针对及时处理问题,
应使所有的用户作业都直接进入内存,并且为每个作业分配一个时间片,允许作业只在自己
的时间片内运行,这样在不长的时间内,能使每个作业都运行一次。
3.OS有哪几大特征?其最基本的特征是什么?
并发性、共享性、虚拟性和异步性四个基本特征;最基本的特征是并发性和共享性。
4.何谓微内核技术?在微内核中通常提供了哪些功能?
把操作系统中更多的成分和功能放到更高的层次(即用户模式)中去运行,而留下一个尽量小的内核,用它来完成操作系统最基本的核心功能,称这种技术为微内核技术。
在微内核中通常提供了进程(线程)管理、低级存储器管理、中断和陷入处理等功能。
第二章
进程
特征:动态性、并发性、独立性、异步性
程序没有建立PCB是不能参与并发执行的。
时间片:一个时间片就是一段很短的时间,系统规定每个作业每次只能运行一个时间片,然后暂停该作业的运行,调度下一个作业运行。
三种基本状态:就绪、执行、阻塞
五种状态:创建、就绪、执行、阻塞、终止
七种状态:创建、活动就绪、静止就绪、执行、活动阻塞、静止阻塞、终止
PCB的作用
- 作为独立运行基本单位的标志
- 能实现间断性运行方式
- 提供进程管理所需要的信息
- 提供进程调度所需要的信息
- 实现与其他进程的同步和通信
1.试说明进程在三个基本状态之间转换的典型原因
-
就绪状态→执行状态:进程分配到CPU资源
-
执行状态→就绪状态:时间片用完
-
执行状态→阻塞状态:I/O请求
-
阻塞状态→就绪状态:I/O完成
2.试说明引起进程阻塞或被唤醒的主要事件是什么?
a. 请求系统服务;b. 启动某种操作;c. 新数据尚未到达;d. 无新工作可做
3.为什么要在OS 中引入线程?
在操作系统中引入线程,则是为了减少程序在并发执行时所付出的时空开销,使OS具有更好的并发性,提高CPU的利用率。进程是分配资源的基本单位,而线程则是系统调度的基本单位。
4.线程控制块TCB中包含了哪些内容
线程控制符、一组寄存器(包括PC和状态寄存器和通用寄存器的内容)、线程运行状态(何种运行状态)、优先级(线程执行的优先程度)、线程专有存储区、信号屏蔽、堆栈指针
第三章
处理机调度的层次
-
高级调度
长程调度or作业调度,调度对象是作业;
作业调入内存,创建进程分配资源;
主要用于 多道批处理系统,分时or实时中不设置
-
低级调度
进程调度or短程调度,对象是进程/内核级线程;
决定哪个进程应获得处理机,将处理机分配给进程;
最基本的调度;
多道批处理、分时、实时都必须配置;
运行频率最高
-
中级调度
内存调度;
提高内存利用率和系统吞吐量;
把不能运行的进程调到外存等待;把可以运行的进程重新调入内存,修改状态为就绪
作业调度
批处理系统中,是以作业为基本单位从外存调入内存的;
周转时间 = 完成时间 - 到达时间;
带权周转时间 = 周转时间 / 服务时间;
P2- 20
进程调度的任务
- 保存处理机的现场信息
- 按某种算法选取进程
- 把处理器分配给进程
产生死锁的必要条件
任一条件不成立,死锁就不会发生:
-
互斥条件
在一段时间内,某资源只能被一个进程占用,其他请求的资源只能等待。
-
请求和保持条件
进程保持了至少一个资源,请求新资源的时候被阻塞,对自己已获得的资源保持不放
-
不可抢占条件
进程已获得的资源在未使用完之前不能被抢占
-
循环等待条件
进程-资源 循环链
产生死锁的根本原因:
系统资源不足
不产生死锁的最小资源数
设系统所拥有的资源总数为M,共享该资源的进程数为P,每个进程所需使用该资源的最大需求为N,则 M≥P(N-1)+1* 时 无论如何分配都不会产生死锁。
处理死锁的方法
-
预防死锁
设置某些限制条件去破坏产生死锁的必要条件
-
避免死锁
在动态分配的过程中用某种方法阻止系统进入不安全状态
-
检测死锁
事前不采取措施,通过检测机构及时检测出死锁的发生,采取适当措施
-
解除死锁
检测到死锁时采取相应措施,常用方法:撤销一些进程,回收资源,将它们分配给阻塞状态的进程
银行家算法
安全状态→找到安全序列
- 可利用资源向量Available,Available[j]=K,表示系统中现有j类资源K个
- 最大需求矩阵Max,Max[i,j]=K,表示进程i需要j类资源的最大数目为K
- 分配矩阵Allocationm,Allocation[i,j]=K,表示进程i当前已分得j类资源的数目为K
- 需求矩阵Need,Need[i,j]=K,表示进程i还需要j类资源K个
- Need[i, j]=Max[i, j]-Allocation[i, j]
Request i是进程Pi的请求向量,如果Request i[j]=K,表示进程Pi需要K个j类型的资源。当Pi发出资源请求后,系统按下述步骤进行检查:
-
如果Request i[j]≤Need[i,j],转向步骤(2); //所求的资源数必须小于总共宣布需要资源的最大数
否则认为出错,因为它所需要的资源数已超过它所宣布的最大值。
-
如果Requesti[j]≤Available[j],便转向步骤(3);否则,表示尚无足够资源,Pi须等待。
-
系统试探着把资源分配给进程P i,并修改下面数据结构中的数值:
Available[j]:= Available[j]-Request i[j];//可用的减少了
Allocation[i,j]:= Allocation[i,j]+Request i[j];//已配分的增加了
Need[i,j]:= Need[i,j]-Request i[j];//还需要的也减少了
-
执行安全性算法,安全了才正式分配资源,否则作废,让进程等待
安全性算法:
-
设置两个向量:
- 工作向量Work,它表示系统可提供给进程继续运行所需的各类资源数目,它含有m个元素,在执行安全算法开始时,Work=Available。
- Finish,它表示系统是否有足够的资源分配给进程,使之运行完成。开始时先做Finish[i]:=false;当有足够资源分配给进程时,再令Finish[i]:=true。
-
从进程集合中找到一个能满足下述条件的进程:
① Finish[i]=false;//资源未分配
② Need[i,j]≤Work[j];//资源足够分配
若找到,执行步骤(3),否则,执行步骤(4)。
-
当进程Pi获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行
Work[j]:= Work[j]+Allocation[i,j];//释放资源
Finish[i]:=true;//设置完成标志
go to step 2; //继续寻找下一个
1.何谓死锁?产生死锁的原因和必要条件是什么?
死锁是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。
产生死锁的原因为竞争资源和进程间推进顺序非法。其必要条件是:互斥条件、请求和保持条件、不可抢占条件、循环等待条件。
2.请详细说明可通过哪些途径预防死锁
- 破坏“请求和保持”条件,就是如果系统有足够资源,便一次性把进程需要的所
有资源分配给它;只分配给进程初期所需要的资源,进程运行过程中再逐步释放用毕的资源,再请求新资源。 - 破坏“不可抢占”条件,就是已经拥有资源的进程,当它提出新资源请求而不能立即
满足时,必须释放它已保持的所有资源,待以后需要时再重新申请; - 破坏“循环等待”条件,就是将所有资源按类型排序标号,所有进程对资源的请求必须严格按序号递增的次序提出。
3.在银行家算法中,若出现下述资源分配情况,试问:
process | Allocation | Need | Available |
---|---|---|---|
P0 | 0 0 3 2 | 0 0 1 2 | 1 6 2 2 |
P1 | 1 0 0 0 | 1 7 5 0 |
第一章
判断操作系统类型
操作系统按功能可以分为
-
批处理操作系统
将选中的若干作业调入内存以多道方式投入运行。
优点是系统吞吐量大,资源利用率高。
不具有交互性,这是其缺点。
-
分时操作系统 --------- 人机交互 共享主机
采用“时间片”、动态优先数等方式使CPU轮流为多个用户终端或多个任务服务。
主要特点:
多路调制性 独占性 及时性 交互性
-
实时操作系统
响应速度 快,可靠性要求 高
更强调系统的 安全性 和 可靠性
不具备分时系统的强交互性。
主要特点是:
- 对响应时间的实时要求(可高可低)。
- 系统可靠性和安全性放在第一位,系统效率放在次要地位,交互性差或根本没有交互性。
- 系统整体性强。很多实时系统同时又是分布式系统,具有分布式系统整体性强的优点。
类型:工业武器控制系统、信息查询系统、多媒体系统、嵌入式系统
操作系统主要特征
并发性(进程)、共享性、虚拟性、异步性
操作系统主要功能
处理机管理、存储器管理、设备管理、文件管理
1.为什么说操作系统实现了对计算机资源的抽象?
OS首先在裸机上覆盖一层I/O设备管理软件,实现了对计算机硬件操作的第一层次抽象;在第一层软件上再覆盖文件管理软件,实现了对硬件资源操作的第二层次抽象。OS 通过在计算机硬件上安装多层系统软件,增强了系统功能,隐藏了对硬件操作的细节,由它们共同实现了对计算机资源的抽象。
2.实现分时系统的关键问题是什么?应如何解决?
关键问题是当用户在自己的终端上键入命令时,系统应能及时接收并及时处理该命令,
在用户能接受的时延内将结果返回给用户。
解决方法:针对及时接收问题,可以在系统中设置多路卡,使主机能同时接收用户从各个终
端上输入的数据;为每个终端配置缓冲区,暂存用户键入的命令或数据。针对及时处理问题,
应使所有的用户作业都直接进入内存,并且为每个作业分配一个时间片,允许作业只在自己
的时间片内运行,这样在不长的时间内,能使每个作业都运行一次。
3.OS有哪几大特征?其最基本的特征是什么?
并发性、共享性、虚拟性和异步性四个基本特征;最基本的特征是并发性和共享性。
4.何谓微内核技术?在微内核中通常提供了哪些功能?
把操作系统中更多的成分和功能放到更高的层次(即用户模式)中去运行,而留下一个尽量小的内核,用它来完成操作系统最基本的核心功能,称这种技术为微内核技术。
在微内核中通常提供了进程(线程)管理、低级存储器管理、中断和陷入处理等功能。
第二章
进程
特征:动态性、并发性、独立性、异步性
程序没有建立PCB是不能参与并发执行的。
时间片:一个时间片就是一段很短的时间,系统规定每个作业每次只能运行一个时间片,然后暂停该作业的运行,调度下一个作业运行。
三种基本状态:就绪、执行、阻塞
五种状态:创建、就绪、执行、阻塞、终止
七种状态:创建、活动就绪、静止就绪、执行、活动阻塞、静止阻塞、终止
PCB的作用
- 作为独立运行基本单位的标志
- 能实现间断性运行方式
- 提供进程管理所需要的信息
- 提供进程调度所需要的信息
- 实现与其他进程的同步和通信
1.试说明进程在三个基本状态之间转换的典型原因
-
就绪状态→执行状态:进程分配到CPU资源
-
执行状态→就绪状态:时间片用完
-
执行状态→阻塞状态:I/O请求
-
阻塞状态→就绪状态:I/O完成
2.试说明引起进程阻塞或被唤醒的主要事件是什么?
a. 请求系统服务;b. 启动某种操作;c. 新数据尚未到达;d. 无新工作可做
3.为什么要在OS 中引入线程?
在操作系统中引入线程,则是为了减少程序在并发执行时所付出的时空开销,使OS具有更好的并发性,提高CPU的利用率。进程是分配资源的基本单位,而线程则是系统调度的基本单位。
4.线程控制块TCB中包含了哪些内容
线程控制符、一组寄存器(包括PC和状态寄存器和通用寄存器的内容)、线程运行状态(何种运行状态)、优先级(线程执行的优先程度)、线程专有存储区、信号屏蔽、堆栈指针
第三章
处理机调度的层次
-
高级调度
长程调度or作业调度,调度对象是作业;
作业调入内存,创建进程分配资源;
主要用于 多道批处理系统,分时or实时中不设置
-
低级调度
进程调度or短程调度,对象是进程/内核级线程;
决定哪个进程应获得处理机,将处理机分配给进程;
最基本的调度;
多道批处理、分时、实时都必须配置;
运行频率最高
-
中级调度
内存调度;
提高内存利用率和系统吞吐量;
把不能运行的进程调到外存等待;把可以运行的进程重新调入内存,修改状态为就绪
作业调度
批处理系统中,是以作业为基本单位从外存调入内存的;
周转时间 = 完成时间 - 到达时间;
带权周转时间 = 周转时间 / 服务时间;
P2- 20
进程调度的任务
- 保存处理机的现场信息
- 按某种算法选取进程
- 把处理器分配给进程
产生死锁的必要条件
任一条件不成立,死锁就不会发生:
-
互斥条件
在一段时间内,某资源只能被一个进程占用,其他请求的资源只能等待。
-
请求和保持条件
进程保持了至少一个资源,请求新资源的时候被阻塞,对自己已获得的资源保持不放
-
不可抢占条件
进程已获得的资源在未使用完之前不能被抢占
-
循环等待条件
进程-资源 循环链
产生死锁的根本原因:
系统资源不足
不产生死锁的最小资源数
设系统所拥有的资源总数为M,共享该资源的进程数为P,每个进程所需使用该资源的最大需求为N,则 M≥P(N-1)+1* 时 无论如何分配都不会产生死锁。
处理死锁的方法
-
预防死锁
设置某些限制条件去破坏产生死锁的必要条件
-
避免死锁
在动态分配的过程中用某种方法阻止系统进入不安全状态
-
检测死锁
事前不采取措施,通过检测机构及时检测出死锁的发生,采取适当措施
-
解除死锁
检测到死锁时采取相应措施,常用方法:撤销一些进程,回收资源,将它们分配给阻塞状态的进程
银行家算法
安全状态→找到安全序列
- 可利用资源向量Available,Available[j]=K,表示系统中现有j类资源K个
- 最大需求矩阵Max,Max[i,j]=K,表示进程i需要j类资源的最大数目为K
- 分配矩阵Allocationm,Allocation[i,j]=K,表示进程i当前已分得j类资源的数目为K
- 需求矩阵Need,Need[i,j]=K,表示进程i还需要j类资源K个
- Need[i, j]=Max[i, j]-Allocation[i, j]
Request i是进程Pi的请求向量,如果Request i[j]=K,表示进程Pi需要K个j类型的资源。当Pi发出资源请求后,系统按下述步骤进行检查:
-
如果Request i[j]≤Need[i,j],转向步骤(2); //所求的资源数必须小于总共宣布需要资源的最大数
否则认为出错,因为它所需要的资源数已超过它所宣布的最大值。
-
如果Requesti[j]≤Available[j],便转向步骤(3);否则,表示尚无足够资源,Pi须等待。
-
系统试探着把资源分配给进程P i,并修改下面数据结构中的数值:
Available[j]:= Available[j]-Request i[j];//可用的减少了
Allocation[i,j]:= Allocation[i,j]+Request i[j];//已配分的增加了
Need[i,j]:= Need[i,j]-Request i[j];//还需要的也减少了
-
执行安全性算法,安全了才正式分配资源,否则作废,让进程等待
安全性算法:
-
设置两个向量:
- 工作向量Work,它表示系统可提供给进程继续运行所需的各类资源数目,它含有m个元素,在执行安全算法开始时,Work=Available。
- Finish,它表示系统是否有足够的资源分配给进程,使之运行完成。开始时先做Finish[i]:=false;当有足够资源分配给进程时,再令Finish[i]:=true。
-
从进程集合中找到一个能满足下述条件的进程:
① Finish[i]=false;//资源未分配
② Need[i,j]≤Work[j];//资源足够分配
若找到,执行步骤(3),否则,执行步骤(4)。
-
当进程Pi获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行
Work[j]:= Work[j]+Allocation[i,j];//释放资源
Finish[i]:=true;//设置完成标志
go to step 2; //继续寻找下一个
1.何谓死锁?产生死锁的原因和必要条件是什么?
死锁是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。
产生死锁的原因为竞争资源和进程间推进顺序非法。其必要条件是:互斥条件、请求和保持条件、不可抢占条件、循环等待条件。
2.请详细说明可通过哪些途径预防死锁
- 破坏“请求和保持”条件,就是如果系统有足够资源,便一次性把进程需要的所
有资源分配给它;只分配给进程初期所需要的资源,进程运行过程中再逐步释放用毕的资源,再请求新资源。 - 破坏“不可抢占”条件,就是已经拥有资源的进程,当它提出新资源请求而不能立即
满足时,必须释放它已保持的所有资源,待以后需要时再重新申请; - 破坏“循环等待”条件,就是将所有资源按类型排序标号,所有进程对资源的请求必须严格按序号递增的次序提出。
3.在银行家算法中,若出现下述资源分配情况,试问:
process | Allocation | Need | Available |
---|---|---|---|
P0 | 0 0 3 2 | 0 0 1 2 | 1 6 2 2 |
P1 | 1 0 0 0 | 1 7 5 0 |