1、緩衝區的大小對效能的影響
緩衝區的大小對效能有很大的影響,對檔案操作而言,來看乙個2500位元組的檔案的copy操作,如果緩衝區大小=100位元組,那麼需要25次read和25次write,如果緩衝區大小=1000位元組,那麼需要3次read和3次write,把緩衝區從100位元組增加到1000位元組會使系統呼叫次數從50次減少到6次。read和write這些系統呼叫是需要時間的,程式中頻繁的系統呼叫會降低程式的執行效率。
2、為什麼系統呼叫需要很多時間
使用者程序位於使用者空間,核心位於系統空間,磁碟只能被核心直接訪問。程式cp1要讀取磁碟上的資料只能通過系統呼叫read,而read的**在核心中,所以當read呼叫發生時,執行權會從使用者**轉移到核心**,執行核心**是需要時間的。
系統呼叫的開銷大不僅僅是因為要傳輸資料,當執行核心**時,cpu工作在管理員模式,這對應於一些特殊的堆疊和記憶體環境,必須在系統呼叫時建立好。系統呼叫結束後,cpu切換到使用者模式,必須把堆疊和記憶體環境恢復成使用者程式執行時的狀態,這種執行環境的切換要消耗很多時間。所以要盡可能地減少模式間的切換。對系統來說這種時間上的開銷是昂貴的。核心緩衝技術就可以減少模式間的切換。
3、核心緩衝技術
應用緩衝技術對提高系統的效率是很明顯的,它的主要思想是一次讀入大量的資料放入緩衝區,需要的時候從緩衝區取得資料。
管理員模式和使用者模式之間的切換需要消耗時間,相比之下,磁碟的io操作消耗的時間更多,為了提高效率,核心也使用緩衝技術來提高對磁碟的訪問速度。
正如utmp檔案是使用者登入記錄的集合,磁碟是資料塊的集合,核心會對磁碟上的資料塊做緩衝,就像who程式緩衝utmp記錄一樣,核心將磁碟上的資料塊複製到核心緩衝區中,當乙個使用者塊間中的程序要從磁碟讀資料時,核心一般不直接讀磁碟,而是將核心緩衝區中的資料複製到程序的緩衝區中。
當程序所要求的資料塊不在核心緩衝區時,核心會把相應的資料塊加入到請求資料列表中,然後把該程序掛起,接著為其他程序服務。一段時間之後(很短),核心把相應的資料塊從磁碟讀到核心緩衝區,然後再把資料複製到程序的緩衝區中,最後喚醒被掛起的程序。
理解核心緩衝技術的原理有助於更好地掌握系統呼叫read和write,read會把資料從核心緩衝區複製到程序緩衝區,write把資料從程序緩衝區複製到核心緩衝區,它們並不等價於資料在核心緩衝和磁碟之間的交換。
應用核心緩衝技術導致的結果:
雙緩衝技術
理解 通常我們進行繪圖時,都是直接使用cdc cpaintdc等 物件在螢幕上繪製圖形,如我們經常在onpaint函式中使用 cpaintdc dc this dc.rectangle 0,0,100,100 在螢幕上繪製矩形。但如果應用需要頻繁的繪製圖形,比如每秒要在螢幕上繪製1000個矩形。因此...
Z緩衝 模板緩衝 陰影技術
z緩衝 物體表面頂點都對應乙個z深度值,反映改動距離視點的遠近。螢幕畫素的的顏色值有對應頂點的顏色確定,而且最近點的顏色值將替代對應較遠處點的顏色值。z值大小比較過程是應用了z深度測試比較渲染狀態d2drs zfunc的預設值d3dcmp lessequal,當z值小於或等於當前畫素點對應的頂點z值...
2013 4 15 雙緩衝技術
主要原理 當乙個動畫爭先顯示時,程式有在改變他,前面還沒有顯示完,程式又請求重新繪製,這樣螢幕就會不停的閃爍。為了避免閃爍,可以用雙緩衝技術,將要哦處理的都在記憶體中處理好之後,再將其顯示到螢幕上。這樣顯示出來的總是完整的影象,不會出現閃爍的現象。核心技術 先通過setbitmap方法將要繪製哦所有...