• <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 李陽 閱讀(470) 評論(0)  編輯 收藏 引用
            久久久久久久97| 精品久久久久久久久久久久久久久| 伊色综合久久之综合久久| 久久精品无码专区免费| 人妻丰满?V无码久久不卡| 思思久久99热只有频精品66| 亚洲va中文字幕无码久久| 三级三级久久三级久久| 99久久er这里只有精品18| 久久精品18| 久久精品a亚洲国产v高清不卡| 精品国产乱码久久久久久郑州公司| 免费精品久久天干天干| 久久婷婷五月综合色奶水99啪| 狠狠色丁香久久综合五月| 久久男人AV资源网站| 久久影院综合精品| 久久精品无码专区免费| 国产精品久久久久天天影视| 少妇人妻综合久久中文字幕| 久久综合欧美成人| 久久午夜福利无码1000合集| 国产综合成人久久大片91| 久久99久久99精品免视看动漫| 伊人久久一区二区三区无码| 四虎国产精品免费久久5151| 久久亚洲日韩看片无码| Xx性欧美肥妇精品久久久久久| 久久婷婷五月综合97色一本一本| 国产精品99久久不卡| 久久久精品国产sm调教网站 | 久久久久久毛片免费看| 欧美伊人久久大香线蕉综合| 99久久精品免费看国产一区二区三区 | 久久久久婷婷| 久久av无码专区亚洲av桃花岛| 久久性精品| 精品无码久久久久久久久久| 亚洲国产成人久久综合一| 国产精品99久久久久久人| 久久99精品久久久久久久不卡|