进程管理四经典进程同步问题
进程管理习题课
一、判断题1.( )操作系统的所有程序都必须常驻内存。
2.( )多道程序设计可以缩短系统中作业的执行时间。
3.( )实时系统中的作业周转时间有严格的限制。
4.( )进程获得处理机而运行是通过申请而得到的。
5.( )同一个程序不能被创建成多个进程。
6.( )子进程可以继承它的父进程所拥有的所有资源。
7.( )对于临界区,最重要的是断定哪个进程先执行临界区里的那段程序。
8.( )若进程A和进程B在临界区上互斥,那么当A位于临界区内时不能打断它的运行。
9.( )进程间的互斥是一种特殊的同步关系。
10.( )临界区是指进程中用于实现进程互斥的那段代码。
11.( )资源的同时共享是指多个用户作业可以在同一时刻使用同一资源。
12.( )并发性是指若干事件在同一时间间隔内发生。
13.( )进程在运行中,可以自行修改自己的进程控制块PCB。
14.( )进程申请CPU得不到满足时,其状态变为等待态。
15.( )当一个进程从等待态变成就绪态,则一定有一个进程从就绪态变成运行态。
16.( )进程状态的转换是由操作系统完成的,对用户是透明的。
17.( )优先数是进程调度的重要依据,优先数大的进程首先被调度运行。
18.( )不可抢占式动态优先数法一定会引起进程长时间得不到运行。
19.( )进程调度的主要功能是从所有处于等待状态的进程中挑选一个"最合适"的进程,创建好进程运行所需要的环境,然后把处理机分配给它。
20.( )无限循环和无限延迟是一个概念。
21.( )导致系统出现死锁的一种原因是某个用户作业发生了死循环。
22.( )一旦出现死锁,所有进程都不能运行。
23.( )所有进程都挂起时系统陷入死锁。
24.( )参与死锁的进程至少有两个已经占有资源。
25. ( )有M个进程的操作系统出现死锁时,死锁进程的个数为1<k<=M。
26.( )所有进程都进入等待状态时,系统陷入死锁。
27.( )系统调用是用户程序请求操作系统服务的唯一方式。
操作系统复习-进程管理
2.1 进程与线程进程是指令的集合(错,程序是指令的集合,进程是程序的一次执行过程)优先级是进程调度的重要依据,一旦确定就不能改变(错)在单CPU的系统中,任意时刻都有一个进程处于运行状态(错,可以空转)进程申请CPU得不到满足时,其状态变为阻塞(错!等待CPU的进程处于就绪状态)进程获得CPU运行是通过调度得到的(对)线程是一种特殊的进程(对)进程是程序在一个数据集合上运行的过程,是系统进行资源分配和调度的独立单位(对)进程是PCB结构、程序和数据的集合(对)撤销父进程时,应同时撤销子进程(错!进程撤销可采用两种策略,一种是只撤销指定进程,另一种是撤销指定进程和其子孙进程)线程的切换,可能会引起进程的切换(对)引入线程后,处理机只在线程中切换(错!!)线程是比进程更小的能独立运行的基本单位(错,这句话的成立需要一定的前提条件)线程的引入增加了程序执行的时空开销(错,应为减少)一个进程一定包含多个线程(错)一个进程创建的若干线程共享该进程的程序段和数据段,但是它们有各自的运行栈区(对)中断是进程切换的必要条件,而不是充分条件。
(对)进程的基本特点:动态性,并发性,独立性,异步性,结构性。
在多道程序设计环境下,操作系统分配资源以进程为基本单位在引入线程的操作系统中,资源分配的基本单位是进程,CPU分配的基本单位是线程。
在引入线程的操作系统中,进程是资源分配的基本单位,线程是调度的基本单位从运行状态到就绪状态是由于时间片用完或出现了比现在进程优先级更高的进程(调度程序决定)从就绪状态到运行状态是调度程序决定的从阻塞状态到就绪状态是协作程序决定的从运行状态到阻塞状态是进程自身决定的(只有这个是主动的)对进程的管理和控制使用原语。
(原语包括创建原语,撤销原语,阻塞原语,唤醒原语等)一个进程被唤醒意味着进程变为就绪状态(该进程可能重新占用CPU)。
(唤醒原语的功能是将被被唤醒进程从阻塞队列中移到就绪队列中)降低进程优先级的合理时机是进程的时间片用完。
经典进程同步问题
一、利用记录型信号量
解决哲学家进餐问题
假设每一位哲学家拿筷子的方法都是:先 拿起左边的筷子,再拿起右边的筷子,则第i 位哲学家的活动可描述为:
20
第i位哲学家的活动可描述为: repeat wait(chopstick[i]); wait(chopstick[i+1] mod 5); …. eat; …. signal(chopstick[i]); signal(chopstick[i+1] mod 5); …. think; until false;
full:=full - 1; if full <0 then block; mutex:=mutex-1; if mutex<0 then block; mutex:=mutex+1; if mutex<=0 then wakeup; empty:=empty+1; if empty<=0 then wakeup;
9
Wait操作不能颠倒!! P:wait(empty) wait(mutex)
C:wait(full) wait(mutex)
如果颠倒 P:wait(mutex) mutexl.value=0 wait(empty) 如果此时缓冲池满empty=-1,P阻塞 C:wait(mutex) mutex.value=-1, C阻塞 wait(full) P阻塞在empty队列中,等待一个空缓冲 C阻塞在mutex队列中,等待公共缓冲池访问权
6
consumer://消费者进程 begin repeat wait(full); wait(mutex); nextc:=buffer[out]; out∶=(out+1) mod n; signal(mutex); signal(empty); 消费这件产品; until false; end
进程同步互斥算法
进程同步互斥算法一、什么是进程同步和互斥说到进程同步和互斥,咱们得先聊聊什么是“进程”这个东西。
进程其实就像是咱们做事的“任务”,大家可以想象一下,进程就像是你手上的一堆待办事项,每一个待办事项都是一个进程,大家一起在执行,各自独立,但又得协调好,免得乱了套。
比如说,你在做饭、你朋友在洗碗,你爸在修理车,大家都在忙各自的活,可是有个问题:万一厨房里只有一个锅,大家都要用,那锅就得排队了,谁先谁后得有个规定,这样才能避免抢锅。
这里面就涉及到“同步”和“互斥”两个概念。
同步嘛,简单说就是大家都得按规则一起做某件事,不能随便。
比如大家一起等着锅热好再开始做菜,谁也不能提前。
互斥呢,就是谁也不能和别人抢一样的资源,譬如锅,咱们只有一个锅,大家不能都抢着用,得排队。
进程同步就是为了确保大家按时按规矩做事,进程互斥则是为了避免资源争抢,免得弄得鸡飞狗跳。
二、进程同步和互斥的经典算法说到这些,大家可能会问了:“那这个同步互斥咋实现呢?难不难?”放心,实际上有一些经典的算法,可以帮助咱们“巧妙”地安排这些进程,避免乱成一团。
最常见的就是“信号量”和“互斥锁”了。
这个信号量就像是一个特殊的钥匙,钥匙多了,大家就可以同时干活;钥匙少了,只有一个进程能获得权限。
信号量常分为二值信号量和计数信号量,二值信号量就像是一个“开关”,要么开,要么关;而计数信号量则能控制更多的进程进入临界区,控制进程的数量。
还有一个很有意思的东西叫“互斥锁”。
就好比家里那扇门,只有一个人能进去,大家得排队。
这个锁一旦被某个进程拿走,其他的进程就只能在外面干等着,直到这个进程放下锁。
这个“锁”能够确保一次只有一个进程进入临界区,免得发生资源争夺,搞得大家都不开心。
你可以想象一下,假如没有锁,大家都想进入那扇门,结果就乱套了。
大家都开始推推搡搡,那锅估计就要掉了,菜也没法做。
三、进程同步与互斥的实际应用可能有些小伙伴会觉得这些术语有点难懂,其实它们的应用离我们生活可不远。
操作系统进程管理
Process Management
处理机管理是操作系统的基本管理功能之一,它所关心的是处理机的 分配问题。也就是说把CPU(中央处理机)的使用权分给某个程序。
通常把正准备进入内存的程序称为作业,当这个作业进入内 存后我们把它称为进程。处理机管理分为作业管理和进程管 理两个阶段去实现处理机的分配,常常又把直接实行处理机 时间分配的进程调度工作作为处理机管理的主要内容。
3、系统进程在管态下活动,而用户进程则在用户态 (目态)下活动。
另一种分类:计算进程,I/O进程等 注意:在UNIX系统中没有这样对进程进行分类。
动。 (4)在进程调度中,系统进程的优先级高于用
户进程。
2.5 进程的类型与区别
系统进程与用户进程的区别:
1、系统进程被分配一个初始的资源集合,这些资源 可以为它独占,也能以最高优先权的资格使用。用 户进程通过系统服务请求的手段竞争使用系统资源;
2、用户进程不能直接做I/O操作,而系统进程可以 做显示的、直接的I/O操作。
2.3进程的特征
5)结构特征:为能正确的执行并发,为每一个进程配置
了一个数据结构,称为进程控制块(PCB)。则一个进 程实体就由数据段、程序段、PCB三部分构成。
• 进程实体 = 数据段+程序段+PCB
PCB
私有 数据块
程 序 段
进程的结构
• 程序和进程不一定具有一一对应的关系。
2.4 与程序的区别
2、进程是一个独立的运行单位,能与其它进程并行(并 发)活动。而程序则不是。
3、进程是竞争计算机系统有限资源的基本单位,也是进 行处理机调度的基本单位。
4、一个程序可以作为多个进程的运行程序,一个进程也 可以运行多个程序。
全国计算机等级考试四级网络工程师操作系统原理部分
操作系统原理第一章操作系统概论1.1操作系统的概念操作系统的特征:并发性,共享性,随机性。
研究操作系统的观点:软件的观点,资源管理的观点,进程的观点,虚拟机的观点,服务提供者的观点。
操作系统的功能:1.进程管理:进程控制,进程同步,进程间通信,调度。
2.存储管理:内存分配与回收,存储保护,内存扩充。
3.文件管理:文件存储空间管理,目录管理,文件系统安全性。
4.设备管理5.用户接口UNIX是一个良好的、通用的、多用户、多任务、分时操作系统。
1969年AT&T公司Kenneth L.Thompson 用汇编语言编写了Unix第一个版本V1,之后Unix用C语言编写,因此事可移植的。
1.3操作系统分类1.批处理操作系统:优点是作业流程自动化较高,资源利用率较高,作业吞吐量大,从而提高了整个系统的效率。
缺点是用户不能直接与计算机交互,不适合调试程序。
2.分时系统:特点是多路性,交互性,独占性,及时性。
3.实时操作系统4.嵌入式操作系统5.个人计算机操作系统6.网络操作系统7.分布式操作系统8.智能卡操作系统1.4操作系统结构1.整体式结构2.层次结构3.微内核(客户机/服务器)结构:①可靠,②灵活(便于操作系统增加新的服务功能),③适宜分布式处理的计算机环境第二章操作系统运行机制2.1中央处理器寄存器:用户可见寄存器:数据寄存器(通用寄存器),地址寄存器,条件码寄存器。
控制和状态寄存器:程序计数器,指令寄存器,程序状态字。
目态到管态的转换唯一途径是通过终端和异常。
管态到目态的转换可以通过设置PSW指令(修改程序状态字)实现。
PSW包括:①CPU的工作状态代码②条件码③中断屏蔽码2.2存储体系存储器设计:容量,速度,成本存储保护:①界地址寄存器(界限寄存器):产生程序中断-越界中断或存储保护中断②存储键2.3中断与异常机制分类:中断:时钟中断,输入输出(I/O)中断,控制台中断,硬件故障中断异常:程序性中断,访管指令异常2.4系统调用系统调用程序被看成是一个低级的过程,只能由汇编语言直接访问。
进程管理习题及答案
进程管理习题答案一.选择题1.在进程管理中,当时进程从阻塞状态变为就绪状态. A. 进程被进程调度程序选中 B.等待某一事件C.等待的事件发生 D.时间片用完答:C2.分配到必要的资源并获得处理机时的进程状态是。
A.就绪状态 B.执行状态C.阻塞状态 D.撤消状态答:B3.P、V操作是。
A.两条低级进程通信原语 B.两组不同的机器指令C.两条系统调用命令 D.两条高级进程通信原语答:A4.对进程的管理和控制使用。
A.指令 B.原语C.信号量 D.信箱通信答:B5.进程的并发执行是指若干个进程。
A.同时执行 B.在执行的时间上是重叠的C.在执行的时间上是不可重叠的 D.共享系统资源答:B6.若P、V操作的信号量S初值为2,当前值为-1,则表示有等待进程。
A.0个 B.1个 C .2个 D.3个答:B7.进程的三个基本状态在一定条件下可以相互转化,进程由就绪状态变为运行状态的条件是①;由运行状态变为阻塞状态的条件是②。
A.时间片用完 B.等待某事件发生C.等待的某事件己发生 D.被进程调度程序选中答,①D ②B8.下列的进程状态变化中,变化是不可能发生的。
A.运行一就绪 B.运行一等待C.等待一运行 D.等待一就绪答:C9.一个运行的进程用完了分配给它的时间片后,它的状态变为。
A.就绪 B.等待C.运行 D.由用户自己确定答:A10.用P、V操作管理临界区时,信号量的初值应定义为。
A.一1 B.0 C.1 D.任意值答:C11.用V操作唤醒一个等待进程时,被唤醒进程的状态变为.A.等待 B.就绪 C.运行 D.完成答:B12.进程间的同步是指进程间在逻辑上的相互关系。
A.联接 B.制约 C. 继续 D.调用答:B13.是一种只能进行P操作和V操作的特殊变量。
A.调度 B.进程 C.同步 D.信号量答:D14.下面对进程的描述中,错误的是。
A.进程是动态的概念 B.进程执行需要处理机C.进程是有生命期的 D.进程是指令的集合答:D15.下面的叙述中正确的是。
操作系统复习资料全第二章 进程管理(3)-经典同步问题
信号量S的值除初始化(为资源数目)外,其值只能通过原
语wait和signal,也称P、V操作来改变。
整型信号量的P、V操作描述
wait和signal
wait(S): while S≤0 do no-op S∶=S-1; signal(S): S∶=S+1; 解释:P或wait操作:当S≤0时,说明无资源可用,一直测试直到其他进程 释放该类资源。
1. 至多只允许有四位哲学家同时去拿左边的筷子,最终能保证至少 有一位哲学家能够进餐。(增加一个总资源信号量S=4)
2. 仅当哲学家的左、右两只筷子均可用时,才允许他拿起筷子进餐 (AND型信号量)。
3. 规定奇数号哲学家先拿他左边的筷子,然后再去拿右边的筷子; 而偶数号哲学家则相反。按此规定,将是1、 2号哲学家竞争1号 筷子;3、4号哲学家竞争3号筷子。即五位哲学家都先竞争奇数 号筷子,获得后,再去竞争偶数号筷子,最后总会有一位哲学家 能获得两只筷子而进餐。
1. 利用记录型信号量解决读者 为实现Reader与Writer进程间在读或写时的互斥而设置了一个互 斥信号量Wmutex; 设置一个整型变量Readcount表示正在读的进程数目; 当 Readcount=0 时,表示尚无 Reader 进程在读时, Reader 进 程才需要执行 Wait(Wmutex) 操作。若 wait(Wmutex) 操作成功, 做Readcount+1和读文件操作; 当Reader进程在执行了Readcount减1操作后其值为0时,才须 执行signal(Wmutex)操作,以便让Writer进程写; 又因为Readcount是一个可被多个 Reader进程访问的临界资源, 因此,应该为它设置一个互斥信号量rmutex。
2-进程管理
CH2 进程管理CPU即处理机的一种,为方便见,以后我们不再区分。
进程是处理机内运行的一个实体,处理机管理核心是调哪个进程到处理机内运行,所以OS把处理机管理纳入进程管理范畴。
在OS 中, 进程管理与存储器管理是最重要的两部分, 也是最接近内核的两层. 在现代OS中, 进程是作为资源分配和独立运行的基本单位. 我们合并第二、三两章,主要内容有:§1 中断#1 中断概念#2 中断功能#3 中断处理§2 多道程序设计§3 进程引入#1 程序的顺序执行及其特征#2 程序的并行执行及其特征#3 进程定义及其特征#4 进程三态及其演变(就绪/执行/阻塞)#5 进程描述(PCB)及其组织(队列/索引)§4 进程控制#1 内核与原语#2 创建与撤消(Create/Destroy)#3 ★挂起与激活(Suspend/Active)#4 阻塞与唤醒(Blocked/Wakeup)§5 进程调度#1 概念(级别, 方式, 术语)#2 调度算法(FIFO/最短时间/最高优先级/轮转/多级反馈)#3 引起调度的原因和实现§6 进程同步#1 概念#2 信号量机制(概念/实现)#3 信号量应用(互斥/同步)#4 经典进程同步问题----例子#5 ★信号量集和管程§7 进程通信#1 类型(内存共享/消息机制/文件共享)#2 直接通信方式(一般模型/应答式/链路)#3 ★直接通信应用(消息缓冲)§8 死锁#1 原因及必要条件#2 预防#3 避免(教材称为预防不恰当)#4 检测#5 解除与书不同处: 处理机调度纳入进程调度;CH7的§1并发进程纳入进程引入一节;进程控制单独列一节§1 中断一、中断概念1、中断:CPU对系统中发生的异步事件的响应处理。
2、中断引入的目的是提高CPU的利用率和系统实时性能。
3、中断是多道程序设计实现的基点。
计算机操作系统—调度算法
计算机操作系统—调度算法# 有些计算会有问题谅解经典进程的同步问题1、吃⽔果桌上有⼀只盘⼦,每次只能放⼊⼀只⽔果,爸爸专向盘⼦中放苹果(apple),妈妈专向盘⼦中放桔⼦(orange),⼀个⼉⼦专等吃盘⼦中的桔⼦,⼀个⼥⼉专等吃盘⼦中的苹果。
只要盘⼦中空则爸爸或妈妈可向盘⼦中放⼀只⽔果,仅当盘中有⾃⼰需要的⽔果时,⼉⼦或⼥⼉可从中取出。
把爸爸、妈妈、⼉⼦、⼥⼉看做四个进程,⽤wait、signal操作进⾏管理,使这4个进程能正确地并发执⾏。
如图所⽰。
.png)1、定义信号量的含义与赋值定义⼀个是否允许向盘⼦中存放⽔果的信号量S,其初值为“1” ;定义两个信号量SP和SO分别表⽰盘⼦中是否有苹果或桔⼦的消息,初值均为“0” ,⼀个互斥信号量\[SP=表⽰盘⼦中有苹果;SO=表⽰盘⼦⾥⾯有桔⼦ \]2、写伪代码begin:S,SP,SO:semaphere; //设置信号量S:=1; SP:=0; SO:=0; //进⾏初始赋值Process 爸爸{BeginL1:准备⼀个苹果;wait(S); //申请空盘⼦的互斥信号量将苹果放⼊盘⼦中signal(SP); //盘⼦中有苹果,返回SPGoto L1; //调⽤L1⼥⼉取⾛盘⼦中的苹果end;}Process 妈妈{BeginL2:准备⼀个桔⼦;wait(S); //申请空盘⼦的互斥信号量将桔⼦放⼊盘⼦中signal(SO); //盘⼦中有桔⼦,返回SOGoto L2; //调⽤L2⼉⼦取⾛盘⼦中的桔⼦end;}Process ⼉⼦{beginL3:.wait(SO); //等待盘⼦中有桔⼦从盘⼦中拿⾛桔⼦signal(S); //拿⾛桔⼦后,盘⼦为空;由SO向S转变end;}Process ⼥⼉{beginL4:.wait(SP); //等待盘⼦中有苹果从盘⼦中拿⾛苹果signal(S); //拿⾛苹果后,盘⼦为空;由SP向S转变end;}end;2、共享打印机现有四个进程R1,R2,W1,W2,它们共享可以存放⼀个数的缓冲区。
OS
process A:
wait(DS); . .
.
process B:
. . . . . .
wait(ES); A阻塞
. . . . . .
wait(ES);
. . . . . .
wait(DS); B阻塞 进程出现死锁!
AND同步机制的基本思想是:
将进程在整个运行过程中需要的所有资源,一
次性全部地分配给进程,待进程使用完后再一起释
放。只要尚有一个资源未能分配给进程,其它所有 可能为之分配的资源,也不分配给他。亦即,对若 干个临界资源的分配,采取原子操作方式:要么全 部分配到进程,要么一个也不分配。
AND同步机制的定义如下:
Swait(S1, S2, „, Sn) if S1≥1 and „ and Sn≥1 then for i∶ =1 to n do Si∶=Si-1; endfor else place the process in the waiting queue associated with the first Si found with Si<1, and set the program count of this process to the beginning of Swait operation endif Ssignal(S1, S2, „, Sn) for i∶ =1 to n do Si=Si+1; Remove all the process waiting in the queue associated with Si into the ready queue. endfor;
生产者和消费者问题:
• 生产者和消费者两进程共享下面的变量:
• • • • • Var n, integer; Type item=…; var buffer : array[0, 1, …, n-1] of item; in, out: 0, 1, …, n-1; Counter : 0, 1, …, n;
操作系统教程第2章复习
S3
(a) 程序的顺序执行
(b) 三条语句的顺序执行
图 2-1
程序的顺序执行
第二章 进 程 管 理 2. 程序顺序执行时的特征 (1) 顺序性:处理机的操作严格按照程序所规定的顺序 执行,即每一操作必须在上一个操作结束之后开始。 (2) 封闭性:程序是在封闭的环境下执行的,即程序运 行时独占全机资源,资源的状态(除初始状态外)只有本程序 才能改变它。程序一旦开始执行,其执行结果不受外界因素 影响。 (3) 可再现性:只要程序执行时的环境和初始条件相同, 当程序重复执行时,不论它是从头到尾不停顿地执行,还是 “停停走走”地执行,都将获得相同的结果。 程序顺序执行时的特性,为程序员检测和校正程序的错 误带来了很大的方便。
第二章 进 程 管 理
2.1.2.前趋图
• 为了描述一个程序的各部分(程序段 或语句)间的依赖关系,或者是一个 大的计算的各个子任务间的因果关 系,我们常常采用前趋图方式。
图2-2 九个结点的前趋图
第二章 进 程 管 理
前趋图(续)
• P1为初始结点,P9为终止结点每个结点 还具有一个重量。 • 该前趋图,存在下面的前趋关系: P1→P2 , P1→P3 , P1→P4 , P2→P5 , P3→P5 , P4→P6 , P4→P7 , P5→P8 , P6→P8,P7→P9,P8→P9;或表示为: • P ={P1,P2,P3,P4,P5,P6,P7,P8,P9} ={(P1,P2),(P1,P3),(P1,P4), (P2,P5),(P3,P5),(P4,P6), (P4,P7),(P5,P8),(P6,P8), (P7,P9),(P8,P9)}
第二章 进 程 管 理 或者说,OS是根据PCB来对并发执行的进程进行控制和 管理的。例如,当OS要调度某进程执行时,要从该进程的 PCB中查出其现行状态及优先级;在调度到某进程后,要根据 其PCB中所保存的处理机状态信息,设置该进程恢复运行的现 场,并根据其PCB中的程序和数据的内存始址,找到其程序和 数据; 进程在执行过程中,当需要和与之合作的进程实现同 步、通信或访问文件时,也都需要访问PCB;当进程由于某种 原因而暂停执行时,又须将其断点的处理机环境保存在PCB中。 可见,在进程的整个生命期中,系统总是通过PCB对进程进行 控制的,亦即,系统是根据进程的PCB而不是任何别的什么而 感知到该进程的存在的。所以说,PCB是进程存在的惟一标志。
(完整版)操作系统-进程同步习题答案(22)
D.并发进程在访问共享资源时,不可能出现与时间有关的错误
2.下列资源中,(ACD)是临界资源。
A.打印机 B.非共享的资源
C.共享变量 D.共享缓冲区
3.进程从执行状态转换到阻塞状态的可能原因是(BD ).
A.时间片完B.需要等待其它进程的执行结果
C.执行了V操作D.执行了P操作
B.一个进程处于运行状态,n-1个进程处于等待状态。
C.一个进程处于运行状态,1个进程处于就绪状态,n-2个进程处于等待状态。
D.一个进程处于运行状态,n-1个进程处于就绪状态,没有进程处于等待状态
三、判断正误,错误的简要说明理由
1.一个临界资源可以对应多个临界区。(√)
2.互斥地使用临界资源是通过互斥地进入临界区实现的。(X)
分析在本题中,爸爸、儿子、女儿共用一个盘子,且盘中一次只能放一个水果。当盘子为空时,爸爸可将一个水果放入果盘中。若放入果盘中的是苹果,则允许女儿吃,儿子必须等待;若放入果盘中的是桔子,则允许儿子吃,女儿必须等待。本题实际上是生产者-消费者问题的一种变形。这里,生产者放入缓冲区的产品有两类,消费者也有两类,每类消费者只消费其中固定的一类产品。
(2)根据所定义的信号量,把应执行的P、V操作填入下述程序中,以保证进程能够正确地并发执行。
COBEGIN PROCESS Pi(i=1,2,…..)
Begin
;
进入售票厅;
购票;
;
退出;
End;
COEND
(3)若欲购票者最多为n个人,写出信号量可能的变化范围(最大值和最小值)。
解:
售票厅问题:
(1)定义一信号量S,初始值为20。
A.0 B.1 C.2 D.3
进程管理四经典进程同步问题
1. AND型信号量集
AND型信号量集用于同时需要多种资源且每种占用一个时的信 号量操作; • 问题:一段处理代码需要同时获取两个或多个临界资源―― 可能死锁:各进程分别获得部分临界资源,然后等待其余的 临界资源,"各不相让" • 解决方法:在一个wait原语中,将一段代码同时需要的多个 临界资源,要么全部分配给它,要么一个都不分配。称为 Swait(Simultaneous Wait)。 • 在Swait时,各个信号量的次序并不重要,虽然会影响进程归 入哪个阻塞队列。由于是对资源全部分配或不分配,所以总 有进程获得全部资源并在推进之后释放资源,因此不会死锁。
怎样判断有没有读者在读?
增加一个公共变量Readcount,表示当前有 几个读者进程在读。
新来一个读者进程,Readcount加1; 撤销一个读者进程,Readcount减1; 第一个读者:阻塞所有写者进程;允许其他读者进程执行。 最后一个读者:唤醒可能的写者进程。 Readcount成为临界资源,必须互斥访问: 增加互斥信号量Rmutex
需要注意: 原先处于阻塞状态的进程,被唤醒后,从何处开始执行? 与 记录型信号量机制有何不同?
15
生产者-消费者问题 - AND型信号量机制
• 若不愿意考虑wait操作的先后顺序,也可用AND型信号 量来实现。 • 生产者进程中: – 用Swait(empty,mutex)代替wait(empty)和wait(mutex), – 用Ssignal(mutex,full)代替signal(mutex)和signal(full) • 消费者进程中 – 用Swait(full,mutex)代替wait(full)和wait(mutex), – 用Ssignal(mutex,empty)代替signal(mutex)和 signal(empty)
(第4章进程及进程管理)习题四答案介绍
4-16 图 4-30(a)、4-30(b)分别给出了两个进程流图。试用信号灯的 P、V 操作实 现如图中所示进程之间的同步,并写出程序描述。
s p5 P1 s p6
P2
P3
P4
p7
f 图4.22(a)
f 图4.22(b)
答:(a) main() { var s12, s13, s14 : semaphore := 0, 0, 0; cobegin
Email: nancy78733@ 8
《操作系统原理与 Linux 系统实验》课后习题参考答案
沈华
湖北工业大学计算机学院
P1(); P2(); P3(); P4(); coend } P1() { p1 execute; V(s12); V(s13); V(s14); } P2() { P(s12); p2 execute; } P3() { P(s13); p3 execute; } P4() { P(s14); p4 execute; }
Email: nancy78733@
2
《操作系统原理与 Linux 系统实验》课后习题参考答案
沈华
湖北工业大学计算机学院
4-5 如下图所示,设一誊抄程序,将 f 中记录的序列正确誊抄到 g 中,这一程序 由 get、copy、put 三个程序段组成,它们分别负责获得记录、复制记录、输出 记录。请指出这三个程序段对 f 中的 m 个记录进行处理时各种操作的先后次序, 并画出誊抄此记录序列的先后次序图。 (假设 f 中有 1,2,…,m 个记录,s,t 为设置在主存中的软件缓冲区,每次只能装一个记录。 )
沈华
湖北工业大学计算机学院
P 对公共变量 Q 的访问 V
end coend 信号量 mutex 的取值范围为:mutex.value ∈[1, - (n-1)]。 ①值为 1 时,表示没有进程访问公共变量 Q; ②值为 0 时,表示有一个进程正在访问公共变量 Q; ③值<0 时,表示有一个进程正在访问公共变量 Q,同时又| mutex.value |个进程 等待访问公共变量 Q。
计算机操作系统_刘乃琦_进程管理
进程管理
2.1.4进程的特征和状态(2)
进程管理
图2-6 具有挂起状态的进程状态图
执行
请求I/O 激活 活动 就绪 释放 激活 活动 阻塞 挂起 静止 阻塞 挂起
挂起
静止 就绪 释放
进程管理
2.1.5进程控制块
1.进程控制块的作用 ٭是进程存在的唯一标志; ٭PCB(process control block)常驻内存 2.进程控制块中的信息 ٭标识、处理机状态,进 程调度信息,进程控制 信息 pid 进程状态 现场
register2:=counter; register2:=register2-1; counter :=register2; (register1:=5) (register1:=6) (register2:=5) (register2:=4) (counter:=6) (counter:=4)
C3
C4
P1
t
P2
P3
P4
进程管理
一个程序多条语句的并发 S1 S3 S2
S
4
t
进程管理
程序的并发执行(2)
二、特征 ٭间断性 ٭失去封闭性:主要由共享资源引起 ٭不可再现性:设N的初值为n。 ٭有2个循环程序A和B,它们共享一个变量N,程序A每执行 一次时,都要做N:=N+1; B则每次要执行Print(N), 然后 再做N:=0. 若程序A,B以不同的速度运行有以下三种不同 的结果
专业综合操作系统练习题
(信1号)量整机型制信由号:量
定义•信:号表量示”资源的个数的整型量S。除初始化外,
仅能•“通w过a以it操下作两(个P原操子作操)作、来s访ign问a。l操作(V操作)” 两部分组成,可用来解决进程的互斥与同步。
P、V操作是原子操作,不可中断。
wait(S)(P操作):
signal(S)(V操作):
的内容
5
【例1】(错误解法) (turn是int型的变量,初始化为i或j)
算法一能够保证同一时刻只有一个进程在临界区中,但是 却要求进程Pi和进程Pj轮流地访问临界区,若进程Pi不打算 进入临界区,那么进程Pj在进入过一次临界区后就再也不能 进入。所以不满足空闲让进和有限等待的两个准则。
6
【例2】(错误解法) (flag[2]是bool型的数组,两个元素初始化为false)
【分析】本题目考查进程的同步与互斥。本题目是苹果-桔子问题的变形。 进程P1可以看做是生产者,进程P2和P3可看做是消费者, 进程P1和P2、P3共享大小为N的缓冲区。 进程P1、P2和P3需互斥使用缓冲区, P1进程需要与P2进程、P3进程同步。
26
27
28
29
30
【例11】 在一辆公共汽车上,司机和售票员各行其职, 司机负责开车和到站停车;售票员负责售票和开、关门,当 售票员关好车门后,司机才能继续开车行驶。试用P、V操 作实现司机与售票员之间的同步。
main()
{
Cobegin
Process 2()
Process 1()
{…
{…
wait(mutex);
wait(mutex);
critical section
critical section
计算机操作系统复习题目(2)
第二章进程管理(三)进程同步5、经典同步问题1、生产者—消费者问题生产者消费者问题是一种同步问题的抽象描述。
计算机系统中的每个进程都可以消费(使用)或生产(释放)某类资源。
这些资源可以是硬件资源,也可以是软件资源。
当某一进程使用某一资源时,可以看作是消费,称该进程为消费者。
而当某一进程释放某一资源时,它就相当于生产者。
问题1:设某计算进程CP和打印进程IOP共用一个单缓冲区,CP进程负责不断地计算数据并送入缓冲区T中,IOP进程负责不断地从缓冲区T中取出数据去打印。
通过分析可知,CP、IOP必须遵守以下同步规则:(1)当CP进程把计算结果送入缓冲区时,IOP进程才能从缓冲区中取出结果去打印;(2)当IOP进程把缓冲区中的数据取出打印后,CP进程才能把下一个计算结果送入缓冲区.(3)为此设有两个信号量Sa=0,Sb=1,Sa表示缓冲区中有无数据,Sb表示缓冲区中有无空位置。
两个进程的同步可以描述如下:问题2:一组生产者通过具有N个缓冲区的共享缓冲池向一组消费者提供数据。
问题分析”:为解决生产者消费者问题,应该设两个同步信号量,一个说明空缓冲区的数目,用empty表示,初值为有界缓冲区的大小N,另一个说明已用缓冲区的数目,用full表示,初值为0。
由于在此问题中有M个生产者和N个消费者,它们在执行生产活动和消费活动中要对有界缓冲区进行操作。
由于有界缓冲区是一个临界资源,必须互斥使用,所以,另外还需要设置一个互斥信号量mutex,其初值为1。
问题的解:注意:在每个程序中用于实现互斥的P(mutex)和V(mutex)必须成对的出现对资源信号量empty和full的P和V操作,同样需要成对地出现,但它们分别处于不同的程序中。
在每个程序中的多个P操作顺序不能颠倒。
先同步后互斥。
生产者进程缓冲池消费者进程1┇┇i┇┇2、哲学家就餐问题有五个哲学家围坐在一圆桌旁,桌中央有一盘通心粉,每人面前有一只空盘子,每两人之间放一只筷子。
chap2进程管理
end
S6
例题
设有一个作业由4个进程组成,这4个进程必须按下图所 示的次序运行,试用P、V操作表达4个进程的同步关系。 a
P2
P1
b
P3
c
P4
d
习题1
1. 在多进程的系统中,为了保证公共变量的完整性, 各进程应互斥地进入临界区。所谓临界区是指 ( )。 A.一个缓冲区 B.一段数据区 C.同步机制 D.一 段程序 2. 如果多个进程共享系统资源或相互合作完成一个 共同的任务,则诸进程是以( )方式运行的。对 临界资源访问时采用( )方式,对于相互合作的 进程采用( )方式以协调各进程执行的( )。 A.共享 B.独立 C.互斥 D.同步 E. 次序 F. 次数 G.异步 3. 请阐述对于互斥临界区的管理要求。
问题思考:进程和程序的区别和联系?
区别: 1)进程是指令的有序集合,是静态的,进程是程序的执行,是 动态的。 2)进程的存在是暂时的,程序的存在是永久的。 3)进程的组成应包括程序和数据。除此之外,进程还应由记录 进程状态信息的“进程控制块”组成。
联系: 程序是构成进程的组成部分之一,一个进程的运行目标是 执行它所对应的程序。如果没有程序,进程就失去了其存在的 意义。从静态的角度看,进程由程序、数据和进程控制块三部 分组成。
创建进程(调用原语Create())的主要工作
向系统申请一个空闲的PCB。 分配资源,如内存。 给PCB的各数据项臵初值(进程名,状态,CPU信息,程序 计数器,栈指针,寄存器)——故调用创建原语的进程,必须提 供PCB的有关参数。 把新的PCB插入就绪队列。
课
堂 练 习
1、进程的定义是什么?它由哪几部分组成?它最少有哪 几种状态? 答:进程是进程实体的一次执行过程。进程由程序、数据 和进程控制块组成。一个进程至少有就绪、执行和阻塞三种 状态。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. AND型信号量集
AND型信号量集用于同时需要多种资源且每种占用一个时的信 号量操作; • 问题:一段处理代码需要同时获取两个或多个临界资源―― 可能死锁:各进程分别获得部分临界资源,然后等待其余的 临界资源,"各不相让" • 解决方法:在一个wait原语中,将一段代码同时需要的多个 临界资源,要么全部分配给它,要么一个都不分配。称为 Swait(Simultaneous Wait)。 • 在Swait时,各个信号量的次序并不重要,虽然会影响进程归 入哪个阻塞队列。由于是对资源全部分配或不分配,所以总 有进程获得全部资源并在推进之后释放资源,因此不会死锁。
19
Ssignal(S1, S2, …, Sn) { for (i = 1; i <= n; ++i) { ++Si; //释放占用的资源; for (each process P waiting in Si.L) //检查每种资源的等待队列的所有进程; { 从等待队列Si.L中取出进程P; 进程P进入就绪队列; } } } }
22
读者-写者问题的信号量解法
• 互斥关系分析
– 读者和写者不能同时进入共享数据区 – 多个写者不能同时进入共享数据区 写--写互斥 – 多个读者可以同时进入共享数据区
读--写互斥
• 同步关系分析
– 读者进入缓冲区,写者必须等待 – 写者进入缓冲区,读者必须等待 – 三种类型:
• 读者优先:一旦有读者进入,则后续读者均可进入 • 合理顺序:读者在先来的写者之后 • 写者优先:只要有写者等待,则后续读者必须等待
怎样判断有没有读者在读?
增加一个公共变量Readcount,表示当前有 几个读者进程在读。
新来一个读者进程,Readcount加1; 撤销一个读者进程,Readcount减1; 第一个读者:阻塞所有写者进程;允许其他读者进程执行。 最后一个读者:唤醒可能的写者进程。 Readcount成为临界资源,必须互斥访问: 增加互斥信号量Rmutex
10
思考
• 生产者进程中,两个wait操作的顺序能否互 换? 如果某种原因使得生产者进程执行了多次,而消费者 进程一次也没执行,从而全部缓冲区都存满新数据时, • 生产者进程先执行 wait(mutex),再执行 再执行一次生产者进程就会死锁。 wait(empty), 何时会出错? 如果某种原因使得消费者进程执行了多次,而生产者 • 消费者进程中,先 wait(mutex),再wait(full) 进程一次也没执行,从而全部缓冲区都为空时,再执 何时会出错? 行一次消费者进程就会死锁。
需要注意: 原先处于阻塞状态的进程,被唤醒后,从何处开始执行? 与 记录型信号量机制有何不同?
15
生产者-消费者问题 - AND型信号量机制
• 若不愿意考虑wait操作的先后顺序,也可用AND型信号 量来实现。 • 生产者进程中: – 用Swait(empty,mutex)代替wait(empty)和wait(mutex), – 用Ssignal(mutex,full)代替signal(mutex)和signal(full) • 消费者进程中 – 用Swait(full,mutex)代替wait(full)和wait(mutex), – 用Ssignal(mutex,empty)代替signal(mutex)和 signal(empty)
3
4 用信号量实现进程的同步--生产者-消费者问题
• 互斥关系分析
– 任何时刻,只能有一个进程在缓冲区中操作 – 引入互斥信号量(mutex) – 信号量初值为1. 如果变为0,表明已有进程进入临界区;
• 同步关系分析
– 对于“生产者”而言,缓冲区满则应等待 – 引入同步信号量“empty”,初值为n。为0表示缓冲区全 满 – 对于“消费者”而言,缓冲区空则应等待 – 引入同步信号量“full”,初值为0表示缓冲区全空 4
7
在生产者进程中使用一局部变量nextp,用 于暂时存放每次刚生产出来的产品;而
在消费者进程中,则使用一个局部变量
nextc,用于存放每次要消费的产品。
8
Var mutex,empty,full: semaphore:=1,n,0; buffer:array[0,…,n-1] of item; in,out: integer:=0,0; begin parbegin proceducer: begin repeat producer an item nextp; wait(empty); wait(mutex); buffer(in):=nextp; in:=(in+1) mod n; signal(mutex); signal(full); until false; end
4 用信号量实现进程的同步--生产者-消费者问题
5
4 用信号量实现进程的同步--生产者-消费者问题
6
• 我们可利用一个数组来表示上述的具有n个(0, 1,…,n-1)缓冲区的缓冲池。用输入指针in来 指示下一个可投放产品的缓冲区,每当生产者 进程生产并投放一个产品后,输入指针加1; 用一个输出指针out来指示下一个可从中获取 产品的缓冲区,每当消费者进程取走一个产品 后,输出指针加1。由于这里的缓冲池是组织 成循环缓冲的,故应把输入指针加1表示成 in:= (in+1)mod n; 输出指针加1表示成out:= (out+1) mod n。
11
同步/互斥信号量的使用方法
• 互斥信号量
– 必定成对出现:进入临界区——临界区——退出 临界区
• 同步信号量
– 未必成对出现,依赖于同步关系的性质
• 同步信号量和互斥信号量的操作顺序
– 基本原则:互斥信号量永远紧邻临界区:同步在前, 互斥在后。
12
2.4.2 信号量集
信号量集用于同时需要多个资源时的信号量操作;
end parend end
9
4 用信号量实现进程的同步--生产者-消费者问题总结
思考1:mutex和empty两个信号量之间有什么区别吗?
思考2:多信号量的操作顺序有要求吗?
互斥信号量 mutex:防止多个进程同时进入临界区 同步信号量 empty和full:保证事件发生的顺序 缓冲区满时,Producer停止运行 缓冲区空时,Consumer停止运行 概念差别——互斥与同步(并发的两个要素) 互斥:保护临界区,防止多个进程同时进入 同步:保证进程运行的顺序合理
复习
•记录型信号量及其wait、Signal操作意义; •生产者--消费者问题:信号量意义、初值 •生产者进程中,两个wait操作顺序能否颠倒, 为什么? •什么情况下会产生死锁现象? •And型信号量机制及其Swait、Ssignal操作 意义
1
进程通信
经典进程同步问题
• 生产者-消费者问题
– 有界缓冲区问题的建模
需要注意: 原先处于阻塞状态的进程,被唤醒后,从何处开始执行? 与 记录型信号量机制有何不同?
20
• 一般"信号量集"的几种特定情况:
– Swait(S, d, d)表示每次申请d个资源,当少于d个 时,便不分配; – Swait(S, 1, 1)表示互斥信号量; – Swait(S, 1, 0)作为一个可控开关
14
Ssignal(S1, S2, …, Sn) { for (i = 1; i <= n; ++i) { ++Si; //释放占用的资源; for (each process P waiting in Si.queue) //检查每种资源的等待队列的所有进程; { 从等待队列Si.queue中取出进程P; 进程P进入就绪队列; } } }
23
• 当读者进程到来时,三种情况:
– 1)无读者、写者:新读者可以读 读--写互斥 – 2)有写者等待,但有其它读者正在读:新读者也 可以读 – 3)有写者写:新读者等 读--写互斥 读--写互斥 写—写互斥: • 当写者进程到来时,三种情况: 互斥信号量 – 1)无读者、其他写者:新写者可以写 Wmutex – 2)有读者:新写者等待 读--写互斥 – 3)有其它写者:新写者等待 写--写互斥 2要多种资源、每种占用的数目不同、 且可分配的资源还存在一个临界值时的处理;
• 问题:一次需要N个某类临界资源时,就要进行N次 wait操作--低效又可能死锁 • 方法:在AND型信号量集的基础上进行扩充:进程 对信号量Si的测试值为ti(用于信号量的判断,即当 Si>= ti时,表示可用资源数量大于ti,才分配资源, 否则便不予分配),占用值为di(用于信号量的增减, 即 • 分配资源时Si = Si – di 释放资源时Si = Si + di) • Swait(S1, t1, d1; ...; Sn, tn, dn); 18 • Ssignal(S1, d1; ...; Sn, dn);
Swait(S1, S2, …, Sn) //P原语; { while (TRUE) { if (S1 >=1 && S2 >= 1 && … && Sn >= 1) { //满足资源要求时的处理; for (i = 1; i <= n; ++i) --Si; //注:与wait的处理不同,这里是在确信可满足 //资源要求时,才进行减1操作; break; } else { //某些资源不够时的处理; 调用进程进入第一个小于1信号量的等待队列Sj.L; 阻塞调用进程; 将调用进程的PC置为swait操作开头 } } }
13
Swait(S1, S2, …, Sn) {
//同时的P原语;
if (S1 >=1 && S2 >= 1 && … && Sn >= 1) { //满足资源要求时的处理; for (i = 1; i <= n; ++i) --Si; //注:与wait的处理不同,这里是在确信可满足 //资源要求时,才进行减1操作; } else { //某些资源不够时的处理; 调用进程进入第一个小于1信号量的等待队列Sj.queue; 阻塞调用进程; 将调用进程的PC置为swait操作开头 } }