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