日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Linux操作系統(tǒng)的內(nèi)存使用機(jī)制研究( 二 )


大多數(shù)操作系統(tǒng)都有高速緩沖(盡管可能稱呼不同),但是并不是都遵守上面的原理 。有些是直接寫(write-through):數(shù)據(jù)將被立刻寫入磁盤(當(dāng)然,數(shù)據(jù)也被放入緩存中) 。如果寫操作是在以后做的,那么該緩存被稱為后臺寫(write-back) 。后臺寫比直接寫更有效,但也容易出錯(cuò):如果機(jī)器崩潰,或者突然掉電,緩沖中改變過的數(shù)據(jù)就被丟失了 。如果仍未被寫入的數(shù)據(jù)含有重要的薄記信息,這甚至可能意味著文件系統(tǒng)(如果有的話)已不完整 。
針對以上的原因,出現(xiàn)了很多的日志文件系統(tǒng),數(shù)據(jù)在緩沖區(qū)修改后,同時(shí)會(huì)被文件系統(tǒng)記錄修改信息,這樣即使此時(shí)系統(tǒng)掉電,系統(tǒng)重啟后會(huì)首先從日志記錄中恢復(fù)數(shù)據(jù),保證數(shù)據(jù)不丟失 。當(dāng)然這些問題不再本文的敘述范圍 。
由于上述原因,在使用適當(dāng)?shù)年P(guān)閉過程之前,絕對不要關(guān)掉電源,sync命令傾空(flushes)緩沖,也即,強(qiáng)迫所有未被寫的數(shù)據(jù)寫入磁盤,可用以確定所有的寫操作都已完成 。在傳統(tǒng)的UNIX系統(tǒng)中,有一個(gè)叫做update的程序運(yùn)行于后臺,每隔30秒做一次sync操作,因此通常無需手工使用sync命令了 。Linux另外有一個(gè)后臺程序,bdflush,這個(gè)程序執(zhí)行更頻繁的但不是全面的同步操作,以避免有時(shí)sync的大量磁盤I/O操作所帶來的磁盤的突然凍結(jié) 。
在Linux中,bdflush是由update啟動(dòng)的 。通常沒有理由來擔(dān)心此事,但如果由于某些原因bdflush進(jìn)程死掉了,內(nèi)核會(huì)對此作出警告,此時(shí)你就要手工地啟動(dòng)它了(/sbin/update) 。
【Linux操作系統(tǒng)的內(nèi)存使用機(jī)制研究】緩存(cache)實(shí)際并不是緩沖文件的,而是緩沖塊的,塊是磁盤I/O操作的最小單元(在Linux中,它們通常是1KB) 。這樣,目錄、超級塊、其它文件系統(tǒng)的薄記數(shù)據(jù)以及非文件系統(tǒng)的磁盤數(shù)據(jù)都可以被緩沖了 。
緩沖的效力主要是由它的大小決定的 。緩沖太小的話等于沒用:
它只能容納一點(diǎn)數(shù)據(jù),因此在被重用時(shí),所有緩沖的數(shù)據(jù)都將被傾空 。實(shí)際的大小依賴于數(shù)據(jù)讀寫的頻次、相同數(shù)據(jù)被訪問的頻率 。只有用實(shí)驗(yàn)的方法才能知道 。
如果緩存有固定的大小,那么緩存太大了也不好,因?yàn)檫@會(huì)使得空閑的內(nèi)存太小而導(dǎo)致進(jìn)行交換操作(這同樣是慢的) 。為了最有效地使用實(shí)際內(nèi)存,Linux自動(dòng)地使用所有空閑的內(nèi)存作為高速緩沖,當(dāng)程序需要更多的內(nèi)存時(shí),它也會(huì)自動(dòng)地減小緩沖的大小 。
這就是一般情況下linux內(nèi)存的一般機(jī)制,當(dāng)然linux內(nèi)存的運(yùn)行機(jī)制遠(yuǎn)遠(yuǎn)比這個(gè)復(fù)雜,但是只有了解了這個(gè)機(jī)制,我們管理服務(wù)器才能得心應(yīng)手!

推薦閱讀