如题所述
wait操作和signal操作是计算机操作系统中进程控制的信号量机制的概念。
在进程控制中如何合理对共享资源分配便是一个关键的问题,所以引入了信号量的这个概念,通过pv操作便可以达到对空闲共享资源的合理分配。
一、信号量(semaphore)的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。信号量的值与相应资源的使用情况有关。
1)、当它的值大于0时,表示当前可用资源的数量;
2)、当它的值小于0时,其绝对值表示等待使用该资源的进程个数。
二、PV操作,只有通过pv操作才可以改变信号量的值。
1)、p操作(wait):申请一个单位资源,进程进入。简而言之就是信号量减一。
2)、v操作(signal):释放一个单位资源,进程出来。简而言之就是信号量加一。
扩展资料
信号量分类
1、整型信号量
最初Dijkstra把整型信号量定义为一个用于表示资源数目的整型量S,它与一般的整型量不同,除初始化外,仅能通过两个标准原子操作(Atomic Operation)wait(S)和signal(S)操作。
2、记录型信号量
在整型信号量机制中的wait操作,只要是信号量S<=0,就会不断测试。因此,该机制并未遵循“让权等待”准则,而是使进程处于“忙等”状态。记录型信号量机制则是一种不存在“忙等”现象的进程同步机制。
3、AND型信号量
在一些应用场合,是一个进程需要先获得两个或者更多的共享资源后方能执行其任务。假定现在有两个进程A和B,他们都要求访问共享数据D和E。当然,共享数据都应该作为临界资源。为此,可为这两个数据分别设置用于互斥的信号量Dmutex和Emutex。
4、信号量集
在记录型信号量机制中,wait(S)或signal(S)操作仅能对信号量施以加1或者减1操作,意味着每次只能获得或释放一个单位的临界资源。而当一次需要N个某类临界资源时,便要进行N次wait(S)操作,显然这是低效的。此外,在有些情况下,当资源数量低于某一下限值时,便不予分配。
参考资料来源:百度百科-信号量机制