第3章 进程同步与通信 第2课时 进程互斥方法《操作系统原理课件(第2版)》 同步教学(电子工业出版社)

2023-08-30
| 18页
| 156人阅读
| 0人下载
普通

内容正文:

操作系统原理(第2版) 3.2.1 实现进程互斥的硬件方法 通过计算机提供的一些机器指令来实现进程的互斥。 机器指令是指在一个指令周期内执行完成的指令,而专用机器指令的执 行则不会被中断。专用机器指令有3个: 1.开关中断指令: 进程在进入临界区之前先执行“关中断”指令来屏蔽掉所有中断;进程完成临界区的任务后,再执行“开中断”指令将中断打开。程序结构如下: cobegin //伪代码cobegin和coend表示其间的进程可以并发执行 process Pi() // i=1, 2, 3, …, n { … //与临界资源无关的代码 lock out interrupts; //关中断 临界区; unlock interrupts; //开中断 … //与临界资源无关的剩余代码 } coend 3.2 进程互斥方法 2. 测试与设置指令TS(Test and Set): 要为每个临界资源设置一个整型变量s,可以将它看成一把锁。若s的值为0(开锁状态),则表示没有进程访问该锁对应的临界资源。若s的值为1(关锁状态),则表示该锁对应的临界资源已被某个进程占用。 3.2 进程互斥方法 TS指令的函数描述: int TS(int s) { if(s) return 1; else { s=1; return 0; } } 应用: int s=0; cobegin process Pi() //i=1,2,3,…,n { … //与临界资源无关的代码 while(TS(s)); //进入区 临界区; s=0; //退出区 … //与临界资源无关的剩余代码 } coend 3. 交换指令(Swap):要为每个临界资源设置一个整型的全局变量s;若s的值为0则表示没有进程在临界区,若s的值为1则表示有进程在临界区(即访问临界资源)。此外,还要为每个进程设置一个整型局部变量key。只有当s的值为0并且key的值为1时,本进程才能进入临界区。进入临界区后,s的值为1且key的值为0;退出临界区时,应将s的值置为0。 3.2 进程互斥方法 交换指令的函数描述: void Swap(int *a,int *b) { int temp=*a; *a=*b; *b=temp; } int s=0; //s为全局变量 cobegin process Pi() //i=1,2,3,…,n { … //与临界资源无关的代码 int key=1; //key为局部变量 do{ //进入区 Swap(&s,&key); }while(key); 临界区; s=0; //退出区 … //与临界资源无关的剩余代码 } coend 3.2.2实现进程互斥的软件方法 1. 两标志进程互斥算法 基本思想:为希望访问临界资源的两个并发进程设置的两个标志T1和T2来表示某个进程是否在临界区;若Ti(i=1, 2)等于0则表示进程Pi(i=1, 2)没有在临界区,若Ti(i=1, 2)等于1则表示进程Pi(i=1, 2)在临界区。每个进程在进入临界区之前,先判断临界区是否已被另一进程访问,若是则本进程等待,否则本进程进入临界区。 3.2 进程互斥方法

资源预览图

第3章 进程同步与通信 第2课时 进程互斥方法《操作系统原理课件(第2版)》 同步教学(电子工业出版社)
1
第3章 进程同步与通信 第2课时 进程互斥方法《操作系统原理课件(第2版)》 同步教学(电子工业出版社)
2
第3章 进程同步与通信 第2课时 进程互斥方法《操作系统原理课件(第2版)》 同步教学(电子工业出版社)
3
第3章 进程同步与通信 第2课时 进程互斥方法《操作系统原理课件(第2版)》 同步教学(电子工业出版社)
4
第3章 进程同步与通信 第2课时 进程互斥方法《操作系统原理课件(第2版)》 同步教学(电子工业出版社)
5
第3章 进程同步与通信 第2课时 进程互斥方法《操作系统原理课件(第2版)》 同步教学(电子工业出版社)
6
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。