同步互斥,死锁相关习题|信号量实现同步互斥|生产消费者模型|简答题

操作系统实验四 进程同步与互斥 一、实验目的: 掌握基本的同步与互斥算法,理解P,V操作。 理解生产者消费者模型,了解其它典型的同步互斥模型,如哲学家就餐、读者-写者模型等。 了解LINUX中进程同步互斥的实现方法,掌握相关函数的使用方法。 学习使用Windows中基本的同步对象,掌握相关API的使用方法。 了解Windows中多线程的并发执行机制,实现进程的同步与互斥。 二、实验环境: 一台运行Linux操作系统的计算机。 实验内容: PART1 LINUX环境 1. 生产者-消费者问题 (1)以下给出生产者. 阅读详情
记录型信号量

Semaphore内部结构,是一个结构体

typedef struct
{
	int value;
	struct process *L;
}semaphore;
  • value表示资源数目
  • 如果是正数,表示当前还有多少资源可以用,如果是负数,表示还欠几个资源
  • L链表,是阻塞进程链表
semaphore S = 0;
// 等价于
semaphore S;
S.value = 0;
PV操作

PV是原语,不可被中断

void wait(semaphore S)
{
	S.value --;
	if (S.value < 0)
	{
		add this process to S.L;
		block(S.L);
	}
}

P相当于申请资源
如果申请不到,就阻塞

void signal(semaphore S)
{
	S.value ++;
	if (S.value <= 0)
	{
		remove a process P from S.L;
		wakeup(P);
	}
}

V相当于释放资源
同时唤醒被阻塞的进程

信号量相关题目

信号量实现前驱关系

![[Pasted image 20241117145730.png]]

  1. 定义信号量
    ![[Pasted image 20241117150413.png]]

一条边就是一个信号量
S1运行完成之后就会释放一个S1已经运行完的信号,就是V操作,S1运行完成后会释放一个a信号量,也要给S3释放一个b信号量
S2运行之前需要收到a信号量,来告诉S1已经运行完成了,所以S2需要申请,P一个a信号量;S2运行完毕后,需要V一下c和d
S4运行之前,需要P一下c,运行之后需要V一下e
S5运行之前,需要P一下S2的d信号量,运行之后释放一个和S6连接的g信号量
S3运行之前,要P一下和S1相连的b信号量,运行之后释放V一个和S6相连的f信号量
S6运行之前,需要P一下e,f和g信号量,S6完成之后,程序结束
2. 写PV操作

semaphore s1_2, s1_3, s2_4, s2_5, s3_6, s4_6, s5_6;
S1()
{
	// 运行S1
	...;
	V(s1_2);
	V(s1_3);
}

S2()
{
	P(s1_2);
	// 运行S2
	...;
	V(s2_4);
	V(s2_5);

}

S3()
{
	P(s1_3);
	// 运行S3
	...;
	V(s3_6)
}

S4()
{
	P(s2_4);
	// 运行S4
	...;
	V(s4_6);
}

S5()
{
	P(s2_5);
	//运行S5
	...;
	V(s5_6);
}

S6()
{
	P(s3_6);
	P(s5_6);
	P(s4_6);
	// 运行S6
	...;
}

口诀
前V后P
在前操作的后面,V一下这个信号量,在后操作的前面P一下这个信号量

一个顶点表示一个进程,有多少个顶点,就有多少个进程
一条边代表了一个约束,即需要一个信号量控制其先后关系
对于同一个信号量而言,PV操作是成双成对的,不分离的,有P就一定有V

计算填空题
  1. 有n个进程竞争某共享资源,系统允许每次最多m个进程同时使用该资源,用PV操作管理时,相应信号量可能出现的最大值是()
    信号量的值代表资源的数量
    最多允许有m个进程同时允许,一个进程使用一个资源的话,一共有m个资源,所以填入m
  2. 系统中有n个并发进程,涉及某个相同变量X,那么涉及变量X的相关临界区的个数是()
    临界区是访问临界资源的代码,访问一次临界资源就会有一个临界区
    临界资源是一次只能够让一个进程使用的临界资源,也就是共享变量X
    临界区的个数就是并发进程的数量,填入n
生产者消费者模型

超市可容纳500人同时购物,有6扇可供出入的门,既可进也可出,每扇门只允许一个人通过

  1. 用PV操作以及信号量描述进入和离开超市的算法
  2. 若规定:同一顾客进出必须通过同一扇门,那算法如何编写
    超市也就是缓冲区,6扇门是临界资源,需要设置一个互斥信号量,来互斥的使用临界资源
    ![[Pasted image 20241117185424.png]]

生产者要进入超市,要先去申请超市里的空闲资源,
互斥信号量要紧紧把互斥资源夹住,中间不能加其他信号量

// 超市中可容纳顾客数量
semaphore S = 500;
semaphore d1 = 1;
semaphore d2 = 1;
semaphore d3 = 1;
semaphore d4 = 1;
semaphore d5 = 1;
semaphore d6 = 1;

Enter()
{
	P(S);
	选择一扇门i;
	P(di);
	进入超市;
	V(di);
}

Leave()
{
	选择一扇门j;
	P(dj);
	离开超市;
	V(dj);
	V(S);
}

2
进门的时候加入一个记录变量,记录用的是哪扇门,离开的时候在从记录变量看走的是哪扇门

Enter()
{
	P(S);
	选择一扇门i;
	self.door = i; // 用变量self.door记录进入的是哪扇门
	P(di);
	进入超市;
	V(di);
}

Leave()
{
	i = self.door; // 从变量self.door得到顾客进入的是哪扇门
	P(di);
	离开超市;
	V(di);
	V(S);
}
2019

P1,P2,P3为三个相互合作的进程,P1和P2各自从外部设备读取数据分别存入X变量和Y变量,P3进程将X,Y的值相加并将结果存入Z变量
用PV操作实现上述同步关系

![[Pasted image 20241117203023.png]]

先画前趋图
P3:Z=X+Y

begin
	S1,S2:semaphore;
	S1 = 0;
	S2 = 0;

Cobegin
	processP1
	begin
		读取数据到X;
		V(S1);
	end

	processP2
	begin
		读取数据到Y;
		V(S2);
	end

	processP3
	begin
		P(S1);
		P(S2);
		Z = X + Y;
	end
Coend

end
2018

三个进程P1,P2,P3互斥使用一个包含N个单元的缓冲区,
P1每次使用"produce()"生成一个正整数并用"put()"送入缓冲区某一空单元中;
P2每次用"getodd()"从该缓冲区中取一个奇数并用"countodd()"统计奇数个数;
P3每次用"geteven()"从该缓冲区中取一个偶数并用"counteven()"统计偶数个数
用信号量机制实现这三个进程的同步与互斥活动,并说明所定义的信号量的含义

临界资源需要用Pmutex和Vmutex紧紧夹住

由于缓冲区是共享空间,设置一个互斥信号量来保护它,设信号量为mutex
P1,P2共享缓冲区的奇数数值,设同步信号量为odd
P1,P3共享缓冲区的偶数数值,设同步信号量为even
P1,P2和P3共享缓冲区的空位,设同步信号量为empty

// empty指空闲的缓冲区资源
semaphore empty = N;
semaphore full;
// 互斥信号量
semaphore mutex = 1;
semaphore odd, even = 0;

P1()
{
	生产正整数。记入x;
	x = produce();
	P(empty);
	P(mutex);
	put();
	V(mutex);
	if (x % 2 == 0)
		V(even);
	else
		V(odd);
}

P2()
{
	P(odd);
	P(mutex);
	getodd();
	V(mutex);
	V(empty);
	countodd();
}

P3()
{
	P(even);
	P(mutex);
	geteven();
	V(mutex);
	V(empty);
	counteven();
}

死锁

简答,计算,填空

死锁定义

多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进

死锁发生原因

空间

  1. 系统资源的竞争
    系统中不可剥夺资源数量不足以满足多个进程运行的需要,使得进程在运行过程中,会因争夺资源而陷入僵局。
    只有对不可剥夺资源的竞争才可能产生死锁,对可剥夺资源的竞争是不会引起死锁的。
    时间
  2. 进程推进顺序非法
    进程在运行过程中,请求和释放资源的顺序不当,会导致死锁。
    例如,并发进程P1,P2分别保持了资源R1,R2,而进程P1申请资源R2,进程P1请资源R2,两者都会因为所需资源被占用而阻塞,于是导致死锁。
  3. 信号量使用不当也会造成死锁
    进程间彼此相互等待对方发来的消息,也会使得这些进程间无法继续向前推进。例如,进程A等待进程B发的消息,进程B又在等待进程A发的消息,可以看出进程A和B不是因为竞争同一资源,而是在等待对方的资源导致死锁
死锁产生必要条件

虽然进程在运行过程中可能会发生死锁,但产生进程死锁是必须具备一定条件的。
综上所述不难看出,产生死锁必须同时具备下面四个必要条件,只要其中任一个条件不成立,死锁就不会发生:

  1. 互斥条件
    一进程对所分配到的资源进行排它性使用,即在一段时间内,某资源只能被一个进程占用。如果此时还有其它进程请求该资源,则请求进程只能等待,直至占有该资源的进程用毕释放。
  2. 请求和保持条件
    进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放
  3. 不可抢占条件
    进程已获得的资源在未使用完之前不能被抢占,只能在进程使用完时由自己释放
  4. 循环等待条件
    在发生死锁时,必然存在一个进程一资源的循环链,即进程集合{P0,P1,…Pn},中的Pi循环占用另一个pi+1资源
处理死锁基本方法

目前处理死锁的方法可归结为四种:

  1. 预防死锁
    这是一种较简单和直观的事先预防方法。
    该方法是通过设置某些限制条件,去破坏产生死锁四个必要条件中的一个或几个来预防产生死锁。
    预防死锁是一种较易实现的方法,已被广泛使用。
  2. 避免死锁
    同样是属于事先预防策略,但它并不是事先采取各种限制措施,去破坏产生死锁的四个必要条件,而是在资源的动态分配过程中,用某种方法防止系统进入不安全状态,从而可以避免发生死锁。
  3. 检测死锁
    这种方法无须事先采取任何限制性措施,允许进程在运行过程中发生死锁。但可通过检测机构及时地检测出死锁的发生,然后采取适当的措施,把进程从死锁中解脱出来。
  4. 解除死锁
    当检测到系统中已发生死锁时,就采取相应措施,将进程从死锁状态中解脱出来。
    常用的方法是撤消一些进程,回收它们的资源,将它们分配给已处于阻塞状态的进程,使其能继续运行。
    从(1)到(4)对死锁的防范程度逐渐减弱,但对应的是资源利用率的提高,以及进程因资源因素而阻塞的频度下降(即,并发程度提高)
死锁的处理方法(简答题)
  1. 预防死锁
    破坏产生死锁的4个必要条件中的一个或多个
  2. 避免死锁
    使用某种方法防止系统进入不安全状态,
  3. 死锁的检测和解除
    不采取任何措施,在发生死锁后,系统能够及时检测出死锁,然后采取某种措施接触死锁
实现多进程同步与通信:以生产者-消费者模型为例(C/C++代码实现) 实现多进程同步与通信是一个复杂但至关重要的任务。生产者-消费者模型提供了一个框架,通过使用互斥锁、信号量、条件变量等同步机制,可以有效地实现进程间的协调和数据交换。这些技术不仅适用于生产者-消费者模型,也是解决其他并发问题的基础。 在实际应用中,需要根据具体的应用场景和需求,选择合适的同步和通信机制,以确保系统的稳定性和效率。随着技术的发展,新的同步和通信技术也在不断涌现,为解决并发问题提供了更多的选择和可能性。 阅读详情

相关推荐

同步和互斥——生产者和消费者进程版

一、同步和互斥的概念什么是同步?什么是互斥?同步是一种时序关系。如规定了进程1处理完事情A后,进程2才能处理事情B,经典的同步问题是生产者和消费者间的同步.互斥描述的是一种独占关系.如任一时刻,进城1和进程2中只能有一个写文件C.有人说互斥是一种特殊的同步,同步是一种更为复杂的互斥关系(见" http//topic.youkuaiyun.com/t/20020711/17/867228.htm

彭令鹏(bripengandre)的专栏 6728

信号量解决进程同步互斥习题

南航研招题 一个主修动物行为学、辅修计算机科学的学生参加了一个课题,调查花果山的猴子是否能被教会理解死锁。他找到一处峡谷,横跨峡谷拉了一根绳索(假设为南北方向)这样猴子就可以攀着绳索越过峡谷。只要它们朝着相同的方向,同一时刻可以有多只猴子通过。但是如果在相反的方向上同时有猴子通过则会发生死锁(这些猴子将被卡在绳索中间,假设这些猴子无法在绳索上从另一只猴子身上翻过去)。如果一只猴子想越过峡谷,它必须...

practical_sharp的博客 3989

操作系统------生产者消费者模型

        在“进程间通信----信号量”一文中,有简单介绍过生产者消费者模型的基本概念。在下文中将使用有关线程的互斥与同步的相关概念来实现两种不同类型的生产者消费者模型。在本文中侧重于线程间同步的实现。有关线程互斥与同步的相关概念见线程的互斥与同步一文:        首先介绍该模型的背景知识:生产者消费者问题        该问题是一个著名的同步问题。它描述的是:一群生产者进程正在生产产品...

sandmm112的博客 5298

操作系统-信号量机制的一些习题

1:生产者消费者问题 生产者和消费者共享一个初始值为0,大小为n的缓冲区。 当缓冲区未满时,生产者才能生产产品。 当缓冲区未空时,消费者才能消费产品。 缓冲区属于临界资源,生产者和消费者需要互斥的访问。 semaphore mutex=1 //互斥信号量,生产者和消费者互斥访问缓冲区 semaphore empty=n //同步信号量,表示空缓冲区的数量 semaphore full=0 //同步信号量,表示产品数量即非空缓冲区的数量 producer ( ){

hd_cash的博客 3556

把STM32MP135当单片机玩:实战SD卡脱机运行LED程序(基于MP135DK开发板)

本文详细介绍了如何在STM32MP135开发板上实现SD卡脱机运行LED程序,通过裸机开发方式(Bare Metal)利用HAL库完成GPIO控制,并解析了SD卡启动流程。内容涵盖工程创建、代码编写、SD卡烧录及常见问题排查,为开发者提供了一种高性能单片机开发方案。

weixin_33734785的博客 242

如何在Jetson Nano上快速搭建Pytorch环境(含torchvision安装教程)

本文详细介绍了在Jetson Nano上快速搭建PyTorch环境的完整步骤,包括系统准备、PyTorch安装优化、torchvision编译安装及环境测试。通过本指南,开发者可以高效部署深度学习开发环境,充分利用Jetson Nano的GPU加速能力进行计算机视觉项目开发。

weixin_42628941的博客 340

同步互斥相关习题10道 附详解

某系统允许最多10个进程同时读文件F,当同时读文件F的进程不满10个时,欲读该文件的其他文件可立即读,当已有10个进程在读文件F时读,其他欲读文件F的进程必须等待,直至有进程读完后退出方可去读。设P,Q,R共享一个缓冲区,P,Q构成一对生产者-消费者,R既为生产者又为消费者,若缓冲区为空,则可以写入;还需要设置信号量Sb,Sy,Sz来表示数据b是否已经输入,以及y,z是否已计算完成,它们的初值均为0。如下图所示,三个合作进程P1,P2,P3,它们都需要通过同一设备输入各自的数据a,b,c,

ChoSeitaku的博客 1595

操作系统中的信号量及P、V操作

系统中应该有解决进程同步的一种专门机制。实际上,同步是并发进程之间在执行时序 上的一种相互制约的关系。进程互斥的实质也是同步,可把进程互斥看作是一种特殊的进程同步。 同步机制应该满足如下一些基本要求。首先,它的描述能力应足够强,即能解决各种进 程间同步互斥问题;其次,该同步机制应该容易实现并且效率高;第三,使用方便。 同步机制有各种类型,有硬件同步机制;有软件同步机制,如信号量及P、V操作,管...

一个不爱说话的程序员 1万+

相控阵多功能雷达工作模式识别技术综述

本文综述了相控阵雷达工作模式识别技术的研究进展。首先介绍了相控阵雷达的典型工作模式分类及其信号特征参数,包括搜索模式(VS、RWS、TWS)、跟踪模式(STT、MTT、TAS)和其他模式(SAM、SAR)等。随后重点阐述了基于信号特征的识别方法,包括时域特征(PRI分析、脉冲幅度包络、数据率)、频域特征(载频变化、调制方式)和混合特征分析方法。最后讨论了当前技术面临的挑战与发展趋势,包括复杂信号环境下的识别难题、新型雷达技术的适应需求以及深度学习技术的应用前景。该领域的研究对电子侦察和威胁评估具有重要意义。

Grow into a more wonderful you 1798

别再傻傻用外部中断了!STM32H743定时器编码器模式4倍频测速保姆级配置(附CubeMX+HAL库代码)

本文详细介绍了STM32H743定时器编码器模式的4倍频测速配置方法,通过CubeMX和HAL库实现高效脉冲计数。相比传统外部中断方案,硬件编码器模式显著降低CPU占用率,提升测速精度,适用于电机控制和运动检测等高要求场景。

weixin_33711647的博客 403

进程同步与互斥习题

进程同步与互斥习题

weixin_47692652的博客 6990

320x240 TFT屏的SPI DMA驱动避坑指南:基于HC32F460的时序调试心得

本文详细介绍了基于HC32F460 MCU驱动320x240 TFT屏的SPI DMA实战经验,涵盖硬件设计、波形诊断、DMA优化及高级调试技巧。重点解析SPI时序配置、DMA缓冲区对齐等常见问题,并提供逻辑分析仪波形诊断方法和性能优化策略,帮助开发者规避典型陷阱,提升显示性能。

weixin_42639246的博客 372

进程同步与互斥——相关问题汇总(源码+伪代码)

问题描述: 某博物馆最多可容纳500人同时参观,有一个出入口,该出入口一次仅允许一个人通过。参观者的活动描述如下: cobegin 参观者进程i: { //进门 //参观 //出门 } coend 请添加必要的信号量和P、V(或wait()、signal())操作,以实现上述过程中的互斥与同步。要求写出完整的过程,说明信号量的含义并赋初值。 问题分析: //错误的解法,该题中提到了只有一个出入口,就是只有一个门,可以是出,也可以入,每次只能一个人过 semaphore out = 1; semaph

CLZHIT的博客 9477

基于 Simulink 的三相四线制整流器在三相不平衡负载下的中点电位平衡控制实战教程

本文为三相四线制整流器在中点电位不平衡时的Simulink仿真教程。首先分析中点电位漂移的电荷不平衡机理,提出零序电压注入控制策略。详细演示建模步骤:搭建三相四线制主电路,构建中点平衡控制算法(含MATLAB函数代码),实现控制信号叠加与PWM生成。通过对比仿真验证控制效果,并给出零序电压限幅、中性线电感影响等工程建议。该方案能有效抑制三相不平衡负载下的中点电位波动,保证系统稳定运行。

xiaoheshang_123的博客 50

使用手机录制rosbag包

使用手机作为便携式数据采集设备来录制rosbag。

weixin_38582851的博客 615

操作系统中消费者与生产者的同步互斥问题

在操作系统中,我们有进程,进程会占用资源,有些资源是可以共享的,但有些资源是只允许一个占用,不能共享,只有当占用的线程用完释放后,下一个需要用的线程才可以申请使用,这样的资源便是临界资源。属于临界资源的硬件有,打印机,磁带机等;软件有消息队列,变量,数组,缓冲区等。诸进程间采取互斥方式,实现对这种资源的共享。 消费者和生产者就金典的讲述了消费者与生产者共享“缓存区”的多线程同步问题。 基本描述...

黑锤的博客 7175

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【Linux】线程同步和互斥

为什么要进行线程间的同步互斥?线程类似于工厂里的流水线,当某条流水线在生产时使用了工厂的公共资源时,在使用完之前,我们肯定不想其它流水线占用这个公共资源。所有我们一般在使用时都会将公共资源上锁。在使用完之后再释放。 所谓的“公共资源”,严格来讲称为临界区。线程锁的使用就是为了实现对临界区的有序访问。也就是实现线程的同步互斥

Tianzhenchuan的博客 1508

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

C语言实战——生产者消费者问题

C语言实战——生产者消费者问题 方法摘要 生产者消费者共享缓冲区,生产者向缓冲区中放数据,消费者从缓冲取中取数据,当缓冲区中被放满时,生产者进程就必须进入挂起状态,直到消费者从缓冲中取走数据时,生产者才能继续向缓冲区中存放数据,同样当缓冲取中没有数据时,消费者进程就必须进入挂起休眠状态,直到生产者向缓冲区中放入数据时,消费者才能被唤醒继续从缓冲区中取走数据。 简写代码 对于生产者: void producer(void) { int item; while(1) { item = produc

qq_39079631的博客 1万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

c/c++:线程同步(互斥锁、死锁、读写锁、条件变量、生产者和消费者模型、信号量)

目录 1. 概念 2. 互斥锁 3. 死锁 4. 读写锁 5. 条件变量 5.1 生产者和消费者模型 6. 信号量 1. 概念 线程同步: > 当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作。 > - 在多个线程操作一块共享数据的时候 > - 按照先后顺序依次访问 > - 有原来的 并...

陈宸的博客 3133

进程同步与互斥——生产者/消费者(有界缓冲区)问题源码实现

摘自:操作系统导论 第一次尝试 第一次尝试解决该问题时,我们用两个信号量empty和full分别表示缓存区空或者满。put()和get()函数,下面是我们尝试解决生产者/消费者问题的代码。 int sem_wait(sem_t* s) //请求一个单位的资源 { decrement the value of semaphore s by one wait if value of semaphore s is negative } int sem_post(sem_t* s) //释放一个单位

CLZHIT的博客 4370

线程的互斥与同步

线程的互斥 相关概念: 临界资源:多线程执行流共享的资源就叫做临界资源 临界区:每个线程内部,访问临界资源的代码,就叫做临界区 互斥:任何时刻,互斥保证有且只有一个执行流进入临界区,访问临界资源,通常对临界资源起保护作用 原子性:不会被任何调度机制打断的操作,该操作只有两态,要么完成,要么未完成 简单的抢票程序 #include<stdio.h> #include<unistd.h> #include<pthread.h> #inclu

hbbfvv1h的博客 5188

操作系统-进程同步与互斥经典问题(生产者消费者、多生产者多消费者、吸烟者、读写(读优先、写优先、读写公平)、哲学家进餐)

操作系统-进程同步与互斥经典问题 目录操作系统-进程同步与互斥经典问题生产者消费者问题问题描述问题分析逻辑实现多生产者多消费者问题问题描述问题分析逻辑实现吸烟者问题问题描述问题分析逻辑实现读者写者问题问题描述问题分析逻辑实现读进程优先读写公平写进程优先哲学家进餐问题问题描述问题分析逻辑实现死锁策略一策略二策略三 非科班???? ???? ???? ???? ???? 自学计算机6个月总结——不完全学习路线分享 早期的操作系统学习笔记???? 主要参考来源 操作系统_清华大学(向勇、陈渝) Operat

快乐学术猿 2028

操作系统之生产者与消费者实验

主要提供一个设计思路

qq_63052532的博客 3064

操作系统-------用P,V操作解决生产者和消费者问题(详解!!!)

问题: 系统中有一组生产者进程和一组消费者进程,生产者每次生产一个产品放入缓冲区,消费者每次从缓冲区取出一个产品并使用(注:这里的产品可以理解成某种数据)。 条件:生产者、消费者共享一个初始化为空的、大小为n的缓冲区。 提示: 做这一题之前一定要熟练的掌握进程的互斥和进程的同步,一定要会!!一定要会!!一定要会! 不会的话可以 点击这里!!! 题目分析: 1.首先读题之后就容易知道,咱们现在有一个缓冲区,生产者负责生...

好好学习。天天编程 8196

经典进程同步与互斥习题总结

基础知识导引 临界资源 在操作系统中,进程是占有资源的最小单位(线程可以访问其所在进程内的所有资源,但线程本身并不占有资源或仅仅占有一点必须资源)。但对于某些资源来说,其在同一时间只能被一个进程所占用。这些一次只能被一个进程所占用的资源就是所谓的临界资源。 典型的临界资源比如物理上的打印机,或是存在硬盘或内存中被多个进程所共享的一些变量和数据等(如果这类资源不被看成临界资源...

weixin_30684743的博客 3304
上一篇: 栈队列相关算法题|整理字符串|字符串去重|循环队列入队出队|队列通过栈逆置|栈模拟队列|循环链队入队和出队|循环队列队尾删除和队头插入(C)
下一篇: 二叉树遍历相关算法题|后序遍历非递归|下到上左到右层次遍历|先序遍历非递归(C)
ChoSeitaku
博客等级 码龄5年 3452粉丝 557原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值