操作系统练习 同步问题
操作系统实验一-进程同步
![操作系统实验一-进程同步](https://img.taocdn.com/s3/m/0de50417f12d2af90242e630.png)
实验一进程同步一、实验目的:分析进程的同步与互斥现象,编程实现经典的进程同步问题——生产者与消费者问题的模拟,进一步加深对进程同步与互斥的理解。
二、实验内容:用C语言实现对生产者与消费者问题的模拟。
实验原理:生产者和消费者是经典的进程同步问题,在这个问题中,生产者不断的向缓冲区中写入数据,而消费者则从缓冲区中读取数据。
生产者进程和消费者对缓冲区的操作是互斥,即当前只能有一个进程对这个缓冲区进行操作,生产者进入操作缓冲区之前,先要看缓冲区是否已满,如果缓冲区已满,则它必须等待消费者进程将数据取出才能写入数据,同样的,消费者进程从缓冲区读取数据之前,也要判断缓冲区是否为空,如果为空,则必须等待生产者进程写入数据才能读取数据。
三、实验准备:1. 实现步骤:(1)分析计算机系统中对资源的分配与释放过程:计算机系统中的每个进程都可以消费或生产某类资源。
当系统中某一进程使用某一资源时,可以看作是消耗,且该进程称为消费者。
而当某个进程释放资源时,则它就相当一个生产者。
(2)定义生产者消费者问题中的各数据结构,并初始化信号量;(3)创建生产者与消费者进程,利用信号量实现生产者与消费者之间的同步与互斥;最后编程实现。
2. 相关函数:在实现的过程中需要用到以下API函数:(1)CreateThread()//该函数创建一个在调用进程的地址空间中执行的线程。
若线程创建成功,将返回该线程的句柄。
函数原型:HANDLE CreateThread (LPSECURITY_ATTRIBUTES lpThreadAttributes, //描述安全性,用NULL表示使用缺省值DWORD dwStackSize, //新线程拥有自己的堆栈,0表示使用缺省值1MB,推荐LPTHREAD_START_ROUTINE lpStartAddress, //新线程的起始地址,放线程函数名称LPVOID lpParameter,//此值被传送到线程函数去作为参数DWORD dwCreationFlags,//允许产生一个暂时挂起的线程,默认是0立即开始执行LPDWORD lpThreadld );//新线程的ID被传到这用法举例:hHandle1 = CreateThread( (LPSECURITY_ATTRIBUTES) NULL,0,(LPTHREAD_START_ROUTINE) ThreadName1,(LPVOID) NULL,0, &dwThreadID1 );(2)CreateMutex()函数可用来创建一个有名或无名的互斥量对象,函数返回值为互斥对象的句柄。
操作系统练习同步问题有答案
![操作系统练习同步问题有答案](https://img.taocdn.com/s3/m/427b888b227916888586d730.png)
操作系统练习题:1 在南开大学和大学之间有一条弯曲的小路,其中从S到T一段路每次只允许一辆自行车通过,但中间有一个小的“安全岛”M(同时允许两辆自行车停留),可供两辆自行车已从两端进小路情况下错车使用,如图所示。
试设计一个算法使来往的自行车均可顺利通过。
解答:首先中间的安全岛M仅允许两辆自行车通过,应作为临界资源设置信号量。
但仔细分析发现,在任何时刻进入小路的自行车最多不会超过两辆(南开和天大方向各一辆),因此不需为安全岛M设置信号量。
在路口S处,南开出发的若干辆自行车应进行路口资源的争夺,以决定谁先进入小路SK段,为此设置信号量S,用以控制路口资源的争夺;同理,设置信号量T,控制天大方向自行车对路口T的争夺。
又小路SK段仅允许一辆车通过,设置信号量SK初值为1,同理设置小路LT段信号量LT初值为1。
程序如下:S := l; T:=1; SK :=1; LT:=1;Parbegin进程P:(南开方向自行车)beginP(S) ; {与其它同方向的自行车争夺路口S}P(SK); {同对面自行车争夺路段SK}通过SK;进入M;**V (SK);{一旦进入M,便可释放路段SK}P (LT) ; {同对面的自行车争夺路段LT}通过LT;V (LT);{将路段LT释放}V(S); {将路口S释放给同方向的正在路口S处等待的自行车}end,进程Q:(天大方向自行车)beginP(T);P(LT);通过LT;进入M;V(LT);P(SK);通过SK;V(SK);V(T);End;Parend。
说明**:P进程进入安全岛M后,释放了路段SK,但没有释放路口S,原因在于它是向对面的4进程释放路段资源SK,而在P进程离开小路LT后,才会将路口S 释放给其他P进程,如不这样,就会死锁。
请考虑如下情况:两个方向各有一辆车前进,若在P进程到达安全岛M后,执行V (S)及V (SK)操作,则有可能使得同方向的其它P进程得到路段SK的使用权,而进入小路;同理,Q进程到达安全岛后执行V (LT)及V (T)操作,有可能使得同方向的其它Q进程得到路段LT 而进入小路。
操作系统复习资料全第二章 进程管理(3)-经典同步问题
![操作系统复习资料全第二章 进程管理(3)-经典同步问题](https://img.taocdn.com/s3/m/bf6d831c4431b90d6c85c781.png)
信号量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。
计算机操作系统练习题及答案
![计算机操作系统练习题及答案](https://img.taocdn.com/s3/m/e6b8e7afafaad1f34693daef5ef7ba0d4a736dfd.png)
计算机操作系统练习题及答案操作系统是计算机系统中的核心组成部分,它负责管理计算机的硬件和软件资源,为用户提供一个可靠、高效的计算环境。
而练习题则是对操作系统相关知识的巩固和提升,通过解答练习题,可以加深对操作系统原理和技术的理解。
以下是一些常见的计算机操作系统练习题及答案,供大家参考。
1.什么是操作系统?它的主要功能是什么?答案:操作系统是计算机系统的核心软件,它管理和控制计算机的硬件资源,为用户提供一个高效、方便的计算环境。
操作系统的主要功能包括进程管理、内存管理、文件系统管理、设备管理等。
2.简述进程和线程的概念,并指出二者的区别。
答案:进程是程序在计算机中的执行实例,是资源分配的基本单位。
而线程是进程中的一个执行单元,是CPU调度的最小单位。
区别在于进程是独立的执行单位,拥有独立的虚拟地址空间和系统资源;而线程是共享进程的地址空间和系统资源,可以并发执行。
3.请简述死锁的定义及发生的四个必要条件。
答案:死锁是指两个或多个进程在执行过程中,由于竞争资源或彼此等待,导致的无限阻塞的状态。
死锁发生必须满足以下四个条件: - 互斥条件:资源只能被一个进程持有或使用。
- 请求与保持条件:一个进程在持有一部分资源的同时,又请求其他进程正在占有的资源。
- 不剥夺条件:进程在未使用完资源之前,不能被强行剥夺资源。
- 循环等待条件:存在一个进程的资源申请序列,使得每个进程都在等待下一个进程所持有的资源。
4.什么是页式存储管理?请简述页表的作用。
答案:页式存储管理是一种虚拟存储技术,将主存和辅存分成固定大小的页面和页框,以页为单位进行地址映射和数据传输。
页表是一种数据结构,用于存储页面和页框的映射关系。
它的作用是通过页面号将虚拟地址映射到物理地址,实现虚拟地址到物理地址的转换。
5.什么是文件系统?请简述文件系统的组织结构。
答案:文件系统是操作系统用来管理和控制文件的软件部分,提供对文件的创建、读取、写入、删除等操作。
操作系统自测题三(进程同步)
![操作系统自测题三(进程同步)](https://img.taocdn.com/s3/m/97fd9e19ff00bed5b9f31d2f.png)
操作系统自测题三一选择题1.以下________操作系统中的技术是用来解决进程同步的。
A.管道B.管程C.通道D.DMA2.以下________不是操作系统的进程通信手段。
A.管道B.原语C.套接字D.文件映射3.如果有三个进程共享同一程序段,而且每次最多允许两个进程进入该程序段,则信号量的初值应设置为________。
A.3B.2C.1D.04.下面有关进程的描述,________是正确的。
A.进程执行的相对速度不能由进程自己来控制B.进程利用信号量的P、V操作可以交换大量的信息C.并发进程在访问共享资源时,不可能出现与时间有关的错误D.P、V操作不是原语操作5.信号可以用来实现进程之间的________A.调度B.同步与互斥C.同步D.互斥6.对于两个并发进程都想进入临界区,设互斥信号量为S,若某时S=0,表示________。
A.没有进程进入临界区B.有1个进程进入了临界区C.有2个进程进入了临界区D.有1个进程进入了临界区并且另一个进程正等待进入7.信箱通信是一种________方式。
A.直接通信B.间接通信C.低级通信D.信号量8.以下关于临界区的说法,________是正确的。
A.对于临界区,最重要的是判断哪个进程先进入B.若进程A已进入临界区,而进程B的优先级高于进程A,则进程B可以打断进程A而自己进入临界区C.信号量的初值非负,在其上只能做P、V操作D.两个互斥进程在临界区内,对共享变量的操作是相同的9.并发是指________。
A.可平行执行的进程B.可先后执行的进程C.可同时执行的进程D.不可中断的进程10.临界区是________。
A.一个缓冲区B.一段数据区C.一段程序D.栈11.进程在处理机上执行,它们的关系是________。
A.进程之间无关,系统是封闭的B.进程之间相互依赖、相互制约C.进程之间可能有关,也可能无关D.以上都不对12.在单处理机中,如果系统中有N个进程,则就绪队列中的进程个数最多的是________。
(完整版)操作系统-进程同步习题答案(22)
![(完整版)操作系统-进程同步习题答案(22)](https://img.taocdn.com/s3/m/96d4844133d4b14e852468ea.png)
A.时间片完B.其它进程执行了唤醒原语
C.执行了V操作D.执行了P操作
5.在单处理机系统中,设系统中有n个进程(n>2),且当前处理机没有执行进程调度程序,下述情况哪些可能发生( BCD)。
A.没有运行的进程,有2个进程处于就绪状态,n个进程处于等待状态。
A.临界资源是非共享资源 B.临界资源是任意共享资源
C.临界资源是互斥共享资源 D.临界资源是同时共享资源
4.对进程间互斥地使用临界资源,进程可以(D)
A.互斥地进入临界区 B.互斥地进入各自的临界区
C.互斥地进入同一临界区 D.互斥地进入各自的同类资源的临界区
5.设两个进程共用一个临界资源的互斥信号量mutex,当mutex=1时表示( B )。
〈进程P1〉〈进程P2〉
y:=1; x:=1;
y:=y+2; x:=x+1;
V(S1); P(S1);
z:=y+1; x:=x+y;
P(S2);V(S2);
y:=z+y; z:=x+z;
解:
因为P1和P2是两个并发进程,所以进程调度程序调度P1和P2的顺序是不确定的。
这里不妨假设P1先执行。进程P1执行到语句P(S2)时,S2=-1,进程P1阻塞。此时,y=3,z=4。当进程调度程序调度到进程P2时,由于进程P1已执行了V(S1),进程P2在执行P(S1)时并未阻塞而继续执行,当执行到V(S2)时,将P1唤醒,然后执行最后一个语句z:=x+z,此时x=5,z=9。当进程P1再次被调度时,继续执行P1的最后一个语句,此时y=12,最终结果是:x=5,y=12,z=9。
A.4 B.3 C.5 D.0
操作系统练习同步问题有答案.docx
![操作系统练习同步问题有答案.docx](https://img.taocdn.com/s3/m/bd6a06fb69eae009591bec26.png)
操作系统练习题:1 在南开大学和天津大学之间有一条弯曲的小路,其中从S到T一段路每次只允许一辆自行车通过,但中间有一个小的“安全岛”M(同时允许两辆自行车停留),可供两辆自行车已从两端进小路情况下错车使用,如图所示。
试设计一个算法使来往的自行车均可顺利通过。
K S南开天大T ML解答 :首先中间的安全岛 M仅允许两辆自行车通过,应作为临界资源设置信号量。
但仔细分析发现,在任何时刻进入小路的自行车最多不会超过两辆(南开和天大方向各一辆),因此不需为安全岛 M设置信号量。
在路口 S 处,南开出发的若干辆自行车应进行路口资源的争夺,以决定谁先进入小路SK段,为此设置信号量S,用以控制路口资源的争夺;同理,设置信号量T,控制天大方向自行车对路口T 的争夺。
又小路 SK段仅允许一辆车通过,设置信号量 SK初值为 1,同理设置小路 LT 段信号量 LT 初值为 1。
程序如下:S : = l; T : =1; SK := 1; LT : =1;Parbegin进程P: (南开方向自行车)beginP(S) ; { 与其它同方向的自行车争夺路口 S}P(SK); {同对面自行车争夺路段 SK}通过 SK;进入 M; **V (SK); {一旦进入 M,便可释放路段 SK}P (LT) ; { 同对面的自行车争夺路段 LT}通过 LT;V (LT) ;{将路段 LT 释放}V(S); {将路口 S 释放给同方向的正在路口 S 处等待的自行车}end,进程 Q:(天大方向自行车)beginP(T) ;P(LT) ;通过 LT;进入 M;V(LT) ;P(SK);通过 SK;V(SK);V(T) ;End;Parend。
说明**:P 进程进入安全岛 M后,释放了路段 SK,但没有释放路口 S,原因在于它是向对面的 4 进程释放路段资源 SK,而在 P 进程离开小路 LT 后,才会将路口 S 释放给其他 P 进程,如不这样,就会死锁。
操作系统很全很详细的进程同步与互斥 问题
![操作系统很全很详细的进程同步与互斥 问题](https://img.taocdn.com/s3/m/b2008101b52acfc789ebc9cd.png)
进程的同步
例1:请用信号量机制描述下列并发进程的同步关系。 请用信号量机制描述下列并发进程的同步关系。
S P1
P2
P3
P4 F
进程的同步
解法一:信号量表示进程能否开始。 解法一:信号量表示进程能否开始。 设信号量m1、m2、m3、m4分别表示进程 、P2、 分别表示进程P1 设信号量m1、m2、m3、m4分别表示进程P1、P2、 P3、P4能否开始执行,其初值m1为1,其余均为0。 P3、P4能否开始执行 其初值m1为 其余均为0 能否开始执行,
思考: 思考: 哪个信号量可以省略? 哪个信号量可以省略?
m1 p4() {
P(m3) ; 执行p3; 执行p3; V(m4) ;
P(m4) ; P(m4); P(m4); 执行p4; 执行p4;
}
}
}
}
进程的同步
解法二:信号量表示进程是否结束。 解法二:信号量表示进程是否结束。 设信号量m1、m2、m3、m4分别表示进程 、P2、 分别表示进程P1 设信号量m1、m2、m3、m4分别表示进程P1、P2、 P3、P4是否结束,其初值均为0。 P3、P4是否结束 其初值均为0 是否结束,
进程的同步
例3-2:吃水果。 吃水果。 父亲 父亲 { 洗水果; 洗水果; 放水果; 放水果; } } P1 0 桔子 苹果 女儿 儿子 { 取桔子; 取桔子; 吃桔子; 吃桔子; } P2 女儿 P3 while(true) { 取苹果; 取苹果; 吃苹果; 吃苹果; 儿子
while (true)
p3() { while(1) { P(m3) ; 取苹果; 取苹果; V(m1); V(m1); 吃苹果; 吃苹果; } }
进程的同步
现代操作系统2 - 4经典进程的同步问题
![现代操作系统2 - 4经典进程的同步问题](https://img.taocdn.com/s3/m/9e11e974effdc8d376eeaeaad1f34693daef1024.png)
Operating System
2023年11月12日星期日
Page 5
生产者—消费者问题
例如, 在输入时,输入进程是生产者,计算进程是消费 者;而在输出时,则计算进程是生产者,而打印进程是消 费者, 因此,该问题有很大的代表性及实用价值
I1
I2
I3
I4
C1
C2
C3
C4
P1
P2
P3
P4
Operating System
2023年11月12日星期日
Page 6
生产者—消费者问题
利用记录型信号量解决生产者—消费者问题 ❖ 互斥信号量mutex
➢ 假定在生产者和消费者之间的公用缓冲池中具有n个缓冲区, 这时可利用互斥信号量mutex实现诸进程对缓冲池的互斥使用, 为公用信号量
❖ 信号量empty和full
➢ 利用信号量empty和full分别表示缓冲池中空缓冲区和满缓冲 区的数量,用于实现同步,为私用信号量
2023年11月12日星期日
Page 3
N个P进程和M个C M+N个进程之间需要同步
同样M+N个进程之间
需要互斥访问缓冲池
Pi
同步和互斥的抽象
Cj ……
Operating System
2023年11月12日星期日
Page 4
问题分析
Pi
互 斥
……
临界资源
Cj
互 斥
互斥、同步
互斥:每次仅限一个进程(生产者或消费者)使用缓冲池 同步:生产者和消费者之程同步
经典进程的同步问题
管程机制 进程通信 线程
Operating System
2023年11月12日星期日
操作系统第3章(进程的同步与通信习题与解答)
![操作系统第3章(进程的同步与通信习题与解答)](https://img.taocdn.com/s3/m/78117223227916888586d707.png)
第3章进程的同步与通信习题与解答3.2 例题解析例3.2.1 多道程序系统程序的执行失去了封闭性和再现性,因此多道程序的执行不需要这些特性,这种说法是否正确?解这种说法不正确。
可以想象,如果一个程序在多道程序系统中,在相同的输入的情况下,多次执行所得结果是不同的,有谁还敢使用这个程序?因此,多道程序的执行也需要封闭性和再现性,只不过单道程序系统的封闭性和再现性是先天固有的,多道程序系统的程序执行要想获得封闭性和再现性,需通过程序员的精心设计才能得到。
所使用的方法就是同步和互斥的方法。
例3.2.2 多个进程对信号量S进行了5次 P操作,2次V操作后,现在信号量的值是 -3,与信号量S相关的处于阻塞状态的进程有几个?信号量的初值是多少?解(1) 因为S的当前值是-3,因此因为S处于阻塞状态的进程有3个;(2) 因为每进行一次P(S)操作,S的值都减1,每执行1次V操作S的值加1,故信号量的初值为-3+5-2=0;例3.2.3 如下锁的实现方法存在什么缺点?如何改进?LOCK(X) UNLOCK(X){ {do while X=1 ; X=0;X=1} }解存在的缺点是:当锁是关闭时,采用的是循环等待的方法,这样的等待还是要占用处理机的时间,应该采用阻塞等待的方法。
改进的锁实现如下:LOCK(X) UNLOCK(X){ {if X.value=1 if not empty(X.L) { insert( *, X.L); { P=remove(X.L);Block (*) Wakeup(P) } }else X.Value=1 else X.Value=0} }这里X.value是锁的值,X.L是存放由于锁X而阻塞的进程的队列。
insert( *, X.L)将当前进程的进程号插入到X.L,remove(X.L)是从X.L中移出一个进程号。
例3.2.4 使用多个进程计算Y=F1(X)+F2 (X).解(1) 确定并发和顺序操作在这个问题中,F1(X)和F2 (X)的计算是可以并行处理的,因此F1(X)和F2 (X)可以分别出现在两个进程中。
(现场管理)操作系统同步练习之作业管理(答案)
![(现场管理)操作系统同步练习之作业管理(答案)](https://img.taocdn.com/s3/m/96ebd24889eb172dec63b755.png)
操作系统同步练习之--作业管理(答案)一、单项选择题「分析]第5题要求在多道程序设计的环境中采用响应比高者优先调度算法选择作业,只要计算出三个等待的作业的响应比并按高低排序就是作业被选中的次序。
由于本题在10:00开始选择作业,因而三个作业J1、J2、J3的响应比分别为1、1.5、2,故作业被选中的次序应该是J3、J2、J1。
如果是一个单道系统,每次只能选择一个作业装人主存储器。
当把J3先装人主存储器后必须在J3完成后才去再选择,这时要重新计算响应比后再决定应选择哪个作业。
希望读者在审题时一定要看清题意条件,否则会误判而失分。
[题解]1.B 2.A 3.C 4.C 5.D 6.B 7.C 8.D二、多项选择题1.A,C,E2.A,B,C,D,E3.B,C,E4.A,B,C三、填空题1.作业2.作业步3.作业控制4.批处理方式,交互方式5.作业控制说明书6.作业控制语言7.自动,脱机8.输入井9.后备10.作业,进程11.现有的尚未分配的资源能满足被选作业的需求12.周转13.「分析」作业最短的周转时间是到达系统后立即被选中执行。
本题有三个作业同时到达系统,但在单道系统中每次只能选一个作业执行,在前一个作业完成后才可让下一个作业执行。
由于本题没有给出什么时间开始调度作业,因此,有两个作业至少要分别等待1小时和2小时后才能执行。
这样,这三个作业的周转时间至少分别为1小时,2小时,3小时。
于是,平均周转时间就至少为2小时。
「题解」2小时。
14.输出井15.操作控制命令16.菜单,窗口17.窗口18.活动窗口19.用户注册,作业控制20.注册21.注销22.前台,后台23.终端四、问答题1.[题解]程序是具有一定功能的一组语句(或一组指令)的集合。
进程是程序在数据集合上的一次执行过程。
作业是用户要求计算机系统处理的一个计算问题。
作业步是作业执行时需经历的加工步骤。
通常,一个作业要经过若干个作业步才能得到执行结果。
操作系统_进程同步算法习题精选
![操作系统_进程同步算法习题精选](https://img.taocdn.com/s3/m/2e7768ccaa00b52acfc7cac1.png)
A1: while (1) { P(Sin[1]); P(Sin[2]); 将数据放入缓冲区 V(Sout[1]); V(Sout[2]); }
Bi: while (1) { P(Sout[i]); 从缓冲区取数 V(Sin[i]); }
向目标前进一步:
• 设缓冲区的大小为m • 有一个发送进程A1 • 有二个接收进程B1、B2
Bi: while (1) { P(Sout[i]); V(mutex); 从缓冲区取数 P(mutex); V(Sin[i]); };
例题6
a,b两点之间是一段东西向的单行车道,现要设计一个自
动管理系统,管理规则如下: (1)当ab之间有车辆在行驶时同方向的车可以同时驶入ab 段,但另一方向的车必须在ab段外等待; (2)当ab之间无车辆在行驶时,到达a点(或b点)的车辆 可以进入ab段,但不能从a点和b点同时驶入; (3)当某方向在ab段行驶的车辆驶出了ab段且暂无车辆进
到达目标
• 设缓冲区的大小为m • 有n1个发送进程A1….An1 • 有n2个接收进程B1…Bn2
• 设有n2个信号量Sin[n2] 初值均为m • 设有n2个信号量Sout[n2] 初值均为0
Aj: while (1) { for(i=1;i<=n2;i++) P(Sin[i]); P(mutex); 将数据放入缓冲区 V(mutex); for(i=1;i<=n2;i++) V(Sout[2]); }
思考题: 如果S和T是由多个缓冲区组成的 缓冲池,上述算法将如何修改?
【例题3】
桌上有一空盘,最多允许存放一只水 果。爸爸可向盘中放一个苹果或放一个桔 子,儿子专等吃盘中的桔子,女儿专等吃 苹果。 试用P、V操作实现爸爸、儿子、女儿 三个并发进程的同步。
操作系统:进程同步三大经典问题
![操作系统:进程同步三大经典问题](https://img.taocdn.com/s3/m/8b8c0cd451e2524de518964bcf84b9d528ea2cf0.png)
操作系统:进程同步三⼤经典问题⽇期:2019/4/15内容:进程同步;⽣产者与消费者;读写者;哲学家进餐;信号量机制。
⼀、⽣产者与消费者问题1.1 版本1代码void producer(){while (count == n);buff[in] = produce_item(); in = (in + 1) % n;count++;}void consumer(){while (count == 0) ;item = buff[out];print(item);out = (out + 1) % n; count--;}存在问题>>两个while循环⼀直在"忙等",不符合进程同步的"让权等待"原则。
>>对于count变量的访问没有保护。
(需要加锁保护)1.2 版本2:使⽤信号量代码semaphore empty = n, full = 0; void producer(){while (true){wait(empty);buffer[in] = produce_item(); in = (in + 1) % n;signal(full);}}void consumer(){while (true){wait(full);item = buffer[out]; print(item);out = (out + 1) % n; signal(empty);}}存在问题>>如果有2个producer进程,empty>=2时,同时进⼊wait(empty)之后的临界区,对于buff的写和in的写产⽣竞争。
>>如果有2个consumer进程,full>=2时,同时进⼊wait(full)之后的临界区,对于out的写产⽣竞争。
1.3 版本3:临界区加锁(正确版本)代码semaphore pmutex = 1, cmutex = 1; semaphore empty = n, full = 0; void producer(){while (true){wait(empty);wait(pmutex);buff[in] = produce_item();in = (in + 1) % n;signal(pmutex);signal(full);}}void consumer(){while (true){wait(full);wait(cmutex);item = buff[out];print(item);out = (out + 1) % n; signal(cmutex);signal(empty);}}注:教材对于producer和consumer的临界区都使⽤了同⼀个mutex,表⽰producer和consumer互斥进⼊临界区。
进程同步典型例题(操作系统)
![进程同步典型例题(操作系统)](https://img.taocdn.com/s3/m/1376f436ba1aa8114431d9db.png)
进程同步练习题1.在公共汽车上,司机和售票员的工作流程如图所示。
为保证乘客的安全,司机和售票员应密切配合协调工作。
请用信号量来实现司机与售票员之间的同步。
司机售票员图司机和售票员工作流程图①约束:怎么密切配合协调工作才能保证安全呢?a)关车门之后再启动车辆;利用前驱图解释b)到站停车之后再开车门;②根据约束定义信号量;关车门和启动车辆需要一个信号量进行同步S1;到站停车和开车门之间需要一个信号量进行同步S2;③建立几个进程呢?a)为司机建立一个进程Driver;b)为售票员建立一个进程Conductor;Driver:Repeat启动车辆;正常行驶;到站停车;Until false;Conductor:Repeat关车门;售票;开车门;Until false;④加入同步关系:Driver:RepeatWait (s1);启动车辆;正常行驶;到站停车;Signal(s2)Until false;Conductor:Repeat关车门;Signal(s1);售票;Wait(s2)开车门;Until false;main(){Driver();Conductor ();}2.桌子上有一只盘子,盘子中只能放一只水果。
爸爸专向盘子中放苹果,妈妈专向盘子中放橘子,一个儿子专等吃盘子中的橘子,一个女儿专等吃盘子中的苹果。
用PV操作实现他们之间的同步机制。
分析:①约束:a)爸爸和妈妈竞争盘子,往盘子放水果,爸爸在放时,妈妈等待,或者相反;b)爸爸和女儿要同步,即爸爸放完苹果之后通知女儿来吃;同时女儿吃完之后要通知盘子可用;c)妈妈和儿子要同步,即妈妈放完橘子之后通知儿子来吃;同时儿子吃完之后要通知盘子可用;②经上述分析可知:需要3个信号量:S1表示临界资源盘子,初值1;爸爸和女儿需要一个信号量进行同步S2=0 妈妈和儿子需要一个信号量进行同步S3=0;③建立进程?爸爸:妈妈:女儿:儿子:取一个苹果;取一个橘子;从盘子取一个苹果;从盘子取一个橘子;放入盘子;放入盘子吃苹果;吃橘子;Until false; Until false; Until false; Until false;④加入同步关系。
操作系统练习 同步问题 有答案
![操作系统练习 同步问题 有答案](https://img.taocdn.com/s3/m/83ce41c54028915f804dc2f9.png)
操作系统练习题:1 在南开大学和天津大学之间有一条弯曲的小路,其中从S到T一段路每次只允许一辆自行车通过,但中间有一个小的“安全岛”M(同时允许两辆自行车停留),可供两辆自行车已从两端进小路情况下错车使用,如图所示。
试设计一个算法使来往的自行车均可顺利通过。
解答:首先中间的安全岛M仅允许两辆自行车通过,应作为临界资源设置信号量。
但仔细分析发现,在任何时刻进入小路的自行车最多不会超过两辆(南开和天大方向各一辆),因此不需为安全岛M设置信号量。
在路口S处,南开出发的若干辆自行车应进行路口资源的争夺,以决定谁先进入小路SK段,为此设置信号量S,用以控制路口资源的争夺;同理,设置信号量T,控制天大方向自行车对路口T的争夺。
又小路SK段仅允许一辆车通过,设置信号量SK初值为1,同理设置小路LT段信号量LT初值为1。
程序如下:S := l; T:=1; SK :=1; LT:=1;Parbegin进程P:(南开方向自行车)beginP(S) ; {与其它同方向的自行车争夺路口S}P(SK); {同对面自行车争夺路段SK}通过SK;进入M;**V (SK);{一旦进入M,便可释放路段SK}P (LT) ; {同对面的自行车争夺路段LT}通过LT;V (LT);{将路段LT释放}V(S); {将路口S释放给同方向的正在路口S处等待的自行车}end,进程Q:(天大方向自行车)beginP(T);P(LT);通过LT;进入M;V(LT);P(SK);通过SK;V(SK);V(T);End;Parend。
说明**:P进程进入安全岛M后,释放了路段SK,但没有释放路口S,原因在于它是向对面的4进程释放路段资源SK,而在P进程离开小路LT后,才会将路口S 释放给其他P进程,如不这样,就会死锁。
请考虑如下情况:两个方向各有一辆车前进,若在P进程到达安全岛M后,执行V (S)及V (SK)操作,则有可能使得同方向的其它P进程得到路段SK的使用权,而进入小路;同理,Q进程到达安全岛后执行V (LT)及V (T)操作,有可能使得同方向的其它Q进程得到路段LT 而进入小路。
计算机操作系统复习题目(2)
![计算机操作系统复习题目(2)](https://img.taocdn.com/s3/m/5a9c113aa32d7375a41780cf.png)
第二章进程管理(三)进程同步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、哲学家就餐问题有五个哲学家围坐在一圆桌旁,桌中央有一盘通心粉,每人面前有一只空盘子,每两人之间放一只筷子。
操作系统练习题及答案
![操作系统练习题及答案](https://img.taocdn.com/s3/m/a1dd6a2aa6c30c2259019ee9.png)
一、填空P15 填空题1.设计现代OS的主要目的是提高资源利用率和方便用户。
2.单道批处理系统是在解决人机矛盾和CPU与I/O设备速度不匹配的矛盾中发展起来的。
3.在单处理机环境下的多道程序设计具有多道、宏观上同时运行和微观上交替运行的特点。
4.现在操作系统的两个最基本的特征是并发和资源共享,除此之外,它还具有虚拟性和异步性的特征。
5.从资源管理的角度看,操作系统具有四大功能:处理机管理、存储器管理、设备管理和文件管理;为了方便用户,操作系统还必须提供友好的用户接口。
6.操作系统的基本类型主要有批处理系统、分时系统和实时系统。
7.批处理系统的主要优点是资源利用率高和系统吞吐量大;主要缺点是无交互作用能力和作业平均周转时间长。
8.实现分时系统的关键问题他是人机交互,为此必须引入时间片的概念,并采用时间片轮转调度算法。
9.分时系统的基本特征是多路性、独立性、交互性和及时性。
10.若干事件在同一时间间隔内发生称为并发;若干事件在同一时刻发生称为并行。
11.实时系统可分为实时信息处理系统和实时控制系统两种类型;民航销售系统属于实时信息处理系统;而导弹飞行控制系统则属于实时控制系统。
12.为了使实时系统高度可靠和安全,通常不强求资源利用率。
13.当前比较流行的微内核的操作系统结构,是建立在层次化结构的基础上的,而且还采用了客户机/服务器模式和面向对象程序设计技术。
P56 填空题1.在单用户单任务环境下,用户独占全机,此时机内资源的状态,只能由运行程序的操作加以改变,此时的程序执行具有封闭性和可再现性特征。
2.并发程序之间的相互制约,是由于它们的共享资源和相互合作而产生的,因而导致程序在并发执行时具有间断性或异步性特征。
3.程序并发执行与顺序执行时相比产生了一些新特征,分别是间断性、失去封闭性和不可再现性。
4.引入进程的目的是使程序能正确地并发执行,以提高资源利用率和系统吞吐量,而引入线程的目的是减少并发执行的开销,提高程序执行的并发程度。
操作系统练习 同步问题 有答案
![操作系统练习 同步问题 有答案](https://img.taocdn.com/s3/m/83ce41c54028915f804dc2f9.png)
操作系统练习题:1 在南开大学和天津大学之间有一条弯曲的小路,其中从S到T一段路每次只允许一辆自行车通过,但中间有一个小的“安全岛”M(同时允许两辆自行车停留),可供两辆自行车已从两端进小路情况下错车使用,如图所示。
试设计一个算法使来往的自行车均可顺利通过。
解答:首先中间的安全岛M仅允许两辆自行车通过,应作为临界资源设置信号量。
但仔细分析发现,在任何时刻进入小路的自行车最多不会超过两辆(南开和天大方向各一辆),因此不需为安全岛M设置信号量。
在路口S处,南开出发的若干辆自行车应进行路口资源的争夺,以决定谁先进入小路SK段,为此设置信号量S,用以控制路口资源的争夺;同理,设置信号量T,控制天大方向自行车对路口T的争夺。
又小路SK段仅允许一辆车通过,设置信号量SK初值为1,同理设置小路LT段信号量LT初值为1。
程序如下:S := l; T:=1; SK :=1; LT:=1;Parbegin进程P:(南开方向自行车)beginP(S) ; {与其它同方向的自行车争夺路口S}P(SK); {同对面自行车争夺路段SK}通过SK;进入M;**V (SK);{一旦进入M,便可释放路段SK}P (LT) ; {同对面的自行车争夺路段LT}通过LT;V (LT);{将路段LT释放}V(S); {将路口S释放给同方向的正在路口S处等待的自行车}end,进程Q:(天大方向自行车)beginP(T);P(LT);通过LT;进入M;V(LT);P(SK);通过SK;V(SK);V(T);End;Parend。
说明**:P进程进入安全岛M后,释放了路段SK,但没有释放路口S,原因在于它是向对面的4进程释放路段资源SK,而在P进程离开小路LT后,才会将路口S 释放给其他P进程,如不这样,就会死锁。
请考虑如下情况:两个方向各有一辆车前进,若在P进程到达安全岛M后,执行V (S)及V (SK)操作,则有可能使得同方向的其它P进程得到路段SK的使用权,而进入小路;同理,Q进程到达安全岛后执行V (LT)及V (T)操作,有可能使得同方向的其它Q进程得到路段LT 而进入小路。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作系统练习题:
1 在南开大学和天津大学之间有一条弯曲的小路,其中从S到T一段路每次只允许一辆自行车通过,但中间有一个小的“安全岛”M(同时允许两辆自行车停留),可供两辆自行车已从两端进人小路情况下错车使用,如图4.3所示。
试设计一个算法使来往的自行车均可顺利通过。
2某寺庙,有小、老和尚若干,有一水缸,由小和尚提水人缸(向缸中倒水)供老和尚饮用。
水缸可容10桶水,水取自同一井中。
水井径窄,每次只能容一个捅取水。
水桶总数为3个。
每次人、取缸水仅为1桶,且不可同时进行。
试给出有关从缸中取水和向缸中倒水的算法描述。
3桌子上有一只盘子,最多可容纳两个水果,每次只能放人或取出一个水果。
爸爸专向盘子中放苹果(apple),妈妈专向盘子中放橘子
(orange),两个儿子专等吃盘子中的橘子,两个女儿专等吃盘子中
的苹果。
请用P, V操作来实现爸爸、妈妈、儿子、女儿之间的同步与互斥关系。
4. 在4×100米接力赛中,4个运动员之间存在如下关系,运动员1跑到终点把接力棒交给运动员2;运动员2一开始处于等待状态,在接到运动员1传来的接力棒后才能往前跑,他跑完100米后交给运动员3,运动员3也只有在接到运动员2传来的棒后才能跑,他跑完100米后交给运动员4,运动员4接到棒后跑完全程。
请试用信号量机制对其上过程进行分析。
5. 在公共汽车上,司机和售票员各行其职,司机负责开车和到站停车;售票员负责售票和开、关车门;当售票员关好车门后驾驶员才能开车行驶。
试用wait和signal操作实现司机和售票员的同步。
6.有一只铁笼子,每次只能放入一只动物,猎手向笼子里放入老虎,农民向笼子里放入猪;动物园等待取笼子里的老虎,饭店等待取笼子里的猪。
现请用wait和signal操作写出能同步执行的程序。
7. 假设有3个并发进程P,Q,R,其中P负责从输入设备上读入信息,并传送给Q,Q将信息加工后传送给R,R负责打印输出。
进程P,Q共享一个有m个缓冲区组成的缓冲池;进程Q,R共享一个有n 个缓冲区组成的缓冲池(假设缓冲池足够大,进程间每次传输信息的
单位均小于等于缓冲区长度),请写出满足上述条件的并发程序。
8. 理发店里有一位理发师,一把理发椅和n把供等候理发的顾客坐的椅子。
如果没有顾客,理发师便在理发椅上睡觉,当一个顾客到来时,他必须先叫醒理发师,如果理发师正在理发时又有顾客来到,则如果有空椅子可坐,他们就坐下来等;如果没有空椅子,他就离开。
9. 有一阅览室,共有100个座位。
读者进入时必须先在一种登记表上登记,该表为每一座位列一个表目,包括座号和读者姓名。
读者离开时要注销掉登记内容。
试用wait和signal原语描述读者进程的同步问题。