auto commit

This commit is contained in:
CyC2018
2018-03-06 11:17:27 +08:00
parent 65fe30f23f
commit 5608f55f36
18 changed files with 546 additions and 546 deletions

View File

@ -259,14 +259,14 @@ shortest remaining time nextSRTN
### 3. 信号量
**信号量Semaphore** 是一个整型变量,可以对其执行 down 和 up 操作,也就是常见的 P 和 V 操作。
**信号量Semaphore** 是一个整型变量,可以对其执行 down 和 up 操作,也就是常见的 P 和 V 操作。
- **down** : 如果信号量大于 0 ,执行 -1 操作;如果信号量等于 0将进程睡眠等待信号量大于 0
- **up**:对信号量执行 +1 操作,并且唤醒睡眠的进程,让进程完成 down 操作。
- **down** : 如果信号量大于 0 ,执行 -1 操作;如果信号量等于 0将进程睡眠等待信号量大于 0
- **up** :对信号量执行 +1 操作,并且唤醒睡眠的进程,让进程完成 down 操作。
down 和 up 操作需要被设计成原语,不可分割,通常的做法是在执行这些操作的时候屏蔽中断。
如果信号量的取值只能为 0 或者 1那么就成为了**互斥量Mutex**0 表示临界区已经加锁1 表示临界区解锁。
如果信号量的取值只能为 0 或者 1那么就成为了 **互斥量Mutex** 0 表示临界区已经加锁1 表示临界区解锁。
```c
typedef int semaphore ;
@ -284,7 +284,7 @@ void P2() {
}
```
**使用信号量实现生产者-消费者问题**
**使用信号量实现生产者-消费者问题**
使用一个互斥量 mutex 来对临界资源进行访问empty 记录空缓冲区的数量full 记录满缓冲区的数量。
@ -345,9 +345,9 @@ end monitor;
管程有一个重要特性:在一个时刻只能有一个进程使用管程。进程在无法继续执行的时候不能一直占用管程,否者其它进程永远不能使用管程。
管程引入了 **条件变量** 以及相关的操作:**wait()** 和 **signal()** 来实现同步操作。对条件变量执行 wait() 操作会导致调用进程阻塞把管程让出来让另一个进程持有。signal() 操作用于唤醒被阻塞的进程。
管程引入了 **条件变量** 以及相关的操作:**wait()** 和 **signal()** 来实现同步操作。对条件变量执行 wait() 操作会导致调用进程阻塞把管程让出来让另一个进程持有。signal() 操作用于唤醒被阻塞的进程。
**使用管程实现生成者-消费者问题**
**使用管程实现生成者-消费者问题**
```pascal
monitor ProducerConsumer