信号量
信号量用于实现进程间的同步与互斥
互斥: 保证同一时间只有一个进程访问临界资源实现临界资源的互斥访问保证安全性。
同步: 通过一种条件判断,不能访问则等待,能访问再唤醒,实现对临界资源访问的合理性。
本质: 内核中的一个计数器+pcb等待队列(对资源进行计数);
互斥的实现: 通过只有0/1的计数器,实现对临界资源访问状态的标记;在临界资源访问之前获取信号量,计数减一,若计数小于<0则使进程等待(将进程pcb加入队列中);否则可以对临界资源进行访问(并且在访问期间,已经将临界资源的状态置位不可访问状态,因此可以保证其他进程不会再访问临界资源),当前进程访问完毕之后,则对计数进行+1,则唤醒一个进程(将一个pcb出队,置位运行状态)
同步的实现: 信号量是一个对资源的计数,可以通过判断计数判断是否能够获取一个资源进行处理,若计数<0,则表示不能获取,并且对计数进行-1,需要等待(加入pcb队列)。这时候若其它进程生产一个资源,则会对计数进行+1,若计数<=0,则唤醒一个进程;