咱们就把软件同步机制和硬件同步机制想象成两个不同的办法来管理一群小朋友排队玩滑梯(就像进程们排队使用资源)。
一、软件同步机制
1.怎么实现
1.就像是有个大姐姐(软件算法)在管着小朋友们排队。大姐姐定了一些规则,比如她在地上画了几个小圈圈(类似双标志位法之类的概念),每个小朋友要站在小圈圈里排队。或者她拿着几个小牌子(信号量机制),只有拿到牌子的小朋友才能去滑梯那儿玩。
2.速度方面
1.这个大姐姐管理起来就没那么快,因为她得想办法,得看看每个小朋友是不是站对地方了,有没有牌子之类的,做这些检查和判断都要花时间,所以相对比较慢。
3.资源占用
1.大姐姐不需要什么特别的东西,就靠她自己的脑子(软件算法),所以不会占用太多像玩具之类的资源(系统资源)。
4.换个地方行不行(可移植性)
1.如果小朋友们换个操场(不同的系统平台)玩滑梯,大姐姐还是可以用她那些画圈圈、发牌子的方法来管理,所以换地方比较容易,可移植性好。
5.复杂不复杂
1.大姐姐要想出来这些画圈圈、发牌子的规则,得费点脑筋,所以比较复杂。
6.适合的情况
1.如果不是特别着急玩滑梯(对效率要求不高),而且小朋友们可能经常换操场玩(需要可移植性),那这个大姐姐的方法(软件同步机制)就挺好。
二、硬件同步机制
1.怎么实现
1.这就好比是滑梯旁边有个自动的小机器(硬件指令)在管着小朋友们。比如说这个小机器有个特殊功能,小朋友一伸手(执行特定硬件指令),小机器就能马上知道这个小朋友是不是可以玩滑梯了。
2.速度方面
1.因为这个小机器的功能很直接,一伸手就知道结果,所以速度很快,比大姐姐管理起来要快得多。
3.资源占用
1.这个小机器本身可能比较复杂,占地方(占用系统资源),而且它工作的时候可能还会影响到周围其他的小玩具(系统整体性能)。
4.换个地方行不行(可移植性)
1.如果小朋友们换个操场,新操场可能没有这个特殊的小机器,那这个管理方法就用不了了,所以可移植性不好。
5.复杂不复杂
1.小朋友只要伸手(简单的硬件指令操作)就行,不需要像大姐姐那样想很多复杂的规则,所以相对简单。
6.适合的情况
1.如果小朋友们就想特别快地玩滑梯(对效率要求高),而且这个操场一直都有这个小机器(有硬件支持),那这个小机器的方法(硬件同步机制)就比较合适。