第六章 进程同步.pdf
文本预览下载声明
第6章进程同步
进程的互斥和同步进程的互斥和同步
进程的互斥和同步进程的互斥和同步
临界资源临界资源、临界区、临界区
临界资源临界资源、、临界区临界区
实现互斥的实现互斥的软件方法软件方法、硬件方法、硬件方法
实现互斥的实现互斥的软件方法软件方法、、硬件方法硬件方法
信号量信号量、经典同步问题、经典同步问题、、管程管程
信号量信号量、、经典同步问题经典同步问题、、管程管程
例: 售票系统
一个大大简化的售票系统一个大大简化的售票系统
一个大大简化的售票系统一个大大简化的售票系统
利用利用BACI 观察并发进程的执行结构观察并发进程的执行结构
利用利用 观察并发进程的执行结构观察并发进程的执行结构
/~tcamp/baci/baci_index.html
int n = 9; int n = 9;
void proc() { void proc() {
while (1) { while (1) {
if (n 0) { ①① if (n 0) {
①①
cout n endl; ②② cout n endl;
②②
n = n - 1; ③③ n = n - 1;
③③
} }
T else break; else break;
U
J } }
B
,
s } }
m
e
t
s
y void main() { void main() {
S
g
n cobegin { proc(); } cobegin { proc(); proc(); }
i
t
a
r
e } }
p
O
2
例: 售票系统(2)
产生错误的原因产生错误的原因
产生错误的原因产生错误的原因
共享的全局变量共享的全局变量— 无保护无保护
共享的全局变量共享的全局变量 无保护无保护
访问共享全局变量的代码访问共享全局变量的代码— 无控制无控制
访问共享全局变量的代码访问共享全局变量的代码 无无控制控制
int n = 9;
void proc() {
while (1) {
if (n 0) {
cout n endl;
n = n - 1;
显示全部