-
前驱图:为了能更好地描述程序的顺序和并发执行情况,通常用前趋图来描述程序执行的先后顺序
-前趋图中是不允许有循环的
-
程序顺序执行时的特征:
① 顺序性
② 封闭性:指程序在封闭的环境下运行,即程序运行时独占全机资源,资源的状态(除初始状态外)只有本程序才能改变它,程序一旦开始执行,其执行结果不受外界因素影响;
③ 可再现性:只要程序执行时的环境和初始条件相同,当重复执行时,都可获得相同的结果。
-
程序的并发执行
- 程序原来的顺序执行:I -> C -> P (输入程序 -> 计算程序 -> 打印程序)
- 并发运行方式的基本特征:异步,资源共享,相互制约;间断性,失去封闭性,不可再现性
-
进程:进程是一个程序的一次动态执行过程
-
为什么要引入进程?
操作系统需要引进“进程”,使大程序的程序段可以并发,以加快程序推进且提高CPU利用率
-
进程和程序的区别?
-程序是静态的;进程是动态的(本质区别)
-程序只包含代码;进程包括要运行的代码、代码要处理的数据、运行过程中的状态参数等
-
进程和程序的关联?
- 进程是操作系统为了管理控制程序的运行而加设的一个概念和实体
- 程序不运行,就没有进程;一个进程是一个程序的一次执行过程。
- 一个程序可能对应多个进程
-
作业、程序、进程之间的关系?
-
作业:用户提交给系统的一个计算任务。
批作业=程序+数据+作业控制说明书
交互作业=程序+数据+交互命令
作业是用于人机之间交互的一个概念。
-
程序是作业的组成部分
-
进程对应一个程序的一次动态执行过程。
-
-
-
进程的特征
- PCB
- 动态性;并发性;独立性;异步性
-
进程的三种基本状态
- 就绪状态(ready)
- 执行状态(running)
- 阻塞状态(block)
-
创建和终止
- 创建状态
- 终止状态:等待操作系统进行善后处理,最后将其PCB清零,并将PCB空间返还系统
-
五个状态之间的转换
- 创建状态----(许可)---->就绪状态
- 就绪状态----(进程调度)-----> 执行状态
- 执行状态----(时间片完)-----> 就绪状态
- 执行状态----(I/O请求)-----> 阻塞状态
- 阻塞状态-----(I/O完成)------> 就绪状态
- 执行状态-----(释放)------> 终止状态
-
挂起操作和五个状态之间的转换
- 创建状态----(许可)---->静止就绪 or 活动就绪
- 静止就绪-----(激活)----->活动就绪
- 活动就绪-----(挂起)----->静止就绪
- 活动就绪----(进程调度)-----> 执行状态
- 执行状态----(时间片完)-----> 活动就绪
- 执行状态-----(挂起)----->静止就绪
- 执行状态----(I/O请求)-----> 活动阻塞
- 活动阻塞-----(释放)------> 活动就绪
- 活动阻塞-----(挂起)------> 静止阻塞
- 静止阻塞-----(激活)------> 活动阻塞
- 静止阻塞-----(释放)------> 静止就绪
- 执行状态-----(释放)------> 终止状态
-
进程控制块PCB:
-
作用:
- 作为独立运行基本单位的标志;2. 能实现间断性运行方式;3. 提供进程管理所需要的信息;4. 提供进程调度所需要的信息;5. 实现与其它进程的同步与通信
-
组成信息:
进程标识(用于唯一地标识一个进程);
调度信息(系统调度选择进程的依据)(进程状态 进程优先级 其它信息 事件);
处理机信息(通用寄存器、程序状态字PSW、程序计数器PC、进程的堆栈指针);
进程控制信息(系统对进程实施控制的依据)
-
组织方式:
线性方式;链接方式;索引方式
-
-
进程管理模块:是os最重要的组成部分
- 功能:进程调度、进程控制
-
进程控制
- 管理控制一个进程的生命周期
- 管理控制多个进程的并发
- 进程控制一般是由OS的内核中的原语来实现的
-
操作系统内核(OS内核)
与硬件紧密相关的模块、常用设备的驱动程序、运行频率较高的模块,安排在紧靠硬件的软件层次,常驻内存。
-
功能:
-
支撑功能:
中断处理(最基本)、时钟管理、原语操作(不可分割、实现进程管理和状态切换、不可中断)
-
资源管理功能:
进程管理、存储器管理、设备管理
-
-
-
进程的创建
-
引起创建进程的事件:
用户登录、作业调度、提供服务、应用请求
-
创建原语:
1)申请空白PCB
2)分配资源
3)初始化PCB,填入进程信息
4)就绪队列不满则新进程插入就绪队列
(已经获得除CPU以外的所有运行所需资源的进程处于就绪状态)
-
-
进程的终止
-
引起进程终止的事件:
正常结束(任务完成)、异常结束(程序无法正常运行)、外界干预(外界请求终止)
-
终止过程 撤销原语
1)根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程的状态
2)若被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标志为真,指示该进程可重新进行调度
3) 若该进程还有子孙进程,还应将其所有子孙进程也都予以终止,以防它们成为不可控的进程
4)将被终止进程所拥有的全部资源或者归还给其父进程,或者归还给系统
5)将被终止进程(PCB)从所在队列(或链表)中移出,等待其它程序来搜集信息
-
-
进程的阻塞与唤醒
-
引起进程阻塞和唤醒的事件:
1)向系统请求共享资源失败,请求资源得不到满足
2)等待某种操作的完成,,等待I/O
3)新数据尚未到达,进程同步约束
4)等待新任务的到达,服务进程无事可做
-
阻塞原语
正执行的进程,如果发生了上述某事件,进程便通过调用阻塞原语block将自己阻塞。可见,阻塞是进程自身的一种主动行为。进入block过程后,该进程还处于执行状态,所以应先立即停止执行,把进程控制块中的现行状态由“执行”改为阻塞,并将PCB插入阻塞队列。如果系统中设置了因不同事件而阻塞的多个阻塞队列,则应将本进程插入到具有相同事件的阻塞队列。最后,转调度程序进行重新调度,将处理机分配给另一就绪进程,并进行切换,亦即,保留被阻塞进程的处理机状态,按新进程的PCB中的处理机状态设置CPU的环境。
-
唤醒原语
当被阻塞进程所期待的事件发生时,比如它所启动的I/O操作已完成,或其所期待的数据已经到达,则由有关进程(比如提供数据的进程)调用唤醒原语wakeup,将等待该事件的进程唤醒。wakeup执行的过程是:首先把被阻塞的进程从等待该事件的阻塞队列中移出,将其PCB中的现行状态由阻塞改为就绪,然后再将该PCB插入到就绪队列中。
-
-
进程的挂起与激活
-
挂起原语
事件:
(1)当前内存空间紧缺,部分进程优先运行(2)应用户的要求,将用户进程挂起
(3)应父进程要求,将其子进程挂起
过程:
找到被挂起进程的PCB,获得其内存地址,将内存空间归还给存储管理模块。
进程状态阻塞转为“挂起阻塞”,或者就绪转为“挂起就绪”,将PCB从原队列转入相应队列。
申请外存交换区空间,换出进程,地址写入PCB。 -
激活原语
事件:
(1)有进程运行完毕,当前内存空间并不紧张(2)应用户要求,将其进程激活
(3)应父进程的要求,将将其子进程激活
(4)进程设定的挂起周期已完成过程:
扫描“挂起就绪队列”找到被激活进程的PCB,将PCB从所在队列上摘下来。
按PCB登记的空间需求,申请内存,加载到内存中,归还外存交换区空间。
将进程状态置为“就绪”,插入就绪队列。
-
-
进程同步
-
并发进程间制约关系
1)资源共享关系 间接制约(互斥)体现竞争关系
2)相互合作关系 直接制约 (同步)体现协作关系
-
临界资源
-互斥资源,一段时间内只允许一个进程访问的资源
-
同步机制应该遵循的规则:
1.空闲让进 2.忙则等待 3.有限等待 4.让权等待
-
解决进程同步和互斥的方法:
-
软件方法
-
硬件同步机制
- 关中断:关中断是实现互斥的最简单的方法之一。在进入锁测试之前关闭中断,直到完成锁测试并上锁之后才能打开中断。
- 利用Test-and-Set指令实现互斥:这是一种借助一条硬件指令——“测试并建立”指令TS(Test-and-Set)以实现互斥的方法。
- 利用Swap指令实现进程互斥:该指令称为对换指令,在Intel 80x86中又称为XCHG指令,用于交换两个字的内容。
-
信号量机制
-
整型信号量:不满足“让权等待”
wait(S) : P操作
signal(S): V操作 (原子操作)
wait(s): while s≤0 do no_op;
s:=s-1;
signal(s): s:=s+1; -
记录型信号量:只可申请一类资源,该资源有n个,一次只可申请1个,直到将资源分光,多类资源时易产生死锁
信号量(value)的值,信号量的等待队列指针(L)
P(s):用于进临界区之前检查资源, 当临界资源被其他进程占用时就将自己阻塞,具有 阻塞 功能
V(s):用于出临界区释放资源
,它能将等待该资源的进程唤醒, 具有 唤醒 功能 -
AND型信号量:可申请n类资源,每类资源有m个,每次可申请每类资源中的1个。
同步机制的基本思想:将进程在整个运行中需要的所有资源,一次性全部分配给进程,待进程使用完后一起释放。(避免死锁状态)在Wait中加入AND条件,又称AND同步或同时wait操作:Swait
-
信号量集:可申请n类资源,每类资源有m个,每次可申请每类资源中的多个。但低于下限时,不予分配
-
-
管程机制
-
-
剩余部分在2 进程(下)