操作系统--进程同步

1.进程同步的基本概念

进程同步是指多个相关进程在执行次序上进行协调,它的目的是使系统中诸进程之间能按照一定的规则(或时序),共享资源和相互合作,从而使程序的执行具有可再现性。用来实现同步的机制叫做同步机制。

例:对于混合运算1+2*3,假设系统产生两个进程,加法进程和乘法进程,要让计算结果正确,一定要让加法进程发生在乘法进程之后,但实际操作系统具有异步性,若不加以制约,加法进程发生在乘法进程之前是有可能的,因此要制定一定的机制去约束加法进程,让它在乘法进程完成之后才发生。

2.临界资源

虽然多个进程可以共享系统中的各种资源,但其中许多资源一次只能为一个进程所用,将一次仅允许一个进程使用的资源称为临界资源。例如:打印机等。

对临界资源的访问,必须互斥地进行,在每个进程中,访问临界资源的那段代码称为临界区。为了保证临界资源的正确使用,可将临界资源的访问划分为4个部分:

(1)进入区:为了进入临界区使用临界资源,在进入区要检查可否进入临界区,若能进入临界区,则应设置正在访问临界区的标志,以阻止其他进程同时进入临界区。

(2)临界区:进程中访问临界资源的那段代码,又称临界段。

(3)退出区:将正在访问临界区的标志清除。

(4)剩余区:代码中的其余部分。

3.进程之间的制约关系

3.1同步

同步也叫直接制约关系,是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而等待、传递信息所产生的制约关系。

例如:输入进程A通过单缓冲区向进程B提供数据。当该缓冲区为空时,进程B不能获得所需数据而阻塞,一旦进程A将数据送入缓冲区,进程B就被唤醒。反之,当缓冲区满时,进程A被阻塞,仅当进程B取走缓冲数据时,才唤醒进程A

3.2互斥

互斥也称间接制约关系,当一个进程进入临界区使用临界资源时,另一个进程必须等待,当占用临界资源的进程退出临界区后,另一进程才允许去访问此临界资源。

为禁止两个进程同时进入临界区,同步机制应遵循以下准则:

(1)空闲让进:临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区

(2)忙则等待:当已有进程进入临界区时,其他试图进入临界区的进程必须等待

(3)有限等待:对请求访问的进程,应保证能在有限时间内进入临界区

(4)让权等待:当进程不能进入临界区时,应立即释放处理器,防止进程忙等待

4.信号量

信号量机制用来解决互斥与同步问题,它只能被两个标准原语wait(S)【表示等待某种资源直到可用,资源暂时不可用,则进程进入阻塞态,执行P操作的进程处于运行态】和signal(S)【用V操作唤醒一个等待进程时,被唤醒进程变为就绪态,只有就绪进程能获得处理器资源,被唤醒的进程并不能直接转换为运行态】访问,也可记为"P操作"和"V操作"(信号量其实就是一个变量,可以用一个信号量来表示系统中某种资源的数量)

原语是指完成某种功能且不被分割、不被中断执行的操作序列。

4.1整型信号量

用一个整数型的变量作为信号量,用来表示系统中某种资源的数量。

Wait操作中,只要信号量S<=0,就会不断地测试。因此,该机制并未遵循"让权等待"的准则,而是使进程处于"忙等"的状态

4.2记录信号量

记录信号量是不存在"忙等"现象的进程同步机制。除需要一个用于代表资源数目的整型信号量value外,再增加一个进程列表L,用于链接所有等待该资源的进程。

4.3利用信号量实现同步

与互斥信号量初值一般为1不同,用P、V操作实现进程同步,信号量的初值应根据具体情况来确定。若期望的消息尚未产生,则对应的初值应为0,若期望的消息已存在,则信号量的初值应设为一个非0的正整数。

互斥信号量(mutex)

如果信号量的值大于0,表示资源可用,其数值表示可用的资源数量(对于互斥,通常为1,表示只有一个资源实例)。

如果信号量的值等于0,表示资源已被占用,但没有线程在等待。

如果信号量的值小于0,表示资源已被占用,并且有线程在等待,其绝对值表示等待的线程数。

相关推荐
HalvmånEver2 小时前
Linux:基础IO(一)
linux·运维·服务器
Lynnxiaowen2 小时前
今天我们学习kubernetes内容持久化存储
linux·运维·学习·容器·kubernetes
KingRumn2 小时前
Linux进程间通信之消息队列
linux·服务器·网络
jerryinwuhan2 小时前
1210_linux_2
linux·运维·服务器
IDC02_FEIYA2 小时前
Linux怎么看服务器状态?Linux查看服务器状态命令
linux·运维·服务器
刚入坑的新人编程2 小时前
Linux(小项目)进度条演示
linux·运维·服务器
秋刀鱼 ..2 小时前
第十一届金融创新与经济发展国际学术会议
运维·人工智能·科技·金融·自动化
Apibro3 小时前
【LINUX】时区修改
linux·运维·服务器
遇见火星3 小时前
Linux性能调优:使用strace来分析文件系统的性能问题
linux·运维·服务器·strace