本書全面系統(tǒng)地介紹了現(xiàn)代操作系統(tǒng)的基本理論和新技術,并以Linux系統(tǒng)為實例介紹操作系統(tǒng)的設計與實現(xiàn)。全書共分7章:第1章是操作系統(tǒng)概述;第2章至第6章分別講述進程管理、處理機調(diào)度、存儲管理、文件系統(tǒng)和設備管理;第7章簡述現(xiàn)代操作系統(tǒng)的發(fā)展和安全保護機制。為強化操作系統(tǒng)課程的實踐環(huán)節(jié),附錄A給出了8個實驗指導,附錄B和C分別給出Linux常用系統(tǒng)調(diào)用和常用命令,供教師和學生參考。本書可作為大學本科及專科計算機相關專業(yè)教材或考研參考書,也可作為計算機工作者的自學用書。
本書在修改之前,課程組征詢和歸納了使用本教材的部分院校師生的反饋意見,參考碩士研究生入學考試大綱,并結合實際教學中的體會,研討了操作系統(tǒng)理論、技術和應用的最新發(fā)展。在本次修訂中,我們力求能夠突出理論基本點,講清技術發(fā)展脈絡,導人最新知識應用,并專門增加了有關Linux的設計實現(xiàn)技術的內(nèi)容。近來,“勒索”病毒在網(wǎng)上肆虐,運行Windows系統(tǒng)的機器紛紛中招,在全球造成了重大損失和嚴重恐慌,然而,在運行Linux系統(tǒng)的機器上并未出現(xiàn)這種災難。可見,推廣、使用和開發(fā)Linux系統(tǒng)是正確的選擇。
與第1版相比,本次修訂進行了一系列重要修改,主要包括以下幾個方面:
1)在第1章中,1.1.1節(jié)增加了“看待操作系統(tǒng)的進程管理觀點”的內(nèi)容,對操作系統(tǒng)的運行環(huán)境做了補充,詳細討論了系統(tǒng)程序和系統(tǒng)調(diào)用之間的關系,借助圖例進一步闡述了命令行接口和圖形用戶接口,詳細討論了微內(nèi)核結構。
2)在第2章中,采用了較規(guī)范化的進程定義,詳細討論了進程掛起狀態(tài),給出Linux中task_ struct結構的簡要定義;詳細討論了Linux有關進程操作的命令和系統(tǒng)調(diào)用使用示例;更嚴謹?shù)孛枋隽送胶突コ獾暮x,對信號量的類型做了界定,改寫了“哲學家進餐問題”的算法;增加了“使用信號量的幾點提示”內(nèi)容,以答復實際授課中學生對信號量和P、V操作解決進程同步等問題時的疑惑,這僅是粗淺體會,希望起到“拋磚引玉”的效果;增加了2.8節(jié);修訂了對活鎖概念的介紹。
3)在第3章中,增加了3.4節(jié),增加了關于“高響應比優(yōu)先法”的例題。
4)在第4章中,4.1節(jié)增加了“用戶程序的主要處理過程”方面的內(nèi)容,將動態(tài)重定位的實現(xiàn)過程并入“動態(tài)重定位”,補充了“覆蓋技術”的相關介紹,添加了空閑分區(qū)鏈的圖示;將原4.9節(jié)調(diào)整為4.5節(jié);增加了4個頁面置換算法,即“第二次機會置換法”“時鐘置換法”“最少使用置換法”和“頁面緩沖算法”;刪除了4.9節(jié)中有關“鏈接中斷處理”的內(nèi)容;增加了4.10.3節(jié)。
5)在第5章中,補充了關于“UNIX文件系統(tǒng)的i節(jié)點”的內(nèi)容,增加了5.7.3節(jié)。
6)在第6章中,增加了6.1.3節(jié)、6.5.2節(jié)、6.5.3節(jié),以及補充了6.5.4等的內(nèi)容。
7)在第7章中,擴充了“嵌入式系統(tǒng)”和“分布式系統(tǒng)”方面的內(nèi)容;增加了7.2.7節(jié),以適應當前信息技術最熱門應用的潮流。
8)各章后面增加了有代表性的習題,附錄A中增加了一個實驗指導。另外,對書后給出習題參考答案的做法一直存在爭議,褒貶不一。此次修訂時我們?nèi)∠嗽瓡戒浿械膮⒖即鸢福鈭D是提升學生自主思考、分析、解決問題的能力,培養(yǎng)勤信作風,幫助教師了解學生對相關知識的真實掌握情況。為輔助教師備課,我們將另外提供這部分資料。
9)最后,對原書中不妥、不確切、不明了的表述做了修訂。
全書共分7章:
第1章是操作系統(tǒng)概述,主要介紹操作系統(tǒng)的概念、基本功能、主要特征、在計算機系統(tǒng)中的地位,以及操作系統(tǒng)的基本類型及主要結構、UNIx和Linux系統(tǒng)的核心結構。
第2章是進程管理,主要介紹進程的概念、進程的狀態(tài)和組成、進程管理、進程同步與互斥、進程通信、線程和管程、死鎖的定義及各種對策。
第3章是處理機調(diào)度,主要介紹調(diào)度的級別、各級調(diào)度的功能和模型、調(diào)度性能評價標準及常用調(diào)度算法、中斷處理和系統(tǒng)調(diào)用、shell基本工作原理。
第4章是存儲管理,主要介紹與地址空間有關的基本概念、分區(qū)管理、基本的分頁技術和分段技術、虛擬存儲器、請求分頁和請求分段技術、Linux中的存儲管理技術。
第5章是文件系統(tǒng),主要介紹文件分類、文件系統(tǒng)的功能、文件的邏輯組織和物理組織、文件的目錄結構、文件的存儲空間管理、文件的可靠性、文件共享和保護、Linux文件系統(tǒng)。
第6章是設備管理,主要介紹設備管理的有關概念和功能、設備分配技術、I/O軟件構造原則、磁盤調(diào)度和管理、Linux系統(tǒng)設備管理。
第7章是操作系統(tǒng)的發(fā)展和安全性,主要介紹操作系統(tǒng)發(fā)展的動力、現(xiàn)代操作系統(tǒng)的發(fā)展、系統(tǒng)的安全性、系統(tǒng)性能評價。
書后三個附錄分別給出了實驗指導、Linux常用系統(tǒng)調(diào)用和庫函數(shù)、Linux常用命令。
由于各學校課程設置、學時安排及學生程度等方面存在差異,在應用本書授課時,可以對內(nèi)容進行適當取舍。下面列出的理論課學時安排建議是我們多年授課的體會,僅供參考。
本次修訂工作主要由孟慶昌、張志華完成,參與編寫、整理、錄人工作的還有劉振英、牛欣源、路旭強、孟欣、馬鳴遠等。
由于編者水平有限,時間倉促,對廣大讀者的需求尚缺乏廣泛深入的了解,書中難免存在不妥甚至錯誤之處,懇切期望廣大讀者給予批評指正,并及時反饋用書信息。
作者2017年7月于北京信息科技大學
前言
第1章操作系統(tǒng)概述
1.1操作系統(tǒng)概念
1.1.1什么是操作系統(tǒng)
1.1.2操作系統(tǒng)運行環(huán)境
1.1.3 系統(tǒng)初啟一般過程
1.1.4操作系統(tǒng)的構建目標和地位
1.1.5操作系統(tǒng)提供的服務及其方式
1.2操作系統(tǒng)的功能
1.3操作系統(tǒng)的特征
1.4操作系統(tǒng)的形成和基本類型
1.4.1操作系統(tǒng)的形成和發(fā)展
1.4.2操作系統(tǒng)的基本類型
1.5操作系統(tǒng)的主要結構
1.5.1單體結構
1.5.2層次結構
1.5.3虛擬機結構
1.5.4微內(nèi)核結構
1.5.5客戶一服務器結構
1.6 UNIX和Linux系統(tǒng)的核心結構
1.6.1 UNIX系統(tǒng)的核心結構
1.6.2 Linux系統(tǒng)的核心結構
小結
習題1
第2章進程管理
2.1進程概念
2.¨程序順序執(zhí)行及其特征
2.1.2程序并發(fā)執(zhí)行及其特征
2.1.3進程概念的引入和定義
2.2進程狀態(tài)描述及組織方式
2.2.1進程的狀態(tài)及其轉換
2.2.2進程的組成
2.2.3進程組織方式
2.3進程管理和有關命令
2.3.1進程圖和進程管理
2.3.2 Linux進程管理
2.3.3有關進程操作的命令
2.3.4有關進程管理的系統(tǒng)調(diào)用
2.4線程概念
2.4.1什么是線程
2.4.2線程的實現(xiàn)方式
2.5進程間的同步與互斥
2.5.1 進程間的關系
2.5.2競爭條件和臨界區(qū)
2.5.3進程同步機制
2.5.4信號量的一般應用
2.6經(jīng)典進程同步問題
2.7進程通信
2.7.1 高級進程通信方式
2.7.2消息緩沖通信
2.7.3信箱通信
2.8 Linux系統(tǒng)的進程通信
2.8.1信號機制
2.8.2管道文件
2.8.3 System V IPC機制
2.9管程
2.10死鎖
2.10.1死鎖概述
2.10.2死鎖的預防
2.10.3死鎖的避免
第3章處理機調(diào)度
第4章存儲管理
第5章文件系統(tǒng)
第6章設備管理
第7章操作系統(tǒng)的發(fā)展和安全性
附錄