• <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>
            隨筆-4  評論-40  文章-117  trackbacks-0
                                    

            第五章  設備管理

            第三節(jié)  緩沖管理

                現(xiàn)代OS中,幾乎所有的I/O設備在與處理機(內存)交換數(shù)據(jù)時,都使用了緩沖區(qū)。因
            為提高I/O速度和設備的利用率,在很大程度上都需要借助于緩沖技術來實現(xiàn)。緩沖管理主要
            功能是組織好這些緩沖區(qū),并提供獲得和釋放緩沖區(qū)的手段。
                OS提供以下幾種緩沖形式:

             的引入
                    操作系統(tǒng)中,引入緩沖的主要原因,可歸納為以下三點
                      緩和CPUI/O設備間速度不匹配的矛盾;
                      減少對CPU的中斷頻率,防寬對中斷響應時間的限制;
                      提高CPUI/O設備之間的并行性;
                        
             
            
                        

            利用緩沖寄存器實現(xiàn)緩沖
            
                        BACKHEAD.GIF (2984 bytes)
             緩沖
                    緩沖OS提供的最簡單的一種緩沖形式。每當一個用戶進程發(fā)出一I/O請求時,操
                作系統(tǒng)便在主存中為之分配一緩沖區(qū),如下圖(a)

            圖7-10.jpg (36936 bytes)

            塊設備輸入時,緩沖區(qū)用于暫存塊
                設備輸入的一塊數(shù)據(jù);
            字符設備輸入時,緩沖區(qū)用于暫存
                用戶輸入的一行數(shù)據(jù)。
            
                        
             緩沖
                    了加快輸入、輸出速度和提高設備利用率,又引入了雙緩沖工作方式,也稱為緩沖
                對換(Buffer Swapping)方式。如下圖(b)
                    在設備輸入時,先將數(shù)據(jù)輸入第一緩
                沖區(qū),裝滿后便轉向第二緩沖區(qū)
                    此時操作系統(tǒng)可從第一緩沖區(qū)中移出
                數(shù)據(jù)送用戶進程區(qū),接著由CPU對數(shù)據(jù)進
                行計算。
                    如果我們在實現(xiàn)兩臺機器之間的通信時,僅為它們配置了單緩沖,如下圖(a)
                    為了實現(xiàn)雙向數(shù)據(jù)傳輸,必須在兩臺機器中都設置兩個緩沖區(qū),分別用作發(fā)送和接收緩
                沖區(qū)。如上圖(b)
            
                        BACKHEAD.GIF (2984 bytes)
             循環(huán)緩沖
                    輸入、輸出或生產者--消費者的速度相差甚遠時,雙緩沖的效果則不夠理想,但可
                以增加緩沖區(qū)數(shù)量而使情況有所改善。因此,引入了多緩沖,并將多緩沖組織成循環(huán)緩沖
                式。如下圖(c)
            
                        BACKHEAD.GIF (2984 bytes)
                循環(huán)緩沖的組成
                   多個緩沖區(qū)
                         在循環(huán)緩沖中含有多個緩沖區(qū),每個緩沖區(qū)的大小相同。緩沖區(qū)可分成三種類型
                      空緩沖區(qū)R
                      L黃色P.GIF (158 bytes)已裝滿數(shù)據(jù)的緩沖區(qū)G
                      現(xiàn)行工作緩沖區(qū)C
                   多個指針
                      Nextg----指示計算進程下一個可用的緩沖區(qū)G
                      LBULEP.GIF (159 bytes)Nexti----指示輸入進程下次可用的空緩沖區(qū)R
                      Current----指示計算進程正在使用的緩沖區(qū)單元。
                   循環(huán)緩沖的組成如下圖:
            
                        
                緩沖區(qū)的使用
                      計算進程輸入進程可利用下述兩個過程來使用循環(huán)緩沖區(qū):
                      Getbuf過程
                      Releasebuf過程
                進程同步
                      使用輸入緩沖可使輸入進程和計算進程并行執(zhí)行。相應地,指針Nexti和Nexitg將不
                  斷地沿順時針方向移動,這樣就可能出現(xiàn)下述兩種情況:
                      LBLUEP2.GIF (906 bytes)Nexti 指針追趕上Nextg 指針
                      LREDP.GIF (158 bytes)Nextg 指針追趕上Nexti 指針
            
                        BACKHEAD.GIF (2984 bytes)
             
             沖池
                    述的循環(huán)緩沖屬專用緩沖。當系統(tǒng)較大時,為了提高緩沖區(qū)的利用率,目前廣泛流
            公用緩沖池,池中的緩沖區(qū)可供多個進程共享。
                緩沖池(Buffer Pool)的組成
                   對于既可用于輸入和輸出的公用緩沖區(qū),至少應含有以下三種類型的緩沖區(qū):
                      空(閑)緩沖區(qū);  裝滿輸入數(shù)據(jù)的緩沖區(qū);  LREDP.GIF (158 bytes)裝滿輸出數(shù)據(jù)的緩沖區(qū);
                   為了管理上的方便,可將相同類型的緩沖區(qū)鏈成一個隊列,形成以下三個隊列
                      空緩沖隊列emq
                      輸入隊列inq
                      LREDP.GIF (158 bytes)輸出隊列outq
                   除了上述三種(個)隊列外,還應具有四種工作緩沖區(qū):
                      用于收容數(shù)據(jù)的工作緩沖區(qū);
                      用于提取數(shù)據(jù)的工作緩沖區(qū);
                      用于收容數(shù)據(jù)的工作緩沖區(qū);
                      用于提取數(shù)據(jù)的工作緩沖區(qū);
            
                        BACKHEAD.GIF (2984 bytes)
                Getbuf過程和Putbuf過程
                      為使諸進程能互斥地和同步地訪問緩沖池隊列,可分別為每一隊列設置一個互斥信號
                  量MS(type)和資源信號量RS(type),過程描述如下:
            Procedure Getbuf(type)
                begin
                     Wait(RS(type));
                     Wait(MS(type));
                     B(number):=Takebuf(type);
                     Signal(MS(type));
                end
            Procedure Putbuf(type,number)
                begin
                     Wait(MS(type));
                     Addbuf(type,number);
                     Signal(MS(type));
                     Signal(RS(type));
                end
            
                        BACKHEAD.GIF (2984 bytes)
                緩沖區(qū)的工作方式
                      緩沖區(qū)可以工作在收容輸入提取輸入收容輸出提取輸出四種工作方式下,如下
                  圖:

             
                        
            
                        
                            
                        
                        
            posted on 2010-04-29 18:40 李陽 閱讀(466) 評論(0)  編輯 收藏 引用
            国产精品免费福利久久| 亚洲国产精品久久久久网站| 2020最新久久久视精品爱 | 久久涩综合| 日韩亚洲国产综合久久久| 日韩久久无码免费毛片软件| 久久精品国产精品亚洲人人| 亚洲国产天堂久久综合| 久久久久99精品成人片直播| 欧美久久综合性欧美| 日韩欧美亚洲综合久久影院Ds| 久久黄视频| 久久无码高潮喷水| 高清免费久久午夜精品| 日日狠狠久久偷偷色综合免费 | 久久毛片一区二区| 久久久久成人精品无码中文字幕| 亚洲国产精品无码久久久不卡| 精品久久久久久综合日本| 性做久久久久久免费观看| 欧美国产精品久久高清| 综合网日日天干夜夜久久| 99久久免费国产精品| 久久精品无码免费不卡| 四虎国产精品成人免费久久| 久久亚洲AV成人无码电影| 久久久久噜噜噜亚洲熟女综合| 伊人久久大香线蕉综合热线| 国产精品一区二区久久国产| 精品久久久久久无码人妻热| 国产精品久久波多野结衣| 久久成人18免费网站| 欧美丰满熟妇BBB久久久| 久久久精品久久久久久 | 久久精品18| 男女久久久国产一区二区三区| 精品国产一区二区三区久久蜜臀| 国内精品人妻无码久久久影院导航 | 国产精品免费久久| 韩国无遮挡三级久久| 一本一本久久A久久综合精品|