色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當(dāng)前位置:IT培訓(xùn) > 華清遠(yuǎn)見(jiàn)教育科技集團(tuán) > 嵌入式學(xué)習(xí) > 講師博文 > 信號(hào)量是什么,大神全方位交給你
信號(hào)量是什么,大神全方位交給你
時(shí)間:2018-04-19作者:華清遠(yuǎn)見(jiàn)

一.首先我們必須知道什么是信號(hào)量

信號(hào)量的本質(zhì)是數(shù)據(jù)操作鎖,它本身不具備數(shù)據(jù)交換功能,而只是用于保護(hù)進(jìn)程線程之間共享的資源,實(shí)現(xiàn)對(duì)共享資源的同步與互斥操作。

信號(hào)量相當(dāng)于一把鎖,例如小黑上廁所,需要檢查是否有鎖,有鎖獲取鎖,占用廁所坑位資源,其他人無(wú)法進(jìn)此坑位,當(dāng)小黑上完廁所,需要釋放鎖,其他人都可以獲取鎖。

小黑 ------》 進(jìn)程

門鎖 --------》 信號(hào)量

坑位 ------》 共享資源(信號(hào)量保護(hù)對(duì)象)

二.為什么要使用信號(hào)量

為了防止出現(xiàn)因多個(gè)程序同時(shí)訪問(wèn)一個(gè)共享資源而引發(fā)的一系列問(wèn)題,我們需要一種方法,在任一時(shí)刻只能有一個(gè)執(zhí)行進(jìn)程訪問(wèn)代碼的臨界區(qū)域;臨界區(qū)域是指執(zhí)行數(shù)據(jù)更新的代碼需獨(dú)占式地執(zhí)行。而信號(hào)量就可以提供這樣的一種訪問(wèn)機(jī)制,讓一個(gè)臨界區(qū)同一時(shí)間只有一個(gè)進(jìn)程在訪問(wèn)它,也就是說(shuō)信號(hào)量是用來(lái)調(diào)協(xié)進(jìn)程對(duì)共享資源的訪問(wèn)的。其中共享內(nèi)存的使用就要用到信號(hào)量。

臨界資源:一次只允許一個(gè)進(jìn)程(一個(gè)線程)使用的資源叫做臨界資源。

臨界區(qū):訪問(wèn)臨界資源的代碼稱為臨界區(qū)。

三.信號(hào)量分類:

1.System V信號(hào)燈(IPC對(duì)象),也叫經(jīng)典ipc對(duì)象,一般用于進(jìn)程通信。

2.posix基于內(nèi)存的信號(hào)燈(無(wú)名信號(hào)燈),一般線程通信。

功能分類:

1.二值信號(hào)量:信號(hào)量的值為0或1。與互斥鎖類似,資源可用時(shí)值為1,不可用時(shí)值為0。

2.計(jì)數(shù)信號(hào)量:值在0到n之間。用來(lái)統(tǒng)計(jì)資源,其值代表可用資源數(shù)。

注意:system v信號(hào)量對(duì)象不是一個(gè)信號(hào)量,是一個(gè)或者多個(gè)信號(hào)量的集合。對(duì)應(yīng)內(nèi)核中一個(gè)結(jié)構(gòu)體:struct semid_ds 有一個(gè)成員sem_base指向第0個(gè)信號(hào)量結(jié)構(gòu)體起始地址。

四.System v信號(hào)量實(shí)現(xiàn)步驟

-----》1、創(chuàng)建信號(hào)量對(duì)象

int semget(key_t key, int nsems, int semflg);

Key:創(chuàng)建信號(hào)量對(duì)象的唯一鍵值

nsems表示的就是創(chuàng)建的信號(hào)量集中信號(hào)量的個(gè)數(shù)

Semflg: 權(quán)限 IPC_CREAT:存在則打開,否則創(chuàng)建; IPC_CREAT | IPC_EXCL存在則出錯(cuò)返回,否則創(chuàng)建,這 樣保證了 打開的是一個(gè)全新的信號(hào)量集

成功:信號(hào)量集ID 失敗-1

----》2.初始化具體信號(hào)量的值。

int semctl(int semid, int semnum, int cmd, union set);

semid:信號(hào)燈集ID

semnum: 要修改的信號(hào)燈編號(hào)

Cmd: GETVAL:獲取信號(hào)燈的值

SETVAL:設(shè)置信號(hào)燈的值

IPC_RMID:從系統(tǒng)中刪除信號(hào)燈集合

-----》3.執(zhí)行p操作:獲取資源,信號(hào)量值減1不阻塞,可以操作資源;如果無(wú)資源可用,信號(hào)量值為0,阻塞等待資源。

int semop(int semid, struct sembuf *sops, unsigned nsops);

semid:信號(hào)量集ID

struct sembuf {

short sem_num; // 要操作的信號(hào)燈的編號(hào)

short sem_op; // 0 : 等待,直到信號(hào)燈的值變成0

// 1 : 釋放資源,V操作

// -1 : 分配資源,P操作

short sem_flg; // 0, IPC_NOWAIT, SEM_UNDO

};

nops: 要操作的信號(hào)燈的個(gè)數(shù)

----》 操作資源: 共享內(nèi)存

-----》4.執(zhí)行v操作:釋放資源,信號(hào)量值加1.

int semop(int semid, struct sembuf *sops, unsigned nsops);

-----》5.刪除對(duì)象

int semctl(int semid, int semnum, int cmd, ...);


發(fā)表評(píng)論

全國(guó)咨詢電話:400-611-6270,雙休日及節(jié)假日請(qǐng)致電值班手機(jī):15010390966

在線咨詢: 曹老師QQ(3337544669), 徐老師QQ(1462495461), 劉老師 QQ(3108687497)

企業(yè)培訓(xùn)洽談專線:010-82600901,院校合作洽談專線:010-82600350,在線咨詢:QQ(248856300)

Copyright 2004-2018 華清遠(yuǎn)見(jiàn)教育科技集團(tuán) 版權(quán)所有 ,京ICP備16055225號(hào),京公海網(wǎng)安備11010802025203號(hào)

有位老師想和您聊一聊

主站蜘蛛池模板: a久久| 四虎影院在线视频 | 精品黑人一区二区三区 | 爆乳一区二区三区无码 | 1234成人网站 | JAPANESE日本人妻共享 | 波多野吉衣AV无码 | 国产免费黄色一级片 | 国产成年人在线观看 | 亚洲熟伦熟女新五十路熟妇 | 色一情一乱一伦麻豆 | 中文字幕乱码熟妇五十中出 | 欧洲熟妇精品视频 | 德国妓女精品性HD | 久久国产AV影片 | 国产精品成人99一区无码 | 中文字幕人成乱码的注意事项 | 日韩精品无码专区免费播放 | 精品少妇ay一区二区三区 | 国产成人无码精品久久灭火器 | 欧美含羞草免费观看全部完 | 暖暖免费视频在线观看 | 小龙女玉足娇喘蕾丝湿润 | 色婷婷综合久久久久中文字幕 | 欧美深夜影院 | 狠狠色丁香久久婷婷综合五月 | 私库av在线播放 | 宅男影院在线播放999 | 艳妇乳肉豪妇荡乳XXX | 精品无码欧美一区二区三区不卡 | 3D动漫同人精品无码专区 | 精品免费看国产一区二区 | 伊伊人成亚洲综合人网香 | 无码免费一区二区三区 | 精品人妻无码一区二区三区毛片 | 久久久久夜夜夜综合国产 | 正在播放白领少妇第一次 | 中国少妇饥渴XXXXX | 夜夜高潮夜夜爽夜夜爱爱 | 精品乱人伦一区二区三区 | 欧美乱妇高清免费96欧美乱妇高清 |