十天掌握操作系统——进程(3)进程的并发控制(信号量、PV操作)

本文深入探讨了进程并发执行时的互斥和同步问题,介绍了临界区概念及其四准则。详细阐述了Dijkstra提出的信号量机制,通过P、V操作实现资源的申请与释放。并通过生产者消费者问题和理发师问题举例说明信号量在解决进程间通信和同步问题中的应用。
摘要由CSDN通过智能技术生成

进程的并发执行


并发进程的特点

  • 进程之间形成互斥关系
    由于进程之间共享资源,而间接相互制约
    比如说WPS在打开一个文件的时候,word不能打开。如果两个进程共享同一个资源,在其中一个进程使用该资源的时候另一个进程不能使用
  • 同步
    一组协作的进程要等待其他进程的信息才能继续进行,因而产生直接制约的关系
  • 前序
    由于进程之间存在者上述两种间接或者直接的制约方式,所以在实际执行的时候

共享资源

  • 硬件设备:如打印机
  • 软件资源:如共享变量、共享文件和各种队列等

临界资源:一次仅允许一个进程使用的系统中共享资源。

在这里插入图片描述
临界区(critical section) : 并发进程访问临界资源的那段必须互斥执行的程序段。

对临界区的使用应符合的准则:

  • 互斥使用 废话,临界资源一次只能一个进程使用
  • 让权等待 一个进程此时正在CPU运行,申请使用临界资源,但是没有申请到的时候,此时该进程不能继续运行,不能继续停留在CPU,应该出去等待,把CPU让给其他就绪的进程
  • 有空让进 如果一个进程当前不需要使用临界进程,那它不能组织其他进程使用临界资源
  • 有限等待 如果一个进程申请使用某个临界资源申请不到而长时间处于等待状态,不能让他一直无限的等下去

简单来说,就是我们不希望:两个人同时使用一个茅坑;有人占着茅坑不拉屎;有人厕所外面还拦着其他要上厕所的人不让进;有人一直在厕所外面排队憋死了。

信号量和PV操作(进程间的低级通信)

为了使并发的进程可以遵循上面的准则。1965年,荷兰学者Dijkstra提出了一种机制。

我们可以将信号量可以看作一个整数(事实上真实的信号量是一个结构体),只能对信号量进行P操作或者V操作,P操作用于”申请资源“,V操作用于”释放资源“。

可以将信号量的值理解为 当前可用的资源数,如果是负数则代表现在有多少个进程正在阻塞等待这个资源,比如如果mutex == -5,则说明现在有5个进程之前申请使用这个资源没有申请到,正在排队。

  • 每次对一个信号量执行P操作:
信号量-1;
if 信号量 >= 0:
	现在的进程继续执行 
	//如果当前进程占用了一个资源之后还有大于0个资源或者刚好可用资源数==0
	//说明当前进程还是有资源可用的
else
	阻塞
	//如果当前进程占用了一个资源之后,可用资源数小于0,说明在当前进程申请之前就已经没有可用资源了
	排列到一个和这个信号量有关的队列尾部等待 
	//不然有资源空闲的时候不知道去哪里找它了
	
  • 执行V操作:
信号量+1//当前进程释放资源之后,可用资源就变多了一个
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赛博游客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值