成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺析Unix信號量知識

系統 其他OS
我們來學習下Unix信號量的知識。信號量(Semaphore),有時被稱為信號燈,是在多線程環境下使用的一種設施,是可以用來保證兩個或多個關鍵代碼段不被并發調用。

在Unix信號量機制實現之前,通常采用加鎖文件的方法。信號量(Semaphore),有時被稱為信號燈,是在多線程環境下使用的一種設施,是可以用來保證兩個或多個關鍵代碼段不被并發調用。在進入一個關鍵代碼段之前,線程必須獲取一個信號量;一旦該關鍵代碼段完成了,那么該線程必須釋放信號量。

其它想進入該關鍵代碼段的線程必須等待直到***個線程釋放信號量。為了完成這個過程,需要創建一個信號量VI,然后將Acquire Semaphore VI以及Release Semaphore VI分別放置在每個關鍵代碼段的首末端。確認這些信號量VI引用的是初始創建的信號量。

系統調用semop用來對Unix信號量集合中的一個或多個信號量進行操作,操作命令由用戶提供的操作結構數組來定義,該結構如下:

  1. struct sembuf{   
  2. short sem_num; /*信號量在集合中的下標*/   
  3. short sem_op; /*操作值*/   
  4. short sem_flg; /*操作標志*/   
  5. };  

系統從用戶地址空間讀Unix信號量操作結構數組,并核實信號量下標的合法性及進程是否具備讀或修改信號量所必需的權限。若權限不夠則調用失敗;若進程必須睡眠,則它將已操作過的信號量恢復為該系統調用開始時的值,然后它就睡眠,直到它等待的事件發生時再重新執行該系統調用。

由于系統將操作數組保存在一個全局數組中,因此若它必須重新執行該調用的話,它必須重新從用戶空間讀該數組。這樣,操作按原語方式執行--或一次做完或根本不做。

系統根據操作值來改變信號量的值:

①若操作值為正,系統就增加信號量的值并喚醒所有等待信號量增值的進程;
②若操作值是0,系統就檢查信號量的值:如果為0,就繼續數組中的其它操作;否則把等待信號量的值為0的睡眠進程數加1,然后睡眠;
③若操作值為負且其絕對值不超過信號量的值,系統就把操作值(一個負數)加到信號量值上,如果結果為0則系統就喚醒所有等待信號量的值為0的睡眠進程;
④若信號量的值小于操作值的絕對值,系統就讓進程睡眠在"等待信號量增值"這一事件上。

當進程在Unix信號量操作過程中睡眠時,它睡眠在可中斷級上,因此當它接收到軟中斷信號時就被喚醒了。用戶可在操作標志中設置IPC_NOWAIT標志以防止進程睡眠。

如果進程執行了一個信號量操作,鎖住了某些資源,卻沒有恢復信號量的值就退出了(如收到kill信號),那么就可能出現危險情況。為了避免這類問題,用戶可在操作標志中設置SEM_UNDO標志。當進程退出時,系統便撤除該進程做過的每個信號量操作的影響。

值得指出的是,當你使用兩個或多個Unix信號量時,死鎖總是可能的,系統并不能檢查多個信號量間的死鎖。

本文所用算法及調用格式均已在SCOUNIX3.2、SCOOpenSever3.X及5.X上運行通過。

【編輯推薦】

  1. Unix信號量常用的操作
  2. 靈活運用Unix 線程知識
  3. 學習簡單的Unix信號量
  4. 教你如何創建Unix消息隊列
  5. 知識講解Unix 消息隊列
責任編輯:小霞
相關推薦

2010-04-21 17:10:25

Unix信號量

2010-04-21 15:37:38

Unix信號量

2010-04-21 16:25:13

Unix信號量

2010-04-21 16:42:48

Unix信號量

2020-11-05 09:59:24

Linux內核信號量

2021-04-13 09:20:15

鴻蒙HarmonyOS應用開發

2020-09-25 07:34:40

Linux系統編程信號量

2021-09-07 07:53:42

Semaphore 信號量源碼

2010-04-21 11:15:55

Unix 命令

2024-10-29 15:23:45

Python線程安全

2010-04-19 17:44:56

Unix操作系統

2010-03-17 16:36:10

Java信號量模型

2010-07-15 15:32:10

Perl線程

2009-12-08 12:14:43

2019-11-19 09:00:38

JavaAND信號量

2025-04-16 08:50:00

信號量隔離線程池隔離并發控制

2020-11-10 15:25:26

SemaphoreLinux翻譯

2016-11-23 16:08:24

Python處理器分布式系統

2021-02-03 20:10:29

Linux信號量shell

2010-03-16 17:52:27

Java多線程信號量
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产欧美日韩在线 | 欧美美女爱爱 | 亚洲精品一区在线 | 欧美日韩中文字幕在线 | 亚洲精品乱码久久久久久久久 | 国产精品毛片久久久久久久 | 国产精品一区二区不卡 | 日韩精品| 国产精品久久久久无码av | 日韩第一区 | 久久久久久成人 | 涩涩视频大全 | 91精品久久久久久久久99蜜臂 | 国产色在线 | 99国内精品久久久久久久 | 日韩精品一区二区三区在线观看 | 久久日韩粉嫩一区二区三区 | 亚洲先锋影音 | 亚洲av毛片成人精品 | 欧美福利在线 | 999国产视频 | 91精品国产综合久久久动漫日韩 | 97视频免费 | 成人三级在线播放 | 成人精品国产免费网站 | 日韩午夜电影在线观看 | 久久草视频| 欧美一级免费看 | 欧美一区在线视频 | 91精品久久久久 | 日本免费一区二区三区四区 | 亚洲网站免费看 | 亚洲二区在线 | 欧美九九九 | 精品久久久久久亚洲精品 | 中文字幕一级毛片视频 | 日本免费一区二区三区视频 | 国产三级在线观看播放 | 午夜精品一区二区三区免费视频 | 亚洲电影在线播放 | 男女黄网站 |