【操作系统】【进程】进程的同步与互斥

进程同步:程序执行的顺序有时候不是我们想要的,有随机性,这就是进程的异步,进程同步就是为了解决这一问题,也就是协调进程的工作次序。

进程互斥:一个时间段只能允许一个进程使用的资源成为临界资源,进程要互斥的对临界资源访问,一个进程访问结束另一个才能访问。

对临界区的互斥访问,可以在逻辑上分为四个部分:

(1)进入区:检查能不能访问临界资源,能进入就将那个资源上锁,其他进程就进不来了。

(2)临界区:访问临界资源的那段代码,入fopen()就写在临界区。

(3)退出区:解锁

(4)剩余区:其他处理

单标志法:int turn = 0;定义了只有P0进程能进入访问,访问到一半要是时间片用完就会跳到P1进程访问,但P1条件不满足,会在while(turn !=1)语句一直卡住直到时间片用完, 再切换回P0,P0执行到turn1的时候将临界区权限交给P1,P1运行完后再换个P0。

 

 按照P0 P1 P0 P1...顺序访问,该算法违背了”空闲让进”原则:P0不想访问P1就一直不能访问。

 

双标志先检查法:进程想进入的时候把对应的标志位改成TRUE,被flag数组记录下来

 

 

 按照152637的顺序执行,两个进程将会同事访问临界区,违背了”忙则等待”原则。因为1和2 、5和6不是连在一起执行的,中间可能发生进程切换。

 

双标志后检查法:先占坑说我要用临界区,再判断别的进程

 

 两个进程可能都无法进入临界区,违背了“空闲让进”和“有限等待”原则。进程产生“饥饿”现象。

 

peeterson算法:在双标志后检查法的基础上让进程互相谦让

进程:“我想进临界区,但是你先进吧,我看看你想不想进入,你想就让你进”

 

 未遵循“让权等待”原则。

 

 

 中断屏蔽方法:简洁高效,不适用与多处理机;且只适用于操作系统内核进程

 

 TSL指令:使用硬件实现的,old记录临界区是否上锁,不管上没上都把它加锁,再返回old,不满足“让权等待”原则。

swap指令:

 

 信号量机制:解决进程互斥和进程同步的问题,信号量是一个变量,表示系统中某种资源的数量。

原语:由关中断/开中断指令实现的特殊程序段,其执行只能一气呵成,不能中断。

信号量机制——整型信号量:只有三种操作:初始化、P操作、V操作,不满足“让权等待”原则。

信号量机制——记录型信号量

 

 

 

 

 

 

 

 

 

posted @   七月猫合  阅读(465)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
点击右上角即可分享
微信分享提示