目录
Keys:
- 理解peterson算法和并发程序
- 掌握并发程序的形式语义,画并发程序状态机
记录:
- 一段失败的互斥方案,引出经典的peterson算法
- 形象解释peterson算法的例子:
- 场景:两人,一个厕所包厢;
- 想要上厕所的同学举自己的旗子,并快速贴对方的标签;其实实际上谁手快,谁被覆盖;
- 上厕所:当对方旗子举起,且厕所门标签为对方,原地循环等候;其他情况均可进门;
- 上完厕所:放下自己的旗子
- 为peterson算法手画状态转移图:这一步的本质需要理解并发程序的形式语义,每个状态里有什么?什么会导致状态的转移?(老师画的更好看)、、、、
- 手画真的很困难,并且易出错。如何让电脑帮我们画?Model Checker+xxx绘图工具;用model-checker.py 可以解释peterson-flag.py dekker.py mutex-bad.py,打印到命令行中,再用xxx工具生成便于人类阅读的状态转移图
思考和总结
- 好难。。。但是状态机这个东西真的好厉害,可以很轻松的把我理不清的逻辑梳理出来;在以后的学习中多多尝试用这种思维方式
- 从model-checker这里分析程序,就是只是一个概念上的理解了,以目前能力做肯定是做不出来的,但是或许以后能用到的时候再回看
- 图是最易于人类理解的方式,掌握绘图技能很重要,掌握从不同种逻辑的角度绘图