Linux系統中的衝突問題及其應對策略(轉)

BSDLite發表於2007-08-15
Linux系統中的衝突問題及其應對策略(轉)[@more@]  Linux系統的穩定性記錄成為很多評論家們反對沖突不斷的Windows系統的一個很好的武器。然而,Linux系統的衝突問題雖然比較少,但是一旦在意想不到的情況下出現,也很容易使人們陷入困境。學習一些常用手段來預防這些這些衝突問題的發生是十分重要的,它可以幫助Linux的系統管理員們避免那些困境情況的出現。

  在本站的採訪中,Mark Wilding和Dan Behman對於Linux系統衝突問題的預防及修復提供了一種比較簡捷明瞭的方法。他們兩人共同出版了一本新書——《Self-Service Linux: Mastering the Art of Problem Determination》。

  一般認為,Linux伺服器系統是不存在衝突的,然而些許時候該系統的衝突、停滯問題的確存在。對於應用軟體層面的衝突或者停滯問題,與核心層面有何不同呢?

  Mark Wilding: 應用軟體層面的衝突或者停滯問題只是限制於一個特定的執行緒或者程式。這種衝突或者停滯問題不會導致在該相同系統上執行的其他執行緒或者程式的衝突或者停滯。然而,如果是在核心層面上發生,那麼它將影響到該系統中執行的所有程式。

  系統的衝突和停滯,這二者有什麼區別呢?

  Dan Behman: 在任何一個層面,衝突和停滯這二者的屬性基本上是相同的。停滯發生在程式或執行緒受阻的時候,此時是由於某種鎖定或者某些硬體資源的繁忙,從而該程式或執行緒不得不等待。等待某些鎖定或資源的情況是經常發生的,但是隻有當這種鎖定或者資源最終無法實現的時候,才會引起系統停滯。

  還有很重要的一點需要注意的是,停滯問題有時候可以提早的診斷出來。我的意思是,例如,某種資源的某個特定的時刻非常的繁忙,這是需要這種資源的程式或執行緒就需要等待非常長的一段時間,直至該資源空閒下來。使用者經常不瞭解資源的這種繁忙狀況,而只看到該程式在等待,所以他就認為系統發生了停滯,但實際上此時系統仍然在按照既定的工作流程進行,只是速度比較慢。

  而系統的衝突問題與上述的停滯是不同的,它主要是由於某種不可知的硬體或軟體錯誤而導致的。當這種錯誤發生時,特殊的錯誤處理程式將很可能會呼叫那些診斷資訊及報告,從而有希望能夠追蹤到這種錯誤的原因。

  衝突問題可以看作是某種致命的問題,它需要完結後才能夠進行分析。而停滯問題可以看作是實時的問題,它可以即時的進行分析、解決。

  我知道Linux有一個最大的優勢就是在於它的原始碼的開放性;除此之外,還有別的原因致使Linux比其他作業系統的衝突問題容易解決嗎?

  Behman: 伴隨著這種原始碼的開放性,在Linux系統的每一個層面都有著相當多的參閱檔案。同時,既然原始碼是開放的,那麼它的開發團隊也同樣是開放的。這樣以來,你就可以把所遇到的問題向Linux核心的開發者求助,當然包括最初的那些開發人員,甚至Linus Torvalds本人,而這所有的求助程式也僅僅是傳送一封電子郵件就可以了。而據我所知,Linux的這種能力是那些不開放原始碼的作業系統所缺少的。

  處理停滯問題有那些困難和挑戰呢?

  Wilding: 一個應用軟體的停滯問題是有著多種原因的,也包括那些可能由於核心空間的問題所引起的停滯。這意味著有時候這些問題不是開發者所能夠控制的。但是這正是Linux的優勢所在。所有的原始碼都是開放的,所以如果你遇到了某種程式的核心阻滯狀況,那麼就可以聯絡其原始碼,從而檢視該程式在核心中是如何作用的。然而,在大部分情況下,是沒有必要進行這麼深層次研究的。為了探究程式停滯的原因到底何在?應用軟體的開發者需要認真的研究這些軟體層面的狀況及證據(例如,堆疊的路徑等)。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-959903/,如需轉載,請註明出處,否則將追究法律責任。

相關文章