本書在修改之前,課程組征詢和歸納了使用本教材的部分院校師生的反饋意見,參考碩士研究生入學考試大綱,并結合實際教學中的體會,研討了操作系統理論、技術和應用的最新發展。在本次修訂中,我們力求能夠突出理論基本點,講清技術發展脈絡,導人最新知識應用,并專門增加了有關Linux的設計實現技術的內容。近來,“勒索”病毒在網上肆虐,運行Windows系統的機器紛紛中招,在全球造成了重大損失和嚴重恐慌,然而,在運行Linux系統的機器上并未出現這種災難。可見,推廣、使用和開發Linux系統是正確的選擇。
與第1版相比,本次修訂進行了一系列重要修改,主要包括以下幾個方面:
1)在第1章中,1.1.1節增加了“看待操作系統的進程管理觀點”的內容,對操作系統的運行環境做了補充,詳細討論了系統程序和系統調用之間的關系,借助圖例進一步闡述了命令行接口和圖形用戶接口,詳細討論了微內核結構。
2)在第2章中,采用了較規范化的進程定義,詳細討論了進程掛起狀態,給出Linux中task_ struct結構的簡要定義;詳細討論了Linux有關進程操作的命令和系統調用使用示例;更嚴謹地描述了同步和互斥的含義,對信號量的類型做了界定,改寫了“哲學家進餐問題”的算法;增加了“使用信號量的幾點提示”內容,以答復實際授課中學生對信號量和P、V操作解決進程同步等問題時的疑惑,這僅是粗淺體會,希望起到“拋磚引玉”的效果;增加了2.8節;修訂了對活鎖概念的介紹。
3)在第3章中,增加了3.4節,增加了關于“高響應比優先法”的例題。
4)在第4章中,4.1節增加了“用戶程序的主要處理過程”方面的內容,將動態重定位的實現過程并入“動態重定位”,補充了“覆蓋技術”的相關介紹,添加了空閑分區鏈的圖示;將原4.9節調整為4.5節;增加了4個頁面置換算法,即“第二次機會置換法”“時鐘置換法”“最少使用置換法”和“頁面緩沖算法”;刪除了4.9節中有關“鏈接中斷處理”的內容;增加了4.10.3節。
5)在第5章中,補充了關于“UNIX文件系統的i節點”的內容,增加了5.7.3節。
6)在第6章中,增加了6.1.3節、6.5.2節、6.5.3節,以及補充了6.5.4等的內容。
7)在第7章中,擴充了“嵌入式系統”和“分布式系統”方面的內容;增加了7.2.7節,以適應當前信息技術最熱門應用的潮流。
8)各章后面增加了有代表性的習題,附錄A中增加了一個實驗指導。另外,對書后給出習題參考答案的做法一直存在爭議,褒貶不一。此次修訂時我們取消了原書附錄中的參考答案,意圖是提升學生自主思考、分析、解決問題的能力,培養勤信作風,幫助教師了解學生對相關知識的真實掌握情況。為輔助教師備課,我們將另外提供這部分資料。
9)最后,對原書中不妥、不確切、不明了的表述做了修訂。
全書共分7章:
第1章是操作系統概述,主要介紹操作系統的概念、基本功能、主要特征、在計算機系統中的地位,以及操作系統的基本類型及主要結構、UNIx和Linux系統的核心結構。
第2章是進程管理,主要介紹進程的概念、進程的狀態和組成、進程管理、進程同步與互斥、進程通信、線程和管程、死鎖的定義及各種對策。
第3章是處理機調度,主要介紹調度的級別、各級調度的功能和模型、調度性能評價標準及常用調度算法、中斷處理和系統調用、shell基本工作原理。
第4章是存儲管理,主要介紹與地址空間有關的基本概念、分區管理、基本的分頁技術和分段技術、虛擬存儲器、請求分頁和請求分段技術、Linux中的存儲管理技術。
第5章是文件系統,主要介紹文件分類、文件系統的功能、文件的邏輯組織和物理組織、文件的目錄結構、文件的存儲空間管理、文件的可靠性、文件共享和保護、Linux文件系統。
第6章是設備管理,主要介紹設備管理的有關概念和功能、設備分配技術、I/O軟件構造原則、磁盤調度和管理、Linux系統設備管理。
第7章是操作系統的發展和安全性,主要介紹操作系統發展的動力、現代操作系統的發展、系統的安全性、系統性能評價。
書后三個附錄分別給出了實驗指導、Linux常用系統調用和庫函數、Linux常用命令。
由于各學校課程設置、學時安排及學生程度等方面存在差異,在應用本書授課時,可以對內容進行適當取舍。下面列出的理論課學時安排建議是我們多年授課的體會,僅供參考。
本次修訂工作主要由孟慶昌、張志華完成,參與編寫、整理、錄人工作的還有劉振英、牛欣源、路旭強、孟欣、馬鳴遠等。
由于編者水平有限,時間倉促,對廣大讀者的需求尚缺乏廣泛深入的了解,書中難免存在不妥甚至錯誤之處,懇切期望廣大讀者給予批評指正,并及時反饋用書信息。
作者2017年7月于北京信息科技大學