从同步的角度来说,进程可以分为如下的两类:
- 独立进程:一个进程的执行不影响其他进程的执行
- 协同进程:一个进程的执行影响其他进程的执行
进程同步问题在协同进程中被引出也是因为资源在协同进程中被分享。
关键部分问题
关键部分是一个一次只能被一个进程访问的代码段。关键部分包含共享的变量。共享的变量需要被同步来保持数据变量的一致性。
在入口段,进程提出进入到关键部分的请求。
任何一个关键部分问题的解法都必须满足3个条件:
互斥:如果一个进程在它的关键部分执行,别的任何一个进程都不被允许在关键部分执行。
进步:如果在关键部分没有任何一个进程,那么外面的任何进程都不能阻止它进入关键部分。
有限等待:
Peterson的解法