操作系统第二章总结(2.1~2.4)

第2章 进程管理

2.1 进程的基本概念

要点:

分析程序执行顺序、以及并发的特征

进程的概念、特征与状态

进程控制块及其组织

1、关于程序执行顺序

1)引入前趋图(有向无循环图(DAG)):Pi结点:描述一个程序段、进程、或一条语句。 有向边“→”:结点之间的偏序或前序关系 Pi→Pk,则Pi是Pk的直接前趋,Pk是Pi的直接后继。

2)程序顺序执行时的特征

(1) 顺序性     处理机的操作严格按程序规定顺序执行

(2) 封闭性     程序一旦开始执行,其计算结果不受外界因素影响。

(3) 可再现性     程序执行只要初始条件一样,不论如何停顿,重复执行多少次结果都一样。

3)程序的并发执行分析

要符合前趋关系、并发不是随意的

多个程序如果无序并发,得到的只能是混乱的执行结果, 多道程序运行,走走停停的可能顺序有很多种,符合前趋图的关系才是合理并发。

4)并发程序执行时的特征

间断性。相互制约导致并发程序具有“执行——暂停——执行”这种间断性的活动规律。

失去封闭性。共享资源,资源状态由多道程序改变,程序运行失去封闭性。即程序运行受其他程序的影响。

结果不可再现性。结果不确定,程序执行将没有任何意义。

2、进程

程序:程序段 + 数据段

进程实体:程序段 + 数据段 + 控制块PCB

进程就是用于描述、控制程序在内存中并发运行的一个东东。

1)进程的定义

进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。

2)进程的特征

结构性特征,进程的根本——PCB

动态性  进程实质上是进程实体的一次有生命期的执行过程。程序只是静态的一组有序指令。 进程最基本特征

并发性 多个进程实体同存于内存中,在一段时间内同时运行。 有PCB的程序才能并发。

独立性

异步性

区别进程与程序※:

动与静: 进程是动态的,程序是静态的:程序是有序代码的集合;进程是程序的执行。

永久与暂时: 进程是暂时的,程序是永久的:进程是一个状态变化的过程,程序可长久保存。

结构: 进程的组成包括程序、数据和进程控制块(进程各种控制信息)。

进程与程序的对应关系: 都可1对n。通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。

3)进程的基本状态

进程执行时的间断性,决定了其具有多种状态。把握各进程所属的状态对进程控制至关重要。

与进程执行相关的各种共享资源有: CPU 存储器 I/O设备 时间片

注意体会这些资源在进程状态变化中对进程运行的影响。

进程的三种基本状态:

(1)就绪状态(Ready)       进程获得除CPU之外的所有必需资源,一旦得到CPU控制权,可立即运行。

(2)运行状态(Running)       进程已获得所有运行必需的资源,正在处理机上执行。

(3)阻塞状态(Blocked)       正在执行的进程由于发生某事件(请求I/O、申请缓冲、时间片到)而暂时无法执行时,便放弃CPU后暂停

各种状态下的进程队列:

单处理机系统,执行态的进程只有一个; 就绪态、阻塞态的进程可有多个。一般讲它们分别排称一个队列,称就绪队列、阻塞队列。 阻塞队列有的会根据不同原因再排成多个队列。

不少系统除上述三种状态,还有其他一些细节状态:挂起、新建、终止状态等。

3.  进程控制块PCB

进程实体:代码段+数据段+PCB

进程控制块定义 Process Control Block

存放进程的管理和控制信息的数据结构称为进程控制块。

Pcb的重要性:进程控制块是进程存在的唯一标志,是进程管理和控制的最重要的数据结构

1)进程控制块中的信息(pcb内)

(1)进程标识符信息

(2)处理机状态信息

(3)进程调度信息

(4)进程控制信息

2)PCB信息的存放

系统运行中有若干个程序的PCB,它们常驻内存的PCB区。 采用的数据结构:PCB结构体,PCB链表或队列

3)PCB的组织方式※

链接方式:同一状态的PCB,依靠链接指针链接成队列。就绪队列;若干个阻塞队列;空白队列(PCB区的空PCB块)

索引方式:同状态的PCB同样集中记录,但以索引表的方式记录PCB的地址。用专门的单元记录各索引表的首地址。

2.2 进程控制

进程控制的基本过程: 进程的创建 进程的终止 进程的阻塞与唤醒 进程的挂起和激活

关于进程的亲属关系:系统中运行的进程并不都是孤立的,有的进程运行后,会调用其他进程来执行,这样就组成了进程间的父子关系。可用 “进程图”描述一个进程的家族关系,该图实际就是一种有向树。

1.进程的创建

1)一个进程创建另一进程的事件(原因)

用户登录:分时情况下用户的请求

作业调度:批处理中

提供服务:运行中的用户程序提出功能请求,要创建服务进程(如打印服务)

应用请求:应用程序自己创建进程,完成特定功能的新进程。(木马程序)

2)创建过程※

(1) 申请空白PCB

(2) 为新进程分配资源         主要是内存资源的处理

(3) 初始化进程控制块         标识符(包括父进程的)、程序计数器指向程序入口地址,就绪态、优先级等信息的填写。

(4) 将新进程插入就绪队列

原语是由若干指令构成的原子操作过程,作为整体实现功能,不可被打断。

2.进程的终止

1)引起进程终止的事件

正常结束 异常结束 外界干预

2)终止过程

(1) 根据进程标示符,检索出该进程PCB,读其状态。     *IF 执行态,立即终止该进程,置调度标志为真,指示重新进行调度。     *IF 有子孙进程,亦应予以终止,以防成为不可控进程。

(2) 归还全部资源至其父进程或系统。

(3) 将该进程PCB从所在队列或链表中移出。

3.进程的阻塞与唤醒

1)引起进程阻塞和唤醒的事件

请求系统服务的满足情况

启动某种需等待(I/O)操作

合作需要的新数据尚未到达

执行某功能的进程暂时无新工作可做(如发送数据进程)

2)阻塞和唤醒过程

由进程调用阻塞原语阻塞自己,是主动行为:

(1)将PCB中的状态改为阻塞

(2)该PCB加入到阻塞队列中

(3)转进程调度,将处理机分配给另一进程

(4)进行进程切换,即根据两切换进程的PCB,保护与重新设置处理机状态。

阻塞与唤醒原语作用相反,成对使用。

(1)把阻塞进程从等待该事件的阻塞队列中移出

(2)将其PCB中的现行状态改为就绪

(3)将PCB插入到就绪队列中。

4.进程的挂起与激活

(1)检查被挂起进程的状态,活动就绪则改为静止就绪,活动阻塞则改为静止阻塞

(2)将该PCB复制到内存(方便检查)/外存(对换)指定区域

(3)*若挂起的进程是执行态,则需重新进行进程调度。

注意:进程只能挂起自己或其子孙进程。

激活原语的执行过程:若挂起进程在外存上,将其调入内存 检查进程状态,若处于静止就绪,则改为活动就绪,若处于静止阻塞,则改为活动阻塞

2.3 进程同步

理解同步的含义

信号量机制控制进程同步

管程

进程间有什么相互影响?

两种制约关系:

间接相互制约关系:主要源于资源共享,表现为 进程A---打印机资源---进程B(互斥)

直接相互制约关系:主要源于进程合作,表现为 进程A写缓冲---进程B读缓冲(有序)

1.进程同步的基本概念

1)进程同步的主要任务:使并发执行的诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性。

2)临界资源:一次仅允许一个进程使用的资源。

消费者问题:生产者和消费者都以异步方式运行,但它们之间必须保持同步:没有产品不能取,没有空间不能放。也不能同时对一个空间进行取和放

对生产者和消费者而言,counter应作为临界资源,应对其互斥访问

若是一群生产者和消费者,生产者之间共同要影响的变量in要互斥;消费者间的out也一样。

互斥:在操作系统中,当一个进程进入临界区使用临界资源时,另一个进程必须等待,直到占用临界资源的进程退出临界区,我们称进程之间的这种相互制约关系为“互斥”。

同步:多个相互合作的进程,在一些关键点上可能需要互相等待或互相交换信息,这种相互制约关系称为进程同步关系。可理解为“有序”。

如:生产和消费的“有序”关系靠对counter的正确判断达到,而对counter的修改必须“互斥”修改。

3)临界区

每个进程中访问临界资源的那段代码叫临界区。 为了正确同步,对临界区的代码要增加控制

4)同步机制应遵循的规则

实现互斥的方法应符合如下每条原则

空闲让进:资源使用最基本原则

忙则等待:保证互斥

有限等待:合适时被唤醒防止死等

让权等待:能主动释放CPU防止忙等

同步控制的关键

主要涉及”判断”和”修改标志”操作

不应被打断(原语,OS核心态运行)

如何制定一种写法,使标志的使用适用于各种具体应用情况?

硬件同步机制

①关中断 ②Test-and-Set指令 ③利用Swap指令实现进程互斥

2.信号量机制

1) 整型信号量

最初的信号量机制,两个原子操作对一个共享整型量进行操作。 信号量定义为一个整型量; 根据初始情况赋相应的值; 仅能通过两个原子操作来访问。

P操作  wait(S):                   While S<=0 do no-op;   S:=S-1;

V操作  signal(S):                    S:=S+1;

2)记录型信号量

整型信号量符合“有限等待”原则

signal释放资源后,当CPU被分配给等待进程后,等待进程仍可继续执行,可以符合“有限等待”。

但整型信号量不符合“让权等待”原则

整型信号量的wait操作,当s ≤0时,当前进程会占着CPU不断测试;

信号量原语不能被打断,这个占有CPU的进程会一直不断的占据CPU循环下去,陷入忙等。

改进:条件不符时应能够主动放弃CPU

新问题:放弃CPU的进程进入阻塞队列:因等待某信号量而放弃CPU的等待进程会有“若干”个,需将它们组织管理起来,并在合适的时候唤醒。

定义信号量semaphore代表可用资源实体的数量。又叫信号灯。 当≥0,代表可供并发进程使用的资源实体数 当<0,表示正在等待使用该资源的进程数。 建立一个信号量必须经过说明,包括 信号量所代表的意义 赋初值 建立相应的数据结构,以便指向等待使用临界区的进程。 除初值外,信号量的值仅能由标准原子操作P、V操作来改变。 PV操作是荷兰语通过和释放的意思。

3)信号量的基本应用

实现进程互斥 实现进程间的前趋关系(有序)

实现多个进程互斥※

互斥信号量注意点:

互斥信号量mutex初值为1;

每个进程中将临界区代码置于P(mutex)和V(mutex)原语之间

必须成对使用P和V原语(在同一进程中),不能次序错误、重复或遗漏: 遗漏P原语则不能保证互斥访问 遗漏V原语则不能在使用临界资源之后将其释放(给其他等待的进程);

实现有序

前趋关系:     并发执行的进程P1和P2中,分别有代码C1和C2,要求C1要在C2开始前完成;

为每对前趋关系设置一个同步信号量S12,并赋初值为0。则只有V操作所在进程获得cpu时能运行

控制同步顺序的注意点

信号量值为0的点是限制的关键所在; 成对使用P和V原语(在有先后关系的两个进程中),不能次序错误、重复或遗漏,否则同步顺序出错。

4)AND型信号量

出现原因:一些应用往往需要两个或多个共享资源,而不是前述的一个资源。进程同时要求的共享资源越多,发生死锁可能性越大。 解决思想:         一次性分配给进程所需资源,用完一起释放。Wait操作时对它所有需要的资源都要判断,有AND条件,故称“AND同步”、“同时wait”。

5)信号量集

引入原因: 每次只能获得或释放一个单位的资源,低效; 某些时候资源分配有下限的限制; 修改:在大于可分配设置的下界值t前提下,每次可分配d个。

只有一个信号量S的几种特殊情况:

 Swait(S, d, d),,允许每次申请d个资源,若现有资源数少于d,不予分配。

 Swait(S, 1, 1),蜕化为一般的记录型信号量,一次申请一个,至多分配一个(S>1时可计数,或S=1时可控制互斥)。

 Swait(S, 1, 0),当S>=1时,允许多个进程进入某特定区,当S变为0后,阻止任何进程进入特定区,相当于可控开关。并不对S资源的数量产生影响。

2.4 经典进程同步问题

生产者—消费者问题 互斥、同步

哲学家就餐问题 互斥

读者——写者问题 有条件的互斥

1. 生产者—消费者问题

The proceducer – consumer problem:多个生产者和消费者对n个缓冲区的使用。

不考虑互斥、同步问题会导致counter计数错误 如何设置信号量?从资源、顺序两个角度分析:

无论生产者、消费者使用缓冲池时应保证互斥使用(互斥信号量mutex )

生产者和消费者间交叉有序: 有序的控制最根源在产品数量上。 设置两个信号量:         分别针对生产者、消费者设置不同的信号量,empty和full分别表示缓冲池中空缓冲池和满缓冲池(即产品)的数量。

每个程序中用于实现互斥的wait(mutex)和signal(mutex)必须成对地出现。

控制顺序的信号量empty和full的wait和signal操作,成对地出现在不同的进程中。

在每个程序中的多个wait操作顺序不能颠倒。且应先执行对资源信号量的wait操作,再执行对互斥信号量的wait操作,否则可能引起进程死锁。

模拟交替执行过程,检查控制是否正确。

2. 哲学家进餐问题

1)记录型信号量解决哲学家进餐问题

2)就餐死锁问题

3. 读者——写者问题

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值