文档详情

第六章 进程同步.pdf

发布:2017-09-18约5.26万字共73页下载文档
文本预览下载声明
第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;
显示全部
相似文档