进程同步(synchronous)
✅通俗理解:
就像在排队买饭,一个一个来,前面的人不走,后面的人就不能干事。
进程同步就是:多个进程之间需要协调,有先后顺序,一个进程要等另一个进程完成某件事后才能继续。
🎯举个例子:
你和朋友一起搭积木:
-
你负责搭第一层,
-
他负责搭第二层,
-
他必须等你第一层搭好后,才能开始。
这就是同步:有依赖,有先后,谁先做完谁后做都讲究顺序。
进程异步(asynchronous)
✅通俗理解:
就像在食堂里点餐,你点好餐以后可以找座位坐着等,后厨在忙着做菜,你不用一直站着等,等做好了再通知你来取。
进程异步就是:大家互不等候,各干各的,有结果了再通知或交接。
🎯举个例子:
你和朋友写一篇报告:
-
你写前言和总结,他写正文部分,
-
写的顺序没有依赖,
-
写完后合并就行。
这就是异步:不讲顺序,各自完成自己的部分即可。
进程互斥
为了实现对临界资源的互斥访问,同时保证系统整体性能,需要遵循以下原则:
-
空闲让进。临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区;
-
忙则等待。当已有进程进入临界区时,其他试图进入临界区的进程必须等待;
-
有限等待。对请求访问的进程,应保证能在有限时间内进入临界区(保证不会饥饿);
-
让权等待。当进程不能进入临界区时,应立即释放处理机,防止进程忙等待。
为什么要进程互斥
假设有两个进程 A 和 B,都要向同一个打印机发送任务:
-
A 发送打印内容“学生成绩”
-
B 发送打印内容“工资单”
如果没有互斥控制,它们可能会同时操作打印机,结果打印出的内容可能是:
学生工分资单
内容完全错乱!同样的问题也可能发生在共享内存、全局变量、数据库记录等任何“共享资源”上。