进程并发运行,导致多个进程间有资源共享,比如CPU、内存,因此存在不确定性和不可重现,可 能导致多次运行结果不一致。因此操作系统需要利用同步机制在并发执行的同时,保证一些操作是原子操作。
互斥是指一个进程占用了某个资源,其他进程都不能使用该资源;死锁是指多个进程各占有了一部分资源,形成了循环等待;饥饿是指其他进程轮流占用资源,一个进程一直得不到资源。
临界区
为解决进程间同步导致的这些问题,提出了一些方案。临界区是指进程中访问临界资源的一段需要互斥执行的代码。进入临界区之前需要判断能否进入,进入时需要改变标志阻止其他进程进入,进入的进程执行完成后退出时修改标志。临界区访问规则:空闲则入,没有进程进入时可以进城;忙则等待,有进程在临界区时其他进程均不可进入;有限等待,等待进入临界区的进程不能无限制等待;让权等待,不能进入的进程应释放CPU进入阻塞状态。
锁
见文章 锁