操作系统2——进程
本章主要介绍一下几个概念:进程、线程、进程的特征、PCB、进程控制、进程状态转换、 进程同步和进程通信。
目录
1、程序执行的特点
进程的执行情况由进程的前趋图表.
前趋图:一个有向无循环图,描述进程之间执行的前后关系,不能存在循环,记为DAG(Directed Acyclic Graph)
具有九个结点的前趋图:具有循环的前趋图:
注意:前趋图中必须不存在循环。
程序执行方式 |
顺序执行 |
并发执行 |
执行方式 |
单道批处理系统的执行方式 |
多道批处理系统的执行方式 |
特点 |
顺序性:严格按照顺序执行 封闭性:程序运行时独占全机资源 可再现性:重复执行时获得相同结果 |
异步性:程序可能走到中途停下来,失去原有的时序关系 失去封闭性:程序写到存储器中的数据可能被另一个程序修改,失去原有的不变特征 失去可再现性:重复执行时可能获得不同结果,并发程序之间无优先关系。 |
并发执行时的前趋图:
(I表示输入,C表示CPU操作,P表示输出)
在上例中存在下述前趋关系:Ii→Ci,Ii→Ii+1, Ci→Pi, Ci→Ci+1,Pi→Pi+1
2、进程及其特性
进程的描述性定义:计算机中的所有程序(软件),按照某种顺序运行,这种运行的过程称之为进程。
进程的定义 |
系统中能独立运行并作为资源分配的基本单位,他是由一组机器指令,数据和堆栈等组成的,是一个能独立运行的活动实体,程序安装在电脑中是存储在内存中,运行程序时才会产生进程。 进程是程序的一次执行。 |
进程的特征 |
结构性:有程序段、数据段和PCB 动态性:随着创建和撤销而产生和消亡 并发性:多个进程实体同存于内存中,同时运行 独立性:各进程的地址空间相互独立, 异步性:各进程按各自独立的、不可预知的速度向前推进 |
进程三种基本状态 |
就绪状态:已获得除CPU外的所需资源,等待分配CPU 执行状态:占用CPU运行;此状态的进程的数目<=CPU的数目 阻塞状态:等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行。该事件发生前即使把处理机分配给该进程,也无法运行
|
进程的创建 |
初始化PCB,向PCB中填写控制管理进程的信息 |
进程的终止 |
将PCB清零,归还PCB |
进程挂起 |
①执行的进程暂停 ②就绪的进程暂不调度(就绪挂起) ③阻塞的进程即使引起阻塞的事件消失也不调度(阻塞挂起) |
3、进程的同步
3.1、相关定义
目的:进程之间能有效的共享资源和相互合作,又能保证程序的执行具有可再现性。
临界资源:一次仅允许一个进程使用的资源,诸进程之间只能用互斥的方式进行访问
访问临界资源的过程:每个进程进入临界区之前应先对欲访问的临界资源进行检查,看是否正在被访问。如果此刻该临界资源未被访问,该进程可进入临界区,并设置它正在被访问的标志。
进入区:在临界区之前执行的这段代码称为进入区,设置它正在被访问的标志。
退出区:在临界区之后也要加上一段代码,用于将临界区被访问的标志恢复为未被访问的标志。
3.2、同步机制遵循的规则
空闲让进 |
当无进程处于临界区时,应允许一个进程进入临界区 |
忙则等待 |
当已有进程进入临界区时,其他进程必须等待 |
有限等待 |
对要求访问临界资源的进程,应保证在有限时间内进入自己的临界区,防止"死等" |
让权等待 |
当进程不能进入自己的临界区时,应立即释放处理机,防止"忙等" |
3.3、硬件同步机制(开锁进入,关锁等待)
为了防止多个进程同时测试到锁打开的情况,测试和关锁的操作必须是连接的,不允许分开进行。
3.3.1关中断
关闭中断—锁测试—完成测试—上锁—打开中断
缺点:滥用关中断权利导致严重后果;关中断时间过长影响系统效率,限制执行程序的能力;关中断方法不适用于多个CPU系统。
3.3.2Test andSet指令
Lock为false时表示资源空闲,lock为true时表资源被占用
3.3.3利用Swap指令实现进程互斥
3.3.4、信号量机制
(1)整型信号量——忙等
仅能通过两个标准的原子操作wait(S)和signal(S)来访问。这两个操作一直被分别称为P、V操作。wait(S)和signal(S)是原子操作,执行时是不可中断
(2)记录型信号量——让权等待
在记录型信号量机制中,除了需要一个用于代表资源数目的整型变量value外,还应增加一个进程链表L,用于链接上述的所有等待进程。
(3)AND型信号量
将进程在整个运行过程中需要的所有资源,一次性全部地分配给进程,待进程使用完后再一起释放。要么全部分配到进程,要么一个也不分配。 由死锁理论可知,这样就可避免上述死锁情况的发生。
(4)信号量集
一次性分配多个资源。
3.4信号量例题
利用信号量实现前趋关系:
4、进程之间的通信
进程的通信 |
|
定义 |
为协调完成某一任务,几个进程间应保持联系,即交换一定数量的信息。信号量机制就是一种进程通信方式。 |
类型 |
(1)共享存储器系统:对用户不透明,只适合传递少量数据,属于低级通信方式 (2)消息传递系统:高级通信方式 (3)管道(Pipe)通信:有一个两者共有的都可以进行读写的文件夹 |
缺点 |
(1)交换的信息量比较少;(2)效率低;(3)对用户不透明。 |
5、线程(threads)
1、进程的基本属性
(1)可拥有资源的独立单位:在内存中有独立的物理存储空间
(2)可独立调度和分派的基本单位,有唯一的PCB
2、为什么需要引入线程
进程能并发执行,需要创建,撤销,切换进程,消耗一定系统资源。线程的引入正是为了简化进程间的通信,以小的开销来提高进程内的并发程度从而提高系统吞吐量。
3、线程的属性
(1)传统的进程称为重型进程,线程称为轻型进程。
(2)线程是进程中的一个运行实体,线程是一个CPU调度单位,线程是能独立运行的基本单位,资源的拥有者还是进程或称任务,独立分配资源的基本单位还是进程。
(3)同一进程中的线程切换不会引起进程的切换,不同进程中的线程的切换会引起进程的切换。
(4)同一进程中的线程共享这个进程的内存地址和资源,但是不同的进程是有独有的唯一的内存地址,
(5)每个线程又有一个TCB(线程控制块),是每个线程的唯一标识符。