• 计算机要执行的程序需要从硬盘读取到内存中,形成一个个的进程,每个进程就是一个独立的资源单位,内部有独立的虚拟地址空间
    • 有两个进程,只有一个CPU轮流执行两个进程,它们共享一个全局变量,当两个进程中的部分代码同时读写这个全局变量时,就会应为竞争而产生问题(把这部分代码称为临界区)
    • 解决办法就是读写互斥
    • 严格轮换法
    • image.png
    • 进程需要严格交替进入临界区,如果其中一个进程比较霸道,在临界区中不肯出来,那其他的进程就只能等待了
    • 把锁变量和警告变量的思想结合起来,更好的互斥解法名叫Peterson算法
    • 需要一个锁变量代表轮到的进程编号,一个警告数组记录每个进程的警告
    • image.png
    • 使用while方式称为忙等待,会导致CPU空转
    • 更好的办法是使用系统调用,在此时将该进程挂起,释放CPU
    • image.png