临界资源:进程独占型的硬件和共享的数据结构和文件。临界区:使用临界资源的程序段。
要求:
空闲让进,忙则等待,有限等待,让权等待。
实现方法:
- 软件 :通过全局变量来控制程序执行,但是程序在检测标志变量后,修改标志变量前发生中断,然会有多个进程进入临界区。
- 硬件:
- 关闭总中断
- 将软件的方法使用机器指令封装好,然后再调用,解决了因中断导致的错误。但是会有忙等现象。
- 机器指令包括:test&set 以及exchange
- 信号量
- 信号量是一个信号灯一样的结构体变量,其成员包括:一个整型变量和一个队列。
- 使用wait和signal指令,wait指令申请资源,signal指令释放资源。
- 将暂时不能执行的程序放入阻塞队列。(这样解决了忙等问题)
- 管程
- 消息传递