亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 984 | 回復(fù): 0
打印 上一主題 下一主題

linux內(nèi)核學(xué)習(xí)筆記-信號(hào)量 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2008-03-03 13:01 |只看該作者 |倒序?yàn)g覽

                                                    內(nèi)核中使用的信號(hào)量用于共享資源的同步訪問(wèn)。有down(),up()兩種類型的操作。down()用于獲取資源,而up()是釋放資源。一個(gè)任務(wù)想通過(guò)調(diào)用down()獲取資源,而代表該資源的信號(hào)量表示“沒(méi)有可用資源”的時(shí)候,進(jìn)程轉(zhuǎn)入等待狀態(tài),直到占有資源的進(jìn)程調(diào)用up()釋放資源后才能被喚醒。進(jìn)程的等待與喚醒通過(guò)等待隊(duì)列實(shí)現(xiàn)(
http://blog.chinaunix.net/u1/35101/showart_485204.html
)。1. 普通信號(hào)量:數(shù)據(jù)結(jié)構(gòu):struct semaphore {        atomic_t count;        int sleepers;        wait_queue_head_t wait;#if WAITQUEUE_DEBUG        long __magic;#endif};信號(hào)量的狀態(tài)變遷    某資源有兩個(gè)實(shí)例可用,因此初始化count為2。現(xiàn)有6個(gè)任務(wù)需要獲取該資源實(shí)例,其狀態(tài)變遷過(guò)程如下:-----------------------------------------------------------------------------------步驟  任務(wù)(進(jìn)程)  操作                count   sleepers     等待隊(duì)列    描述00   initialize  sema_init(sem, 2)   2       0          (NONE)01   T1          down(sem)           1       0          (NONE)     T1獲得一個(gè)資源實(shí)例02   T2          down(sem)           0       0          (NONE)     T2獲得一個(gè)資源實(shí)例03   T2          up(sem)             1       0          (NONE)     T2釋放一個(gè)資源實(shí)例04   T3          down(sem)           0       0          (NONE)     T3獲得一個(gè)資源實(shí)例05   T4          down(sem)           -1      1          (T4)       T4等待06   T5          down(sem)           -1      1          (T4,T5)    T5等待T07   T1          up(sem)             -1      1          (T5)       T1釋放一個(gè)資源實(shí)例                                                                   T4獲得一個(gè)資源實(shí)例08   T6          down(sem)           -1      1          (T5,T6)    T6等待09   T4          up(sem)             -1      1          (T6)       T4釋放一個(gè)資源實(shí)例                                                                   T5獲得一個(gè)資源實(shí)例10   T3          up(sem)             0       0          (NONE)     T3釋放一個(gè)資源實(shí)例                                                                   T6獲得一個(gè)資源實(shí)例11   T5          up(sem)             1       0          (NONE)     T5釋放一個(gè)資源實(shí)例12   T6          up(sem)             2       0          (NONE)     T6釋放一個(gè)資源實(shí)例-----------------------------------------------------------------------------------    在等待隊(duì)列中的任務(wù)數(shù)大于一的情況下,up()實(shí)際上會(huì)導(dǎo)致兩次wake_up()操作。第一次是up()使sem->count自增后,sem->count-----------------------------------------------------------------------------------步驟   任務(wù)    操作                            count    sleepers     等待隊(duì)列00                                           -1       1            (T1,T2...)01     Tup    count++                        0        1            (T1,T2...)02     Tup    __up() --> wake_up(T1)         0        1            (T1,T2...)03     T1     修改count,sleepers的值          0        0            (T1,T2...)04     T1     T1出隊(duì)                          0        0            (T2...)05     T1     __down() --> wake_up(T2)       0        0            (T2...)06     T1     從__down()返回                  0        0            (T2...)07     T2     修改count,sleepers的值          -1       1            (T2...)08     T2     schedule()                     -1       1            (T2...)-----------------------------------------------------------------------------------    因此,up()釋放一個(gè)資源實(shí)例,并且喚醒一個(gè)等待進(jìn)程。若此時(shí)還有其它進(jìn)程處于等待狀態(tài)的,__down()返回前的wake_up()會(huì)暫時(shí)地喚醒等待進(jìn)程,將count、sleepers再調(diào)整為(-1,1),表示暫時(shí)無(wú)足夠資源提供,然后又進(jìn)入等待狀態(tài)。
               
               

本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u1/35101/showart_488287.html
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP