操作系統是計算機系統的基本組成部分,是整個計算機系統的基礎和核心。正是由于操作系統的重要地位,它已成為各大專院校計算機相關專業的一門必修課程。但是,操作系統課程本身的概念較多、內容抽象難懂,初學者要掌握它需要花費很大的心思。而作為教材,如何合理編排教學內容,將操作系統的原理和實踐應用結合起來,使學習者能夠融會貫通,從而在工作和生活中發揮操作系統的作用,并能夠真正解決問題,這是值得人們不斷努力去探討的一件事。
在很多院校中,尤其是獨立學院和高職高專院校,其操作系統的教學偏重于理論部分,而采用的大部分教材主要也是闡述操作系統的概念和原理。這些內容偏難、過于抽象,如進程管理、內存管理等,大多需要學生去想象,如果沒有一個良好的編程基礎,根本無從理解。與一些重點院校不同,這些院校的大部分同學對深入操作系統內部的需求不大,往往只是需要比較方便地理解操作系統的基本原理,然后能夠對Linux操作系統的應用有更多的要求。雖然現有的一些教材中加入了關于Linux、UNIX或Windows系統的介紹,但是它們大多還是其前面理論部分的重復和延伸,或者是加入實際操作系統的源碼理解,很難滿足這部分大專院校和很多操作系統初學者的需求。
本書內容本著重基礎、重能力、求創新、突出職業應用的總體思想,結合創新創業型高等院校的教學要求和IT職業的能力需求,并兼顧碩士研究生入學考試知識點,經專家組多次討論審訂修改確定。
本書主體內容基于浙江農林大學和浙江省紹興市的《操作系統》精品課程建設,通過十幾年來操作系統的教學和項目指導,在編者積累經驗和資料的基礎上最終整理而成。本書從實用的角度出發,充分考慮了學習者對于操作系統原理和實踐應用所需要掌握的知識,內容包括:第1章引言,包含計算機系統的主要組成部分和原理概述,以及操作系統的概念、發展及特征等內容;第2章進程管理,介紹了進程的概念、狀態、描述和控制、互斥和同步,以及處理器調度、線程和死鎖等知識;第3章內存管理,介紹了分區管理、頁式、段式和段頁式管理方式,并討論了虛擬存儲技術;第4章設備管理,介紹了I/O的組織、設計、緩沖,以及磁盤調度、RAID和磁盤高速緩存;第5章文件管理,介紹了文件的相關概念、組織結構與存取方式,文件目錄管理,存儲空間管理,以及文件的共享和保護問題;第6章Fedora操作系統,介紹了Fedora操作系統及其安裝;第7章Fedora桌面系統的使用,介紹了桌面系統的常規使用、網絡配置和常用命令行;第8章Linux應用程序的安裝和管理,介紹了安裝Linux系統的幾種方法,包括yum、RPM包和源代碼安裝應用的問題;第9章Linux服務器環境配置,介紹了Java、Tomcat、MySQL、Apache和PHP的環境安裝與配置;第10章Linux環境下C語言編程基礎,介紹了編程工具vi、gcc和gdb的使用,以及程序查錯和調試的方法;第11章構建Linux內核,介紹了如何從源代碼開始配置和編譯Linux內核,以及引導加載設置;第12章以桌面虛擬化管理為例,介紹了Linux虛擬化技術,以及通過oVirt虛擬化管理平臺的應用。全書深淺適度,安排系統、合理。
本書包括了操作系統的實踐應用的各個方面,實用性很強,可作為高等學校計算機相關專業本、專科教材,也可作為非計算機專業的人員深入學習操作系統理論和實踐知識的教材和輔導書,同時也適合廣大學生自學和考研復習使用,另外,對于Linux系統和網絡管理人員而言,本書也是一本很好的參考書。
本書計劃講課學時為72學時,不同的學校和專業可根據需要刪去或略講書中的某些章節。
本書第1、2、8、10章由汪杭軍編寫,第3、4、6、9章由樓吉林編寫,第5、7章由崔坤鵬編寫,第11、12章由張鎮潮和張八一編寫,全書由汪杭軍統稿。
由于時間倉促,加上作者水平有限,教學需要不斷更新完善,書中難免存在一些錯誤或不妥之處,懇請廣大讀者諒解。也歡迎對本書內容提出批評和修改建議,對此將不勝感激。如有需要請聯系編者。
編者
前言
第1章引言:計算機系統和操作系統
概述
1.1計算機系統概述
1.1.1計算機的基本組成
1.1.2處理器寄存器和指令執行
1.1.3中斷
1.1.4存儲器
1.1.5I/O訪問方式
1.2操作系統概述
1.2.1操作系統的概念及功能
1.2.2操作系統的發展
1.2.3操作系統的結構
1.2.4現代操作系統的基本特征
1.3思考與練習
第2章進程管理
2.1進程的概念及其特性
2.1.1進程的定義
2.1.2進程的特性
2.2進程狀態
2.2.1兩狀態進程模型
2.2.2五狀態進程模型
2.2.3掛起進程模型
2.3進程描述和控制
2.3.1進程描述內容
2.3.2執行模式
2.3.3進程控制操作
2.3.4進程切換
2.4進程互斥和同步
2.4.1進程交互方式
2.4.2進程互斥要求
2.4.3進程互斥的實現
2.4.4信號量實現進程的同步與互斥
2.4.5管程和消息傳遞
2.5處理器調度
2.5.1處理器調度的類型
2.5.2調度的衡量標準
2.5.3處理器調度算法
2.6線程
2.6.1線程的基本概念
2.6.2線程管理實現機制
2.6.3多線程的應用
2.7死鎖
2.7.1死鎖的原理
2.7.2死鎖預防
2.7.3死鎖避免
2.7.4死鎖檢測和恢復
2.8思考與練習
第3章內存管理
3.1計算機存儲結構
3.1.1存儲器配置方式
3.1.2常見PC存儲結構
3.2地址重定位及內存訪問保護
3.2.1地址空間
3.2.2地址重定位
3.2.3地址重定位及存儲信息保護
3.3分區存儲管理技術
3.3.1單一分區內存管理
3.3.2固定大小的多分區管理
3.3.3動態分區管理
3.4分區分配算法
3.4.1分區分配算法描述
3.4.2分配算法使用特性
3.5頁式管理
3.5.1分頁的基本思想
3.5.2靜態頁式管理
3.5.3動態頁式管理
3.6段式管理
3.6.1段式管理的基本原理
3.6.2地址變換機構
3.7段頁式管理
3.7.1分頁與分段管理的特點
3.7.2段頁式管理方式
3.8虛擬存儲技術
3.8.1局部性原理
3.8.2虛擬存儲的基礎
3.8.3用分頁管理實現虛擬存儲
3.8.4虛擬存儲頁面置換算法
3.9思考與練習
第4章設備管理
4.1I/O設備功能的組織
4.1.1I/O功能的發展
4.1.2直接存儲器訪問
4.2操作系統設計問題
4.2.1設計目標
4.2.2I/O功能的邏輯結構
4.3I/O緩沖
4.3.1單緩沖
4.3.2雙緩沖
4.3.3循環緩沖
4.3.4緩沖的作用
4.4磁盤調序
4.4.1磁盤性能參數
4.4.2磁盤調度策略
4.5RAID
4.5.1RAID 0
4.5.2RAID 1
4.5.3RAID 2
4.5.4RAID 3
4.5.5RAID 4
4.5.6RAID 5
4.5.7RAID 6
4.6磁盤高速緩存
4.6.1設計考慮
4.6.2性能考慮
4.7思考與練習
第5章文件管理
5.1文件管理概述
5.1.1文件和文件系統
5.1.2文件管理的功能
5.1.3文件管理系統的層次結構
5.2文件的組織結構與存取方式
5.2.1堆文件
5.2.2順序文件
5.2.3索引順序文件
5.2.4索引文件
5.2.5直接文件或散列文件
5.3文件目錄管理
5.3.1文件目錄
5.3.2文件目錄結構
5.3.3文件控制塊
5.3.4目錄與文件
5.4存儲空間管理
5.4.1空閑塊表法
5.4.2空閑塊鏈法
5.4.3位示圖法
5.4.4成組鏈接法
5.5文件共享與文件保護
5.5.1文件共享方法
5.5.2文件保護方式
5.6思考與練習
第6章Fedora操作系統
6.1Fedora操作系統簡介
6.2Fedora操作系統的安裝
6.2.1基本設置
6.2.2磁盤分區及軟件包選擇
6.2.3最終設置
6.3思考與練習
第7章Fedora桌面系統的使用
7.1登錄、注銷與關機
7.1.1開機與登錄
7.1.2鎖屏、注銷與關機
7.2使用 GNOME 桌面
7.2.1查看GNOME 桌面系統版本
7.2.2使用GNOME桌面工具管理Linux
7.3Fedora 網絡配置
7.4使用命令行
7.4.1認識命令行
7.4.2命令的語法
7.4.3常用命令
7.5思考與練習
第8章Linux應用程序的安裝和管理
8.1使用 yum 命令安裝和升級應用程序
8.1.1在線安裝
8.1.2本地安裝
8.1.3其他功能
8.2管理 RPM 軟件包
8.3從源代碼安裝應用程序
8.3.1準備工作
8.3.2使用源代碼進行安裝
8.4把應用程序的圖標添加到桌面上
8.5常用應用程序推薦列表
8.6思考與練習
第9章Linux服務器環境配置
9.1Java開發環境的安裝與配置
9.2Tomcat服務器的安裝與配置
9.3MySQL數據庫的安裝與配置
9.4Apache服務器的安裝與配置
9.5PHP環境的安裝與配置
9.6思考與練習
第10章Linux環境下C語言編程
基礎
10.1準備知識
10.1.1vi編輯器
10.1.2gcc編譯器和gdb調試器
10.2Linux簡單C程序實現
10.3程序查錯及調試
10.4思考與練習
第11章構建Linux內核
11.1下載、安裝和預備內核源代碼
11.1.1相關信息和先決條件
11.1.2下載和安裝源代碼
11.2配置和編譯Linux內核
11.2.1配置內核
11.2.2定制內核
11.2.3編譯
11.3安裝內核、模塊和相關文件
11.4GRUB:Linux引導加載程序
11.5思考與練習
第12章Linux應用案例(桌面云)
12.1云的概念和桌面虛擬化
12.2基于Linux的虛擬化技術
12.2.1Xen技術
12.2.2KVM技術
12.3oVirt虛擬化管理平臺
12.3.1oVirt架構和運行基礎
12.3.2基于CentOS 7的環境準備
12.3.3ovirt-engine安裝
12.3.4ovirt-note安裝
12.3.5操作系統設置
12.3.6oVirt配置
12.3.7虛擬機的創建和管理
12.3.8大規模部署虛擬機
參考文獻