• <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
                                    

            第五章  設備管理

            第三節  緩沖管理

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

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

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

            圖7-10.jpg (36936 bytes)

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

             
                        
            
                        
                            
                        
                        
            posted on 2010-04-29 18:40 李陽 閱讀(466) 評論(0)  編輯 收藏 引用
            久久国产香蕉一区精品| 久久人妻无码中文字幕| 日韩精品久久无码人妻中文字幕 | 久久狠狠色狠狠色综合| 亚洲精品无码久久久久| 久久九九兔免费精品6| 亚洲乱码日产精品a级毛片久久| 国产农村妇女毛片精品久久| 亚洲综合精品香蕉久久网97 | 五月丁香综合激情六月久久| 97视频久久久| 亚洲精品美女久久久久99| 伊人久久大香线蕉综合Av| 日韩人妻无码精品久久久不卡| 久久综合综合久久综合| 国产午夜精品久久久久免费视 | 久久综合综合久久狠狠狠97色88| 国内精品久久久久伊人av| 久久国产精品久久国产精品| 久久久久久A亚洲欧洲AV冫| 人妻无码久久精品| 国产aⅴ激情无码久久| 久久精品人成免费| 亚洲一本综合久久| 日本精品久久久久久久久免费| 久久午夜福利无码1000合集| 久久www免费人成看片| 婷婷综合久久狠狠色99h| 久久久亚洲精品蜜桃臀| 综合久久国产九一剧情麻豆| 精品一区二区久久| 成人综合久久精品色婷婷| 91精品国产91久久综合| 老司机午夜网站国内精品久久久久久久久 | 囯产极品美女高潮无套久久久 | 精品国产乱码久久久久久1区2区| 嫩草影院久久99| 99久久夜色精品国产网站| 久久中文字幕一区二区| 久久久久亚洲AV成人网人人网站| 久久青草国产手机看片福利盒子|