【操作系统】【进程】进程的同步与互斥
进程同步:程序执行的顺序有时候不是我们想要的,有随机性,这就是进程的异步,进程同步就是为了解决这一问题,也就是协调进程的工作次序。
进程互斥:一个时间段只能允许一个进程使用的资源成为临界资源,进程要互斥的对临界资源访问,一个进程访问结束另一个才能访问。
对临界区的互斥访问,可以在逻辑上分为四个部分:
(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操作,不满足“让权等待”原则。
信号量机制——记录型信号量
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报