操作系统期末考试考研必考重点个人总结.docx
《操作系统期末考试考研必考重点个人总结.docx》由会员分享,可在线阅读,更多相关《操作系统期末考试考研必考重点个人总结.docx(108页珍藏版)》请在冰豆网上搜索。
操作系统期末考试考研必考重点个人总结
共分2部分:
Part1,Part2
其中,Part1为基础部分,共占65分,包括:
选择2’*15
判断2’*10
大题7’+8’
内容为考研大纲上的85%---90%
Part2为考研题型,占35分,与每年考研试卷中操作系统部分所占的题型、分数、数目完全一致(选择+2道大题)
整张试卷,大题四道:
1、P、V操作(若为前驱图,信号量必定<=3)
2、作业调度
3、死锁银行家算法
4、可变分区的3种方法(最先、最佳、最坏适应)
5、地址映射(页式、段页式)
6、内存置换(FIFO、OPT、LRU、时钟)、命中率
7、磁盘调度算法(最基本的电梯调度、先来先到、单向扫描)
8、索引结构、会画图(连续、链接、索引、I结点)
9、磁盘的空间管理(给一个位图,转换物理块号)其中,Part1的两道大题出自4、5、6、8
Part2的两道大题出自1、2、3、7、9
第二章
进程管理
1
本章要点
基础:
进程描述及控制
策略:
进程调度
实现:
互斥与同步
避免:
死锁与饥饿
解决:
几个经典问题
关于:
进程通信
2
2.1进程的引入
3
程序顺序执行
程序:
源代码程序、目标程序和可执行程序
程序执行:
编辑、编译、链接、执行
程序的结构:
顺序结构、分支结构和循环结构
4
程序顺序执行
程序顺序执行的特征:
顺序性、封闭性、可再现性
5
程序并发执行
多道程序设计技术:
多个程序并发执行
程序并发执行时的特征:
间断性、非封闭性、不可再现性
6
程序并发执行引发的问题
协调各程序的执行顺序
例如,当输入的数据还未全部输入内存时,计算必须等待
多个执行程序共享系统资源,程序之间可能会相互影响,甚至影响输出结果
选择哪些、多少个程序进入内存执行?
内存中的执行程序谁先执行,谁后执行?
内存如何有效分配?
7
进程的概念
定义:
可并发执行的程序,在一个数据集合上的运行过程。
申请/拥有资源∽调度(线程)
程序:
静态概念,是指令和数据的集合,可长期存储
进程与程序对应关系:
-一个程序可以对应一个进程或多个进程
-一个进程可以对应一个程序,或者一段程序
8
进程的特征
动态性
并发性
独立性
异步性
9
引入进程带来的问题
增加了空间开销:
为进程建立数据结构
额外的时间开销:
管理和协调、跟踪、填写和更新有关数据结构、切换进程、保护现场
更难控制:
-协调多个进程竞争和共享资源如何预防
-解决多个进程因为竞争资源而出现故障
处理机的竞争尤为突出
10
进程的结构
组成(进程映像):
程序、数据集合、进程控制块PCB(ProcessControlBlock)
PCB是进程存在的唯一标志。
创建进程时,创建PCB;进程结束时,系统将撤消其PCB。
11
PCB
进程标识信息:
进程的内部和外部标识符
处理机状态信息:
通用寄存器值、指令计数器值、程序状态字PSW值、用户栈指针值
进程调度信息:
进程状态、进程优先权、进程调度的其它信息
其它信息:
程序及数据地址、进程同步和通讯机制、资源清单、链接指针
12
PCB的组织方式之一
--单一队列
所有进程的PCB通过链表组织成为一个单一队列。
适用于进程数目不多的系统。
如,Windows操作系统。
13
PCB的组织方式之二
--表格结构
PCB按进程状态不同,组织成不同的表格:
就绪进程表、执行进程表(多机系统中)及阻塞进程表
系统分别记载各PCB表的起始地址
14
PCB的表格结构
15
PCB的组织方式之三
--多级队列
PCB按进程状态不同用链接指针组成不同队列:
就绪进程队列、阻塞进程队列(可按阻塞原因不同,分别组织)
系统分别记载各PCB链表的起始地址
16
PCB多级队列
17
2.2进程的状态
18
进程执行轨迹
进程的轨迹:
进程执行的指令序列,用以观察处理机的执行过程。
例,假设内存中有3个进程A、B、C,他们的程序代码已全部装入内存。
若A、B两进程需要执行12条指令,C进程需要执行4条指令,且C进程执行到第4条指令处必须等待I/O
19
20
假设分派程序分派处理机需要依次执行指令序列:
s+0,s+1,…,s+5
进程A的执行轨迹为a+0,a+1,a+2,a+3,…
进程B的执行轨迹为b+0,b+1,b+2,b+3,…
进程C的执行轨迹为c+0,c+1,c+2,c+3,当它执行到c+3指令时遇到了I/O指令,需要释放处理机,进行输入/输出操作
21
29s+0
30s+1
31s+2
32s+3
33s+4
34s+5
1a+0
2a+1
a+2
a+3
a+4
a+5
35a+6
36a+7
37a+8
38a+9
39a+10
40a+11
7s+0
8s+1
9s+2
10s+3
11s+4
12s+5
13b+0
14b+1
15b+2
16b+3
17b+4
18b+5
25c+0
26c+1
27c+2
28c+3
41s+0
s+1
s+2
s+3
s+4
s+5
19s+0
20s+1
21s+2
22s+3
23s+4
24s+5
7b+6
48b+7
49b+8
50b+9
51b+10
52b+11
22
两状态进程模型
两状态:
执行、未执行
-进程获得处理机,进入执行状态;当时间片结束或其它某种原因,进程释放处理机,暂停执行,处于未执行状态。
23
两状态进程模型:
队列形式
24
注:
并非所有进程只要“未执行”就处于就绪(ready),有的需要阻塞(blocked)等待I/O完成
“未执行”又可分为就绪和阻塞
25
进程的五状态
执行状态(Running)
就绪状态(Ready)
阻塞状态(Blocked)
新状态(New)
终止状态(Terminated)
26
1.新状态:
进程已经创建,但未被OS接纳为可执行进程
2.就绪状态:
准备执行
3.执行状态:
占用处理机(单处理机环境中,某一时刻仅一个进程占用处理机)
4.阻塞状态:
等待某事件发生才能执行,如等待I/O完成等
5.终止状态:
因停止或取消,被OS从执行状态释放
27
28
①空新状态新创建的进程首先处于新状态。
②新状态就绪状态当系统允许增加就绪进程时,操作系统接纳新建状态进程,将它变为就绪状态,插入就绪队列中。
③就绪状态执行状态当处理机空闲时,将从就绪队列中选择一个进程执行,该选择过程称为进程调度,或将处理机分派给一个进程,该进程状态从就绪转变为执行。
④执行状态终止状态执行状态的进程执行完毕,或出现诸如访问地址越界、非法指令等错误,而被异常结束,则进程从执行状态转换为终止状态。
29
⑤执行状态就绪状态分时系统中,时间片用完,或优先级高的进程到来,将中断较低优先级进程的执行。
进程从执行状态转变为就绪状态,等待下一次调度。
⑥执行状态阻塞状态执行进程需要等待某事件发生。
通常,会因为进程需要的系统调用不能立即完成,如读文件、共享虚拟内存、等待I/O操作、等待另一进程与之通信等事件而阻塞。
⑦阻塞状态就绪状态当阻塞进程等待的事件发生,就转换为就绪状态。
进入就绪队列排队,等待被调度执行。
30
注:
某些系统允许父进程在任何情况下终止其子进程。
如果一个父进程被终止,其子孙进程都必须终止。
-新状态终止
-就绪状态终止
-阻塞状态终止
31
32
问题:
多个进程竞争内存资源
内存资源紧张
无就绪进程,处理机空闲:
I/O的速度比处理机的速度慢得多,可能出现全部进程阻塞等待I/O
33
解决方法
采用交换技术:
换出一部分进程到外存,以腾出内存空间
采用虚拟存储技术:
每个进程只能装入一部分程序和数据(存储管理部分)
34
对换技术,交换技术
(Swapping)
将内存中暂时不能运行的进程,或暂时不用的数据和程序,换出到外存,以腾出足够的内存空间,把已具备运行条件的进程,或进程所需要的数据和程序,换入内存。
35
进程的挂起状态
进程被交换到外存,状态变为挂起状态
36
进程挂起的原因
进程全部阻塞,处理机空闲。
系统负荷过重,内存空间紧张。
操作系统的需要。
操作系统可能需要挂起后台进程或一些服务进程,或者某些可能导致系统故障的进程。
终端用户的请求。
父进程的需求。
37
被挂起进程的特征
不能立即执行
可能是等待某事件发生,若是,则阻塞条件独立于挂起条件,即使阻塞事件发生,该进程也不能执行
使之挂起的进程为:
自身、其父进程、OS
只有挂起它的进程才能使之由挂起状态转换为其他状态
38
挂起与阻塞
问题
是否只能挂起阻塞进程?
如何激活一个挂起进程?
39
挂起与阻塞
区分两个概念:
?
进程是否等待事件,阻塞与否
?
进程是否被换出内存,挂起与否
4种状态组合:
就绪:
进程在内存,准备执行
阻塞:
进程在内存,等待事件
就绪/挂起:
进程在外存,只要调入内存即可执行
阻塞/挂起:
进程在外存,等待事件
40
注:
处理机可调度执行的进程有两种:
新创建的进程
或换入一个以前挂起的进程
通常为避免增加系统负载,系统会换入一个以前挂起的进程执行。
41
挂起
接纳
激活
就绪/挂起
图2.12具有挂起状态的进程模型
挂起
时间片完
新建
就绪
执行
阻塞
终止
分派/调度
事件发生
事件等待
完成
激活
阻塞/挂起
事件发生
42
具有挂起状态的进程状态转换
阻塞 阻塞/挂起:
OS通常将阻塞进程换出,以腾出内存空间
阻塞/挂起就绪/挂起:
当阻塞/挂起进程等待的事件发生时,可以将其转换为就绪/挂起
就绪/挂起 就绪:
OS需要调入一个进程执行
就绪就绪/挂起:
一般,OS挂起阻塞进程。
但有时也会挂起就绪进程,释放足够的内存空间
新 就绪/挂起(新 就绪):
新进程创建后,可以插入到就绪队列或就绪,挂起队列。
若无足够的内存分配给新进程,则需要新就绪/挂起
43
具有挂起状态的进程状态转换(续)
阻塞/挂起阻塞:
当阻塞/挂起队列中有一个进程的阻塞事件可能会很快发生,则可将一个阻塞/挂起进程换入内存,变为阻塞
执行就绪/挂起:
当执行进程的时间片用完时,会转换为就绪。
或,一个高优先级的阻塞/挂起进程正好变为非阻塞状态,OS可以将执行进程转换为就绪/挂起状态
所有状态终止:
通常,执行终止。
但某些OS中,父进程可以终止其子进程,使任何状态的进程都可转换为退出状态
44
2.3进程的控制
45
两种执行模式
系统模式(又称为系统态)、控制模式或内核模式:
-具有较高的特权
-运行系统特定的指令,包括读/写控制寄存器的指令、基本I/O指令以及与存储器管理有关的指令,及一些特定的内存区
-内核模式下的处理机及其指令、寄存器和内存都受到完全控制和保护
用户模式(或用户态)
-具有较低的特权
-用户程序一般运行在用户模式
46
模式切换
用户模式系统模式:
用户程序执行到一条系统调用,进入操作系统内核执行
系统模式用户模式:
执行完系统调用的功能,返回到用户程序
特殊情况:
程序执行到结束语句时,切换到系统模式,不再返回到用户程序
47
操作系统内核(Kernel)
操作系统的核心,是基于硬件的第一层软件扩充,提供操作系统最基本的功能,是操作系统工作的基础。
现代操作系统设计中,为减少系统本身的开销,往往将一些与硬件紧密相关的(如中断处理程序、设备驱动程序等)、基本的、公共的、运行频率较高的模块(如时钟管理、进程调度等)以及关键性数据结构独立开来,使之常驻内存,并对它们进行特殊保护。
通常把这一部分称为操作系统的内核。
48
用户通过系统调用访问操作系统的功能,这些功能最终都通过操作系统内核实现。
不同的操作系统对内核的定义和功能范围的设定是不同的。
一般地,操作系统内核的功能可以概括地划分为资源管理功能和支撑功能。
-资源管理:
进程管理、存储管理和I/O设备管理
-支撑功能:
中断处理、统计、监测、时钟管理、原语操作等。
49
资源管理功能
进程管理:
进程创建和终止、调度、状态转换、同步和通信、管理PCB
存储管理:
为进程分配地址空间、对换、段/页管理
I/O设备管理:
缓存管理、为进程分配I/O通道和设备
50
支撑功能
中断处理
时钟管理
原语(Primitive):
原子操作
统计
监测
51
进程控制原语
进程切换
创建与终止
阻塞与唤醒
挂起与激活
52
进程创建:
原因
提交新的批处理作业
交互式用户注册
操作系统提供服务
父进程创建子进程
53
进程创建:
步骤
为进程分配一个唯一标识号ID主进程表中增加一个新的表项
为进程分配空间:
用户地址空间、用户栈空间、PCB空间。
若共享已有空间,则应建立相应的链接。
初始化PCB:
进程标识、处理机状态信息、进程状态
建立链接:
若调度队列是链表,则将新进程插入到就绪或就绪/挂起链表
建立或扩展其他数据结构
54
进程终止:
原因
批处理作业执行到“结束”语句
交互式用户“注销”
停止进程(应用程序)的执行
遇到错误或故障
55
进程终止:
具体原因
正常结束
超时终止,执行时间超过预计时间
内存不足,无法为进程分配所需的内存空间
越界访问
企图使用未允许用的数据,或操作方式错
计算错,如除零,或企图存储硬件允许的最大数
超时等待某事件发生
56
进程终止:
具体原因
I/O失败,如找不到文件或多次重试仍无法读写文件,或无效操作
无效指令,企图执行不存在的指令
特权指令,企图执行特权指令
数据类型不符,或未初始化
操作员或OS干预,如发生死锁的时候
父进程终止
父进程请求
57
进程终止:
步骤
根据被终止进程的标识符ID,找到其PCB,读出该进程的状态;
若该进程为执行状态,则终止其执行,调度新进程执行;
若该进程有子孙进程,则立即终止其所有子孙进程
将该进程的全部资源,或归还给其父进程,或归还给系统
将被终止进程(的PCB)从所在的队列中移出,等待其它程序来搜集信息
58
进程的阻塞与唤醒
阻塞原因:
请求系统服务;启动某种操作,如I/O;新数据尚未到达;暂时无新工作可做等
当出现阻塞事件,进程调用阻塞原语将自己阻塞。
并将其状态变为“阻塞状态”,并进入相应事件的阻塞队列;
当阻塞进程期待的事件发生,有关进程调用唤醒原语,将等待该事件的进程唤醒。
并将其状态变为“就绪状态”,插入就绪队列。
一般,进程可以自己阻塞自己;而唤醒操作则由操作系统,或其它相关进程来完成,进程无法自己唤醒自己。
59
进程的挂起与激活
当出现挂起事件,系统利用挂起原语将指定进程或一个阻塞进程挂起。
进程从内存换出到外存,其状态转换:
就绪就绪/挂起
或阻塞阻塞/挂起
当激活事件发生,系统利用激活原语将指定进程激活。
将相应进程从外存换入到内存,可能的状态转换:
就绪/挂起就绪,或
阻塞/挂起阻塞
60
进程切换
时钟中断
进程执行完一个时间片
I/O中断
内存访问出错
-虚拟存储中,需要的指令或数据不在内存
陷阱
执行遇到错误
可能使进程转换到终止状态
61
进程A切换到进程B的步骤
首先,保护进程A的现场将进程A的当前运行信息,如程序执行到的当前位置,程序状态字,所有的寄存器值等保存到进程A的PCB中。
然后,恢复进程B的现场从进程B的PCB中获取其执行信息,将这些信息写入相应的寄存器中,程序计数器指向进程B将执行的下一条指令。
进程B可能第一次开始执行,也可能是被中断过的进程,恢复执行。
不论是哪一种情况,进程B的执行信息都能在其PCB中找到。
62
进程切换vs.模式切换
进程切换,作用于进程之间的一种操作。
当分派程序收回当前进程的CPU并准备把它分派给某个就绪进程时,该操作将被引用。
模式切换,是进程内部所引用的一种操作。
当用户程序转入系统调用,或相反时,该操作将被引用。
进程切换一定引发模式切换,反之则不然。
63
2.4进程调度
64
什么是调度?
调度是指,在一个队列中,按照某种方法(算法),选择一个合适的个体的过程。
调度的关键是需要某种方法或算法,好的调度算法有利于选择到合适的个体。
如何判断、设计一个好的调度算法呢?
65
调度实例
66
调度目标
公平性,防止进程长期不能获得调度而饥饿;
处理机利用率,尽量提高处理机的利用率;
提高系统吞吐量;
尽量减少进程的响应时间
67
调度原则
满足用户的要求:
响应时间、周转时间、截止时间
满足系统的需求:
系统吞吐量、处理机利用率、各类资源的平衡使用、公平性及优先级
68
面向用户的原则:
响应时间
是指,从用户通过键盘提交一个请求开始,直到系统首次产生响应为止的时间。
输入的请求传送到处理机的时间
+处理机对请求信息进行处理的时间
+将响应结果发送到输出终端的时间
响应时间
调度算法则应考虑尽可能使绝大多数用户的请求能在响应时间内完成。
常用于评价分时系统的性能。
69
面向用户的原则:
周转时间
指从作业提交给系统开始,到作业完成为止的这段时间间隔
作业在外存排队等待调度的时间
+进程在就绪队列中等待调度的时间
+进程被处理机执行的时间
+等待I/O操作完成的时间
周转时间
常用于评价批处理系统的性能
70
面向用户的原则:
周转时间(续)
影响周转时间的调度:
作业从外存调度到内存(作业调度)
进入内存还需在就绪队列中排队,等待进程调度。
甚至,可能会挂起进程,在外存等待被激活(中程调度)
71
面向用户的原则:
截止时间
指实时系统中,某任务必须开始执行的最迟时间,或必须完成的最迟时间。
常用于评价实时系统的性能。
72
面向系统的原则:
系统吞吐量
指单位时间内系统所完成的作业数
常用于评价批处理系统的性能。
73
面向系统的原则:
处理机利用率
大、中型多用户系统,由于处理机价格昂贵,处理机利用率是衡量系统性能的一个重要指标
单用户微机或某些实时系统,则并非很重要。
74
面向系统的原则:
各类资源的平衡使用
多道程序系统的目标之一就是为了提高系统资源的利用率,因此,调度算法有责任使系统中的各种资源都尽量处于忙碌状态。
该原则同时适用于长程调度和中程调度,因为它们可以决定哪些作业(进程)可以进入内存,可以考虑系统资源的均衡使用。
75
面向系统的原则:
公平性
调度算法应该对所有进程公平,不偏袒任何进程。
76
面向系统的原则:
优先权
优先权高的进程应优先调度
可以根据进程的优先权不同,组织不同的就绪队列。
进程调度时首先选择高优先权队列中的进程,直到该队列空,再调度较低优先权队列中的进程,如图2.13所示
77
78
几乎所有操作系统的调度算法都可考虑优先权原则。
当然,仅考虑优先权,可能会出现饥饿,对低优先权的进程不公平。
可以将进程排队的等待时间等因素纳入优先权的计算,随着进程等待时间的增长,其优先权也不断提高,进程也会在不久的将来得到调度。
79
进程调度方式
根据执行进程的处理机是由进程自己释放,还是被强行剥夺,可以将进程调度方式分为非剥夺方式和剥夺方式两种。
80
进程调度方式:
非剥夺方式
执行进程只有在执行完毕,或因申请I/O阻塞自己时,才中断其执行,释放处理机,调度新的进程执行
这种方式不利于“即时性”要求较高的分时和实时系统,主要用于批处理系统。
81
进程调度方式:
剥夺方式
操作系统可以在新进程到来时,或某个具有较高优先权的被阻塞进程插入就绪队列时,或在基于时间片调度的系统中,时间片用完而中断当前进程的执行,调度新的进程执行。
这种方式会产生较多的中断,主要用于实时性要求较高的实时系统及性能要求较高的批处理系统和分时系统。
82
调度的类型
批处理调度、分时调度、实时调度和多处理机调度
长程调度、中程调度、短程调度
I/O调度
83
长程调度
(Long-termscheduling)
又称高级调度,或作业调度,它为被调度作业或用户程序创建进程,分配必要的系统资源,并将新创建的进程插入就绪队列,等待短程调度。
某些采用交换技术的系统将新创建的进程插入到就绪/挂起队列,等待中程调度。
在批处理系统中,作业进入系统后,先驻留在磁盘上,组织成批处理队列,称为后备队列。
长程调度从该队列中选择一个或多个作业,为之创建进程。
如图:
84
85
长程调度需要考虑两个问题
选择多少个作业进入内存,为之创建进程?
-取决于多道程序的度,即允许同时在内存中运行的进程数。
2.选择哪些作业?
-取决于长程调度算法
86
短程调度
(Short-termscheduling)
也称进程调度,或低级调度,决定就绪队列中的哪个进程将获得处理机。
短程调度运行频率最高。
现代操作系统几乎都具有短程调度功能。
87
中程调度
(Medium-termscheduling)
又称为中级调度。
它是对换功能的一部分。
当内存空间非常紧张时,或处理机找不到一个可执行的就绪进程时,需要选择一个进程(阻塞或就绪状态)换出到外存,释放出内存空间给别的进程使用;当内存空间较充裕时,从外存选择一个挂起状态的进程调度到内存(换入),见图。
88
89
中程调度
(Medium-termscheduling)
目的:
为了提高内存的利用率和系统吞吐量。
只有支持进程挂起的操作系统才具有中程调度功能。
90
进程调度算法
-先来先服务(FCFS)
该方法按照进程到达的先后顺序排队,每次调度队首的进程。
FCFS算法属于非剥夺调度方式,实现简单,看似公平。
但,对于那些后进入队列而运行时间较短的进程,或I/O型的进程而言,可能需要长时间等待。
91
进程调度算法
-先来先服务(FCFS)
分析前面列举的幼儿园一组小孩进食的例子:
如果采用FCFS方法,让全部小孩排成一个先进先出的队列,老师从队首开始逐个给小孩喂食,只有当前一个小孩吃饱了,才喂食下一个小孩。
那么,排在队列后面的的小孩将长时间不能被喂食而饥饿。
特别地,如果排在队列前面的某些小孩需要喂食的时间较长,而排在队列后面的某些小孩只需进食很少的饭量,却需要等待很长的时间。
故,该方法对这样的小孩不公平。
92
进程调度算法
-先来先服务(FCFS)
假设
就绪队列中从队首开始依次排列有四个进程P1,P2,P3和P4(假设它们同时到达就绪队列),它们的预计执行时间分别为16,12,4和3个单位时间。
若采用FCFS方法调度,试计算P1,P2,P3和P4的周转时间分别为多少?
平均周转时间是多少?
93
94
进程调度算法
-先来先服务(FCFS)
对短进程不公平。
由于长进程可能排在队列前面,必将增加队列后部进程的等待时间,从而将增加平均周转时间。
不利于I/O型进程,未有效利用系统资源。
一般地,FCFS与其他调度算法混合使用。
例如,系统可以按照不同的优先级维护多个就绪队列,每个队列内部按照FCFS算法调度。
FCFS算法同时适合于长程、中程和短程调度三种调度类型。
95
短进程优先
当