最近双改变了兴趣方向,正在coursera上学习操作系统这门课程
看到了关于多进程的互斥问题
大体就是说考虑到多进程的程序可能会共用共同的某一部分内容,这部分称为临界区
但是由于cpu的调度,如果有两个进程A,B
A在使用临界区的时候,由于种种原因被下CPU换成了B上CPU执行
但是这个时候A对临界区的操作还没有完成与保存,与此同时B又开始了对临界区的操作
这样势必会造成临界区数据的混乱
举个例子
银行的两个ATM取款机(进程AB)上同时在对一个银行账户操作(临界区)
ATM机的逻辑是这样的
ATM(count, val){//账户 取现金额
read(count) //读入账户数据
if(count>val){ //如果账户余额充足
count -=val;
}
write(count)//将剩余余额写入
}
比如说这个账户一共有5000元,首先一个人在A上取现2000,但是在取现后写入之前
另一个人在B上同样取现了1000,这个时候A就被暂停运行了,此时的count还没有被重写
B机器上还是读到有5000的余额,取后还剩4000&#x