用信号量工具解题ab间有车,同方向的车可进ab段,另一方向的车在ab外等;ab间无车,到达a或b的车可进ab段,但不能同

欢颜丫头2022-10-04 11:39:541条回答

用信号量工具解题
ab间有车,同方向的车可进ab段,另一方向的车在ab外等;ab间无车,到达a或b的车可进ab段,但不能同时进;ab段行驶的车出ab段且暂无车进ab段,让另一方向等待的车进ab段.请用信号量工具,对ab段实现正确的管理

已提交,审核后显示!提交回复

共1条回复
181687723 共回答了10个问题 | 采纳率90%
sem_init(mutex,1)
int num_atob=num_btoa=0;
atob()
{
begin:
P(mutex);
if(num_btoa==0){
num_atob++;
V(mutex);
}
else{
V(mutex);
goto begin;
}
run();
P(mutex);
num_atob--;
V(mutex);
}
btoa()
{
begin:
P(mutex);
if(num_atob==0){
num_btoa++;
V(mutex);
}
else{
V(mutex);
goto begin;
}
run();
P(mutex);
num_btoa--;
V(mutex);
}
1年前

相关推荐

试从物理概念上说明记录型信号量WAIT和SIGNAL
试从物理概念上说明记录型信号量WAIT和SIGNAL
快点!急需!谢谢帮忙!
zealot611年前1
lankevic 共回答了20个问题 | 采纳率90%
信号量的定义:
信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源.
Semaphore分为单值和多值两种,前者只能被一个线程获得,后者可以被若干个线程获得.
以一个停车场的运作为例.简单起见,假设停车场只有三个车位,一开始三个车位都是空的.这时如果同时来了五辆车,看门人允许其中三辆直接进入,然后放下车拦,剩下的车则必须在入口等待,此后来的车也都不得不在入口处等待.这时,有一辆车离开停车场,看门人得知后,打开车拦,放入外面的一辆进去,如果又离开两辆,则又可以放入两辆,如此往复.
在这个停车场系统中,车位是公共资源,每辆车好比一个线程,看门人起的就是信号量的作用.
抽象的来讲,信号量的特性如下:信号量是一个非负整数(车位数),所有通过它的线程/进程(车辆)都会将该整数减一(通过它当然是为了使用资源),当该整数值为零时,所有试图通过它的线程都将处于等待状态.在信号量上我们定义两种操作: Wait(等待) 和 Release(释放).当一个线程调用Wait操作时,它要么得到资源然后将信号量减一,要么一直等下去(指放入阻塞队列),直到信号量大于等于一时. Release(释放)实际上是在信号量上执行加操作,对应于车辆离开停车场,该操作之所以叫做“释放”是因为释放了由信号量守护的资源.
信号量,是可以用来保证两个或多个关键代码段不被并发调用.在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量.其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量.为了完成这个过程,需要创建一个信号量VI,然后将Acquire Semaphore VI以及Release Semaphore VI分别放置在每个关键代码段的首末端.确认这些信号量VI引用的是初始创建的信号量.
多核,多线程同步时.信号量,临界区,互斥,原子操作,消息,事件,哪种效率最高?希望有实际测试过的来回答,请勿信口开河.
y9201448831年前1
寒月沙丘 共回答了15个问题 | 采纳率86.7%
信号量实现互斥是通过P,V原语方式来控制的,它在进入临界区时都会通过P,V操作来修改信号量的值来实现互斥.觉得临界区实现互斥的两种基本方法都有些小区别
已知10个进程使用互斥资源R,每次允许3个进程进入互斥段,这信号量S的变化范围是多少?
已知10个进程使用互斥资源R,每次允许3个进程进入互斥段,这信号量S的变化范围是多少?
具体题目是这样:
在操作系统的进程管理中,若系统中有10个进程使用互斥资源R,每次只允许3个进程进入互斥段(临界区),则信号量S的变化范围是______(1):若信号量S的当前值为-2,则表示系统中有______(2)个正在等待该资源的进程。
(1)A.-7~1 B.-7~3 C.-3~0 D.-3~10
(2)A.0 B.1 C.2 D.3
追究到底91年前1
chenwill 共回答了15个问题 | 采纳率93.3%
B:S
有n个进程都要使用某个共享文件,但系统限制最多可以有m个进程(n>m>1)同时读文件,用PV操作管理时,信号量值变化时所
有n个进程都要使用某个共享文件,但系统限制最多可以有m个进程(n>m>1)同时读文件,用PV操作管理时,信号量值变化时所达到的最小值为__________.
答案是m-n
jscofier1年前1
xdzf2003 共回答了23个问题 | 采纳率95.7%
p操作procedure wait(S)
begin var S :semaphore;
begin S.value=s.value-1;
if S.value
信号量用来解决同步问题时,其初值必须是多少?
信号量用来解决同步问题时,其初值必须是多少?
这是一道关于操作系统的题。
信号量用来解决同步问题时,其初值必须是
1、大于0
2、必须等于0
3、可以等于0
以上三个答案哪个是对的?
容凡1年前1
吃西瓜的猫咪哦 共回答了11个问题 | 采纳率100%
必须等于0
在一个模拟信号转化成数字信号的过程中生成的数字信号量与什么因素有关?
jwx1111111年前1
2214122 共回答了9个问题 | 采纳率77.8%
单次转化生成的数字信号量的和A/D转换器的分辨率有关,例如24位的A/D转换器就比8位的A/D转换器生成的数字信号量要大好几倍.单位时间内进行A/D转换所生成的数字信号量主要和A/D转换器的转换速度有关,高速的A/D转换器如ADS901转换速率可达20MSPS,低速的A/D转换器如AD1240则只有0.015KSPS.
一道关于操作系统的题目,是临界区问题还是信号量问题?请写出代码?
一道关于操作系统的题目,是临界区问题还是信号量问题?请写出代码?
There is only one single-log bridge(独木桥) over the river connecting the west and the east.If there is some one on the bridge,people from other direction must wait until there is no person on the bridge.While if several people go the same direction,they can pass through at the same time.Write a code sketch for two kinds of people,people from west to east and people from east to west,which follows the given rules and guarantees that two kinds of people are never on the bridge at the same time using semaphores.
wcca1年前1
wyj9348 共回答了19个问题 | 采纳率89.5%
信号量问题啊
信号量及PV操作的问题某数据库有一个写进程,多个读进程,它们之间读、写操作的互斥要求是:写进程正在写该数据库时不能有其他
信号量及PV操作的问题
某数据库有一个写进程,多个读进程,它们之间读、写操作的互斥要求是:写进程正在写该数据库时不能有其他进程读该数据库,也不能有其他进程写该数据库;读进程之间不互斥,即可以同时读该数据库。请用信号量及PV操作描述这一组进程的工作过程。
(要代码和解析过程)
jamesgray1年前1
yunlingjie 共回答了22个问题 | 采纳率100%
设max(i)表示第i个进程的最大资源需求量,need(i)表示第i个进程还需要的资源量,alloc(i)表示第i个进程已分配的资源量。由题中所给条件可知:
max(1)+…+ max(n)=(need(1)+…+need(n))+(alloc(1)+…+alloc(n))
信号量的物理意义是当信号量值大于零时表示有什么?;当信号量值小于零时,其绝对值为多少 .
白鴿子1年前1
348198741 共回答了16个问题 | 采纳率87.5%
信号量Semaphore 类表示一个命名信号量(系统范围)或本地信号量.Windows 信号量是计数信号量,可用于控制对资源池的访问.x0d管理受限资源x0d线程通过调用 WaitOne 方法来进入信号量,此方法是从 WaitHandle 类派生的.当调用返回时,信号量的计数将减少.当一个线程请求项而计数为零时,该线程会被阻止.当线程通过调用 Release 方法释放信号量时,将允许被阻止的线程进入.针对让被阻止的线程进入信号量,不存在保证的顺序(例如 FIFO 或 LIFO).x0d线程可以通过重复调用 WaitOne 方法来多次进入信号量.若要释放信号量,线程可以调用 Release 方法重载相同的次数,也可以调用 Release 方法重载并指定要释放的项数.x0d信号量和线程标识x0dSemaphore 类不对向 WaitOne 和 Release 方法发出的调用强制线程标识.例如,信号量的一个常用方案包括一个生产者线程和一个使用者线程,其中一个线程总是增加信号量计数,而另一个线程总是减少信号量计数.x0d编程人员应负责确保线程释放信号量的次数不会过多.例如,假定信号量的最大计数为二,线程 A 和线程 B 都进入信号量.如果线程 B 中发生了一个编程错误,导致它调用 Release 两次,则两次调用都会成功.这样,信号量的计数就已经达到了最大值,所以,当线程 A 最终调用 Release 时,将引发 SemaphoreFullException.x0d命名信号量Windows 操作系统允许信号量具有名称.命名信号量在整个系统范围都有效.即,创建命名信号量后,所有进程中的所有线程都是可见的.因此,命名信号量可用于同步进程的活动以及线程的活动.x0d您可以使用可用于指定名称的一个构造函数来创建表示命名系统信号量的 Semaphore 对象.
互斥量、临界区、信号量和时间的作用与区别
12345ssdlh1年前1
chxxcdxx 共回答了21个问题 | 采纳率85.7%
信号量实现互斥是通过P,V原语方式来控制的,它在进入临界区时都会通过P,V操作来修改信号量的值来实现互斥.觉得临界区实现互斥的两种基本方法都有些小区别