緩沖區(qū),作為現(xiàn)代操作系統(tǒng)中所有I/O設(shè)備與處理機(jī)交換數(shù)據(jù)時的設(shè)備,一般用于對速度要求非常高的場合。而大多數(shù)緩沖區(qū)是由內(nèi)存組成的,緩沖區(qū)管理的主要功能就是組織好這些緩沖區(qū)。
緩沖區(qū)的引入,主要原因有:緩和CPU和I/O設(shè)備間速度不匹配的矛盾,設(shè)置緩沖區(qū)可以讓輸出設(shè)備慢慢從中取出數(shù)據(jù),也不需要讓CPU進(jìn)行等待,提高了CPU的利用率。
減少CPU的中斷頻率,放寬了對CPU中斷響應(yīng)時間的限制,根本原因也是由于I/O設(shè)備的低速導(dǎo)致CPU經(jīng)常會等待I/O操作,產(chǎn)生多次中斷。
解決數(shù)據(jù)粒度不匹配的問題,生產(chǎn)者和消費(fèi)者彼此生產(chǎn)和消費(fèi)的數(shù)據(jù)粒度不一樣大,就可以使生產(chǎn)者多生產(chǎn)幾個單元的數(shù)據(jù)或?qū)⑸a(chǎn)的數(shù)據(jù)由消費(fèi)者分幾次取出,消費(fèi)者反之亦然。
提高了CPU和I/O設(shè)備之間的并行性,緩沖區(qū)的引入可顯著地提高CPU和I/O設(shè)備間的并行操作程度,提高系統(tǒng)的吞吐量和利用率。
操作系統(tǒng)中若只設(shè)置單緩沖區(qū),當(dāng)一組數(shù)據(jù)輸入到緩沖區(qū)后進(jìn)行處理尚未輸出,當(dāng)?shù)诙M數(shù)據(jù)輸出時,則用戶進(jìn)程就會陷入阻塞。而為了解決生產(chǎn)者和消費(fèi)者在使用緩沖區(qū)時互斥的問題,為生產(chǎn)者和消費(fèi)者設(shè)置兩個緩沖區(qū)。當(dāng)?shù)谝痪彌_區(qū)裝滿后,便轉(zhuǎn)向第二緩沖區(qū),此時便可將第一緩沖區(qū)的數(shù)據(jù)移出。
而現(xiàn)在廣泛流行的既可用于輸入又可用于輸出的公用緩沖池,與緩沖區(qū)最主要的區(qū)別在于,緩沖區(qū)僅僅是一組內(nèi)存塊的鏈表,緩沖池則包括了一個管理的數(shù)據(jù)結(jié)構(gòu)及一組操作函數(shù)的管理機(jī)制。
緩沖池中具有相同類型的緩沖區(qū)鏈接成一個隊列,可形成三個隊列:空白緩沖隊列、輸入隊列和輸出隊列,還具有四種工作緩沖區(qū):收容輸入數(shù)據(jù)的工作緩沖區(qū)、提取輸出數(shù)據(jù)的工作緩沖區(qū)、收容輸出數(shù)據(jù)的工作緩沖區(qū)和提取輸出數(shù)據(jù)的工作緩沖區(qū)。工作方式也是四種:收容輸入、提取輸入、收容輸出和提取輸出。