电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

进程的同步与通信:信号量集机制


发布日期:2021/4/14
 

信号量集机制

信号量与信号量集

) 信号量

在UNIX系统中规定每个信号量有一个可用来表示某类资源数目的信号量值和一个操作值该操作值可为正整数零或负整数三种情况之一传统的信号量机构是对信号量施加wait及signal操作而在UNIX系统中则并未采用wait及signal而是利用semop( )系统调用对指定的信号量施加操作此外还可利用semget( )来建立信号量及利用semctl( )系统调用对信号量进行操纵

) 信号量集

在一个信号量集中通常都包含有若干个信号量对这组信号量的操作方式应当是原子操作方式此即把对这组信号量视为一个整体要么全做要么全不做如果核心不能完成对这组所有信号量的操作则核心应将已经操作过的信号量恢复到操作前的状态这样便可实现要么全做要么全不做的原子操作方式

信号量集的数据结构

) 信号量表

信号量表是信号量的结构数组在系统Ⅴ中每个信号量用一个信号量结构表示其中包括信号量值semval及最近一次对信号量进行操作的进程标识符sempid等待该信号量值增加的进程数等

) 信号量集表

系统调用

在信号量机制中同样也提供了若干条系统调用分别用于对信号量执行各种操作

) semget( )系统调用

用户可利用该系统调用来建立信号量集用户应提供信号量的名字信号量集中信号量的数目等若信号量集的建立成功将返回信号量集的描述符semid

) semop( )系统调用

该系统调用可用来对信号量集进行操作用户需提供信号量集的描述符信号量的编号即信号量在信号量集中的序号以及所要施加操作的操作数semop内核根据semop来改变信号量的值当semop为正值时便将该正值加到信号量的值上当semop为负值时若信号量的值大于semop的绝对值应将该负值加到信号量值上否则操作失败内核将已经操作过的信号量恢复到该系统调用开始执行时的值

——返回教材目录

了解更多计算机相关基础课程视频

上一篇:1.2.1 单项选择题[4]

下一篇:操作系统自测题参考答案[2]