青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

martin

thinking

常用鏈接

統計

software

最新評論

unix 類系統中的進程同步方式代碼示例

MP(多CPU)同步原語代碼示例
                   ----引自《現代體系結構上的UNIX系統》

為了便于對示例的展開,我們首先假定一個場景:
內核中把檢測到的錯誤信息記錄到一個磁盤文件中的情形。出錯信息通過內存中的一個隊列來傳遞給日志進程(logging process)的。
當出現一個錯誤時,就在隊列中加入一項,并且通過調用函數log_error 通知日志進程。出錯日志進程接著把隊列中的項寫到磁盤上。
這就使得碰到錯誤的進程不必等候I/O完成或者或得為了向文件執行I/O而可能需要的任何鎖,并且避免了任何可能的上鎖次序問題。

代碼1, 采用事件計數的出錯日志通知機制

                                                日志進程
log_error(error)                    |
{                                         |       for(next=1; ; next++) {
    lock(&err_queue);             |           await(&err_event, next);
    把出錯信息加入到隊列           |          lock(&err_queue);
    unlock(&err_queue);          |          從隊列中刪除項
    advance(&err_event);        |          unlock(&err_queue);
}                                         |          write error to disk
                                           |       }

隊列本身由一個自旋鎖來保護。在本例中,事件計數只用于同步的目的,并不提供互斥。
在試用事件計數的時候,advance操作會永久性地改變事件計數的狀態。advance和await操作的相對時序沒有關系。

代碼2, 采用同步變量的出錯日志通知機制
                                                 日志進程
log_error(error)                            |
{                                                 |        for(;;){
   lock(&err_queue);                      |              lock(&err_queue);
   把出錯信息加入到隊列                    |              if (queue_empty){
   SV_SIGNAL(&err_syncvar, 0);      |                  SV_WAIT(&err_syncvar, PRI, &err_queue);
   unlock(&err_queue);                   |                  lock(&err_queue);
}                                                 |              }
                                                   |              從隊列中刪除項
                                                   |              unlock(&err_queue);
                                                   |              把錯誤寫入磁盤
                                                   |        }

因為同步變量自身沒有保留狀態,所以當日志進程測試隊列的狀態并決定是等待一項還是從隊列中刪除一項的時候,必須占有自旋鎖。類似地,log_error在
發送信號時也必須占有自旋鎖。注,SV_WAIT將釋放自旋鎖,并且阻塞日志進程,SV_SIGNAL到后從阻塞處繼續執行。

代碼3, 采用管程的出錯日志通知機制
                                                                 日志進程
log_error(error)                                  |       for(;;){
{                                                       |           mon_enter(&err_mon);
   mon_enter(&err_mon);                     |           if (queue empty)
   把出錯信息加入到隊列                          |               mon_wait(&err_mon, NEWENTRY);
                                                         |
   mon_signal(&err_mon, NEWENTRY);  |           從隊列中刪除項
   mon_exit(&err_mon);                       |           mon_exit(&err_mon);
}                                                       |           把錯誤寫入磁盤
                                                         |       }
                                    
代碼4, 采用信號量的出錯日志通知機制
                                                日志進程
log_error(error)                      |       for(;;){
{                                          |           P(&err_sema);
    lock(&err_queue);               |           lock(&err_queue);
    把出錯信息加入到隊列            |           從隊列中刪除項
    unlock(err_queue);              |           unlock(&err_queue);
    V(&err_sema);                   |           把錯誤寫入磁盤
}                                          |       }

posted on 2013-06-20 15:02 martin_yahoo 閱讀(1571) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美一区久久| 久久精品综合一区| 欧美激情第二页| 日韩视频在线免费| 最新中文字幕一区二区三区| 久久久人成影片一区二区三区| 国产资源精品在线观看| 另类亚洲自拍| 欧美成ee人免费视频| 日韩视频免费在线观看| 一本色道综合亚洲| 国产视频在线观看一区| 蜜臀av性久久久久蜜臀aⅴ| 男女精品视频| 亚洲欧美日韩精品久久奇米色影视| 亚洲一区二区三区影院| 狠狠综合久久av一区二区老牛| 免费日韩精品中文字幕视频在线| 奶水喷射视频一区| 午夜精品久久久99热福利| 久久av在线| 中国成人黄色视屏| 久久精品成人一区二区三区蜜臀 | 在线亚洲一区二区| 国产一区二区久久精品| 欧美激情久久久久久| 国产精品你懂的在线欣赏| 久久躁狠狠躁夜夜爽| 欧美日韩免费视频| 免费成人在线视频网站| 国产精品黄视频| 欧美二区在线播放| 国产欧美精品xxxx另类| 亚洲国产第一| 国产主播一区二区三区| 99亚洲一区二区| 亚洲国产精品电影| 午夜精品在线| 亚洲一区二区三区久久| 免费久久99精品国产自在现线| 午夜精品久久久久久久久久久| 免费亚洲一区二区| 久久精品女人| 国产精品香蕉在线观看| 亚洲日本一区二区三区| 亚洲国产经典视频| 欧美在线资源| 欧美在线观看网站| 国产精品二区影院| 亚洲日本一区二区| 亚洲精品一区二区三区在线观看| 小辣椒精品导航| 香港久久久电影| 欧美性猛交xxxx乱大交蜜桃| 亚洲盗摄视频| 亚洲人永久免费| 麻豆免费精品视频| 美女精品在线观看| 国产亚洲精品aa| 亚洲欧美日韩天堂| 欧美一区二区黄| 国产精品亚洲视频| 午夜精品久久久久久久99水蜜桃| 一区二区三区www| 欧美日韩999| 日韩视频精品| 亚洲一区二区三区中文字幕在线| 欧美激情a∨在线视频播放| 亚洲国产另类久久久精品极度| 亚洲激情国产| 欧美黄色影院| 日韩亚洲欧美成人一区| 亚洲视频播放| 国产精品萝li| 亚洲欧美久久久| 久久久xxx| 揄拍成人国产精品视频| 美女亚洲精品| 亚洲人成网站色ww在线| 在线亚洲欧美视频| 国产精品久久久一区麻豆最新章节 | 亚洲伊人网站| 国产精品亚洲人在线观看| 欧美一区二区精品在线| 另类图片国产| 亚洲卡通欧美制服中文| 欧美日韩综合久久| 亚洲一区在线播放| 久久亚洲高清| 日韩图片一区| 国产农村妇女精品一二区| 欧美亚洲视频一区二区| 欧美电影在线观看| 一区二区三区毛片| 国产亚洲精品aa| 欧美高清在线精品一区| 亚洲一区黄色| 欧美国产一区视频在线观看| 一区二区三区精品国产| 国产亚洲二区| 欧美激情中文不卡| 性欧美xxxx视频在线观看| 美腿丝袜亚洲色图| 亚洲一区二区在线视频| 在线精品视频一区二区| 欧美日韩亚洲一区二区三区| 性亚洲最疯狂xxxx高清| 亚洲高清毛片| 久久九九久久九九| 一区二区三区精品| 亚洲国产高清一区| 国产精品一区二区三区四区五区| 男女精品网站| 欧美资源在线观看| 亚洲一级电影| 亚洲精品资源美女情侣酒店| 久久久久成人网| 午夜精品视频网站| 亚洲精品黄色| 亚洲成人影音| 国产一区二区三区黄视频| 国产精品超碰97尤物18| 欧美国产乱视频| 久久久久一区二区三区| 亚洲欧美精品伊人久久| 一本久道综合久久精品| 亚洲高清在线观看一区| 老司机成人网| 久久久999精品免费| 午夜精品久久久久久久久久久久久| 亚洲高清不卡一区| 精品9999| 在线日韩成人| 国语自产精品视频在线看8查询8| 国产精品劲爆视频| 国产精品magnet| 欧美四级在线| 国产精品a久久久久| 欧美久久精品午夜青青大伊人| 免费视频亚洲| 欧美大成色www永久网站婷| 久久亚洲春色中文字幕| 久久精品国产亚洲a| 欧美在线视频在线播放完整版免费观看| 日韩午夜中文字幕| 一区二区精品| 一区二区欧美国产| 亚洲欧美国产高清va在线播| 亚洲免费影视| 小处雏高清一区二区三区| 午夜精品一区二区三区在线| 亚洲欧美中文日韩在线| 欧美一区观看| 久久综合给合| 欧美激情一区二区三区不卡| 欧美久久婷婷综合色| 欧美三级电影大全| 国产精品一区二区欧美| 国产伦精品一区二区三区免费 | 亚洲精品乱码久久久久久黑人| 亚洲国产精品一区二区第一页| 亚洲福利在线观看| 日韩视频一区二区三区在线播放| 亚洲美女黄网| 午夜一级在线看亚洲| 欧美专区第一页| 欧美成人午夜影院| 日韩午夜三级在线| 先锋a资源在线看亚洲| 老牛国产精品一区的观看方式| 欧美激情综合亚洲一二区| 国产精品福利在线观看| 国内精品伊人久久久久av影院| 亚洲国产另类 国产精品国产免费| 亚洲黄色在线视频| 亚洲免费网址| 欧美成人69| 亚洲视频你懂的| 久久综合九色综合欧美狠狠| 欧美日韩和欧美的一区二区| 国产一区二区三区不卡在线观看| 亚洲激情黄色| 欧美自拍偷拍午夜视频| 欧美国产一区视频在线观看| 中文精品视频| 免费在线看成人av| 国产亚洲精品bv在线观看| 最新亚洲电影| 久久嫩草精品久久久久| 亚洲精品久久久久久久久久久| 亚洲欧美在线播放| 欧美日本精品一区二区三区| 国产亚洲精品bt天堂精选| 亚洲视频欧洲视频| 欧美二区乱c少妇| 欧美在线高清| 国产精品乱码人人做人人爱| 亚洲精品欧美极品| 久久在精品线影院精品国产| 亚洲午夜精品久久|