电子科技大学《计算机操作系统》第2章 并发与进程-同步知识课件.pptx

电子科技大学《计算机操作系统》第2章 并发与进程-同步知识课件.pptx

电子科技大学《计算机操作系统》第2章 并发与进程-同步知识课件.pptx

计算机操作系统;2.6 进程并发控制:互斥与同步 ;2.6.1 并发控制 ;2.6.1 并发控制 ;2.6.1 并发控制——竞争资源 ;2.6.1 并发控制——竞争资源 ;2.6.1 并发控制——竞争资源;效率 公平;2.6.2 互斥与同步的解决策略;2.6.2 互斥与同步的解决策略;2.6.3 软件方法;2.6.3 软件方法;2.6.3 软件方法;2.6.3 软件方法;2.6.3 软件方法;2.6.3 软件方法;2.6.3 软件方法——第三次改进(续);boolean flag[2] = {false, false}; //共享的全局变量 int turn = 1; //共享的全局变量 进程P0 do { flag[0] = true; //进入区 while (flag[1]) { if (turn == 1) { flag[0] = false; while (turn == 1) ; flag[0] = true; } } //进入区 进程P0的临界区代码; //临界区 turn = 1; flag[0] = false; //退出区 进程P0的其它代码 //剩余区 } while (true);2.6.3 软件方法—Dekker互斥算法(续);2.6.3 软件方法——Peterson互斥算法;软件方法特点 软件方法始终不能解决“忙等”现象,降低系统效率。 采用软件方法实现进程互斥使用临界资源是很困难的,它们通常能实现两个进程的互斥,很难控制多个进程的互斥。 算法设计需要非常小心,否则可能出现死锁,或互斥失败等严重问题。;2.6.4 硬件方法;2.6.4 硬件方法——屏蔽中断;2.6.4 硬件方法——专用机器指令;2.6.4 硬件方法——Test and Set;2.6.4 硬件方法——Test and Set(续);2.6.4 硬件方法——Exchange;2.6.4 硬件方法——Exchange(续);2.6.4 硬件方法;2.6.5 信号量方法;2.6.5 信号量方法;2.6.5 信号量方法;2.6.5 信号量方法;2.6.5 信号量方法;2.6.5 信号量方法;2.6.5 信号量方法;2.6.5 信号量方法;2.6.5 信号量方法;2.6.5 信号量方法;信号量的类型:依据使用方式 ;2.6.5 信号量方法;2.6.5 信号量方法;2.6.6 管程;2.6.6 管程;2.6.6 管程;2.6.6 管程;2.6.6 管程;2.6.6 管程;2.7 生产者/消费者问题;2.7 生产者/消费者问题;2.7 生产者/消费者问题;2.7 生产者/消费者问题;2.7 生产者/消费者问题;2.7 生产者/消费者问题;2.7 生产者/消费者问题;2.7 生产者/消费者问题 ;2.7 生产者/消费者问题 ;2.7 生产者/消费者问题;2.7 生产者/消费者问题;2.7 生产者/消费者问题;2.7 生产者/消费者问题;2.7 生产者/消费者问题;2.7 生产者/消费者问题;2.7 生产者/消费者问题;2.7 生产者/消费者问题;2.7 生产者/消费者问题 ;2.7 生产者/消费者问题 ;2.7 生产者/消费者问题 ;2.8 读者和写者问题;2.8 读者和写者问题;2.8 读者和写者问题;2.8 读者和写者问题;2.8 读者和写者问题;2.8 读者和写者问题;void reader() { while (1) { P(mutex); readcount++; if (readcount==1) P(wsem); V(mutex); READ; P(mutex); readcount--; if (readcount==0) V(wsem); V(mutex); } };2.8 读者和写者问题;2.8 读者和写者问题;2.8 读者和写者问题;2.8 读者和写者问题;2.8 读者和写者问题;2.8 读者和写者问题; 理发店有

文档评论(0)

1亿VIP精品文档

相关文档