相关系统调用
对于我们的实验,要实现下面这些系统调用,分别对应了信号量的创建,V操作,P操作,信号量销毁。
sem_init
sem_init
系统调用用于初始化信号量,其中参数value
用于指定信号量的初始值,初始化成功则返回0
,指针sem
指向初始化成功的信号量,否则返回-1
sem_post
sem_post
系统调用对应信号量的V
操作,其使得sem
指向的信号量的value
增一,若value
取值不大于0
,则释放一个阻塞在该信号量上进程(即将该进程设置为就绪态),若操作成功则返回0
,否则返回-1
sem_wait
sem_wait
系统调用对应信号量的P
操作,其使得sem
指向的信号量的value
减一,若value
取值小于0
,则阻塞自身,否则进程继续执行,若操作成功则返回0
,否则返回-1
sem_destroy
sem_destroy
系统调用用于销毁sem
指向的信号量,销毁成功则返回0
,否则返回-1
,若尚有进程阻塞在该信号量上,可带来未知错误
Last updated