第二章 进程与线程 十六、信号量机制

目录

一、信号量机制的定义

二、信号量的定义

三、分类

1、整型信号量

(1)定义

(2)例子

2、记录型信号量

三、实现方式

1、在使用信号量时,需要定义信号量的初值。

2、当一个进程或线程想要使用该资源时,需要调用wait操作来获取该资源的信号量。

3、当一个进程或线程使用完该资源后,需要调用signal操作来释放该资源的信号量,使得其它进程或线程可以使用该资源。

4、总的来说

四、总结


一、信号量机制的定义

信号量机制是一种同步机制,用于协调多个进程或线程之间的访问资源。信号量通过计数器的方式来维护特定资源的可用性或被占用数目。

二、信号量的定义

信号量其实就是一个变量(可以是一个整数,也可以是更复杂的记录型变量),可以用一个信号量来表示系统中某种资源的数量。

比如:系统中只有一台打印机,就可以设置一个初值为1的信号量。

三、分类

1、整型信号量

(1)定义

用一个整数型的变量作为信号量,用来表示系统中某种资源的数量。

(2)例子

第二章 进程与线程 十六、信号量机制_第1张图片

2、记录型信号量

第二章 进程与线程 十六、信号量机制_第2张图片

三、实现方式

1、在使用信号量时,需要定义信号量的初值。

当信号量的值大于0时,表示资源可用;

当信号量的值为0时,表示资源被占用。

2、当一个进程或线程想要使用该资源时,需要调用wait操作来获取该资源的信号量。

如果信号量的值大于0,表示资源可用,该进程或线程可以使用该资源,并将信号量减1。

如果信号量的值为0,表示资源被占用,该进程或线程需要等待,直到信号量的值变为大于0,表示资源释放了。

3、当一个进程或线程使用完该资源后,需要调用signal操作来释放该资源的信号量,使得其它进程或线程可以使用该资源。

同时,调用signal操作会将信号量的值加1。

4、总的来说

信号量机制可以用于解决多个进程或线程之间的竞争问题,例如多个进程或线程同时访问一个文件,可以使用信号量机制来保证每个进程或线程都能够有序访问该文件,避免文件损坏或数据丢失。

四、总结

第二章 进程与线程 十六、信号量机制_第3张图片

进程在申请资源时,若信号量小于等于0,则调用block进入堵塞态;

当进程释放资源时,信号量加一,并且调用wakeup唤醒阻塞队列的对头元素。

你可能感兴趣的:(操作系统学习,操作系统)