操作系统第二章-进程学习

本文介绍了进程同步的概念,包括临界资源、临界区和同步机制的原则。讲解了硬件同步机制如关中断和Test-and-Set指令的优缺点,以及信号量机制在解决生产者-消费者、读者-写者和哲学家进餐问题的应用。强调了同步在并发执行中的重要性和避免死锁的策略。
摘要由CSDN通过智能技术生成


前言

本博客仅做学习笔记,如有侵权,联系后即刻更改

科普:


进程同步

进程同步

  • 对多个相关进程在执行次序上进行协调、使并发执行的诸进程之间能按照一定的规则共享系统资源,并能很好地相互合作,从而使程序的执行具有可再现性

进程同步的基本概念

  1. 制约关系
  1. 间接相互制约关系
    临界资源:如打印机、磁带机,必须保证互斥访问
  2. 直接相互制约关系
    源于进程之间的合作
  1. 临界资源

诸进程间应采取互斥方式,实现对这种资源的共享

  • 硬件资源如打印机、 磁带机等
  1. 临界区

在每个进程中访问临界资源的那段代码称为临界区

  • 临界区:进程访问临界资源的代码
  • 进入区:临界区之前检查状态的代码
  • 退出区:将临界区正在被访问的标志恢复为未被访问的标志
  • 可把一个访问临界资源的循环进程描述为
    在这里插入图片描述
  1. 同步机制遵循的规则
  1. 空闲让进
  2. 忙则等待
  3. 有限等待
  4. 让权等待
  1. 常见的同步机制
  1. 软件方法
  2. 硬件方法
  3. 信息量机制
  4. 管程机制

硬件同步机制

  1. 关中断
  2. 利用Test-and-Set指令实现互斥
  3. 利用Swap指令实现进程互斥

优缺点

  1. 优点

适用于任意数目的进程
简单、容易验证其正确性

  1. 缺点

处于“忙等”,未实现“让权等待”,浪费处理机时间
可能产生“饥饿”现象
可能死锁

信号量机制

整形信号量:表示资源数目的整形量S

  • 为正:空闲资源数
  • 为负:等待使用资源的进程量

经典进程问题

解决方案

  1. 分析类型:同步、互斥
    同步:直接制约
    互斥:临界资源
  2. 先同步、后互斥

生产者-消费者

要求

  • 公用缓冲池有m个缓冲区,缓冲区互斥使用
    没满就可以生产存入,非空就可以取出

进程参数

  • full(满缓冲区数目):0
  • empty(空缓冲区数目):m
  • mutex(缓冲区互斥信号量):1
  • 生产者
P(empty);
	P(mutex);
		"数据存入缓冲区";
	V(mutex);
V(full);
  • 消费者
P(full);
	P(mutex);
		"读出缓冲区数据";
	V(mutex);
V(empty);

读者-写者

要求

  • 只有读-读进程允许同步

进程参数

  • Wmutex(写进程)
  • Rmutex(读进程)
  • Rcount(同时进行的读进程数目)

注意点

  • 对Rcount进行修改时,要取得读进程的控制权,避免公共变量的值混乱
  • 读者
P(Rmutex);
	//如果为第一个写进程,则占用写进程的控制权,避免同时读写冲突
	if(Rcount == 0){
		P(Wmutex);
	}
	Rcount++;
V(Rmutex);
	"进行读操作";
P(Rmutex);
	Rcount--;
	//如果为最后一个读进程,则释放写进程的控制权
	if(Rcount == 0){
		V(Wmutex);
	}
V(Rmutex);
  • 写者
P(Wmutex);
	"进行写操作";
V(Wmutex);

哲学家进餐

要求

  • 5位哲学家进餐时需要取得左右两只筷子的控制权

进程参数

  • chopstick[5] = [1,1,1,1,1]
  • 第i位哲学家的活动
P(chopstick[i]);
	P(chopstick[i+1]);
		"进餐";
	V(chopstick[i]);
V[chopstick[i+1]];

以上进程存在死锁问题

  • 解决方案
  1. 只允许同时四位哲学家进餐
  2. 仅当左右筷子均可用,才进餐
  3. 规定奇数位先左后右拿筷子,偶数位相反

总结

小小励志

有些事你现在不做,一辈子都不会做了。
如果你想做一件事,全世界都会为你让路。
《搭车去柏林》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值