《操作系統課程設計》的實踐環境基于Windows和Linux操作系統。Windows操作系統已經很普及,但是對于Linux操作系統并不是每個用戶都有了解,本書對比介紹了Windows和Linux操作系統的異同,并對基本理論在兩種操作系統中的具體實現進行了剖析。此外,本書對與實踐內容相關的環境搭建、程序調試等基本技能也進行了介紹,以彌補讀者在程序設計學習初期對調試方法、文件及接口等內容的不足。
本書的實踐環境基于Windows和Linux操作系統。Windows操作系統已經很普及,但是對于Linux操作系統并不是每個用戶都有了解,本書對比介紹了Windows和Linux操作系統的異同,并對基本理論在兩種操作系統中的具體實現進行了剖析。此外,本書對與實踐內容相關的環境搭建、程序調試等基本技能也進行了介紹,以彌補讀者在程序設計學習初期對調試方法、文件及接口等內容的不足。
序
前言
教學建議
第一部分 基礎知識
第1章 虛擬機及其使用概述
1.1 虛擬機軟件vMware概述
1.2 搭建實踐環境
1.3 在Windows下安裝vMware
1.4 VMware下Ubuntu的安裝配置
1.5 虛擬機下的Linux與宿主機Windows的文件訪問
1.5.1 虛擬機下Ubuntu的網絡配置及FTP使用
1.5.2 Ubuntu虛擬機下開啟Telnet服務
1.5.3 Ubuntu虛擬機下開啟Samba服務
本章小結
第2章 Linux與wlmdows的分析與比較
2.1 Linux系統特性
2.1.1 Linux內核
2.1.2 Linux系統軟硬件資源的組織
2.1.3 I.inux文件系統
2.2 Windows下的cmd與Linux下的shell
2.2.1 終端和控制臺的概念
2.2.2 Windows下cmd與Linux下shell的比較
2.3 Linux和Windows基本命令與格式
2.3.1 Windows與Linux基本命令
2.3.2 命令格式介紹和幫助查詢
2.4 Linux和Windows下C語言編程環境及編譯器
本章小結
第3章 C語言知識
3.1 C語言基本語法回顧
3.1.1 分析一個簡單的C程序
3.1.2 數據類型
3.1.3 變量與常量
3.1.4 運算符
3.1.5 函數
3.2 指針
3.2.1 指針基礎
3.2.2 指針變量的操作
3.2.3 指針與函數
3.2.4 數組與指針
3.3 C標準庫
本章小結
第4章 文件I/O
4.1 系統調用與C語言標準庫
4.2 Linux文件系統調用函數
4.3 C語言標準庫中的文件I/O函數
本章小結
第5章 系統進程編程基礎
5.1 main函數與命令行參數
5.2 進程終止
5.3 Linux中的進程控制函數
5.3.1 fork函數
5.3.2 wait和waitpid函數
5.3.3 exec函數
5.4 進程創建及終止函數
5.4.1 CreateProcess函數
5.4.2 ExitProcess函數
本章小結
第6章 C程序調試技術
6.1 Windows下基于VC6.0和VS2005的調試
6.2 GDB簡介及Linux下的命令行調試
6.3 Linux下可視化界面調試范例
本章小結
第二部分 核心實驗
第7章 IAnux編程基礎實驗
7.1 實驗目的
7.2 實驗準備
7.3 實驗基本知識及原理
7.4 實驗說明
7.5 實驗內容
7.6 實驗總結
7.7 實驗報告及小組任務
7.8 參考代碼
第8章 作業調度實驗
8.1 實驗目的
8.2 實驗準備
8.3 實驗基本知識及原理
8.4 實驗說明
8.5 實驗內容
8.6 實驗總結
8.7 實驗報告及小組任務
8.8 參考代碼
第9章 系統調用及進程控制實驗
9.1 實驗目的
9.2 實驗準備
9.3 實驗基本知識及原理
9.4 實驗說明
9.5 實驗內容
9.6 實驗總結
9.7 實驗報告及小組任務
9.8 參考代碼
第10章 同步與互斥實驗
10.1 實驗目的
10.2 實驗準備
10.3 實驗基本知識及原理
10.4 實驗說明
10.5 實驗內容
10.6 實驗總結
10.7 實驗報告及小組任務
10.8 參考代碼
第11章 銀行家算法實驗
11.1 實驗目的
11.2 實驗準備
11.3 實驗基本知識及原理
11.4 實驗說明
11.5 實驗內容
11.6 實驗總結
11.7 實驗報告及小組任務
11.8 參考代碼
第12章 內存管理實驗
12.1 實驗目的
12.2 實驗準備
12.3 實驗知識及基本原理
12.4 實驗說明
12.5 實驗內容
12.6 實驗總結
12.7 實驗報告及小組任務
12.8 參考代碼
第13章 磁盤調度實驗
13.1 實驗目的
13.2 實驗準備
13.3 實驗知識及基本原理
13.4 實驗說明
13.5 實驗內容
13.6 實驗總結
13.7 實驗報告及小組任務
13.8 參考代碼
第14章 文件系統實驗
14.1 實驗目的
14.2 實驗準備
14.3 實驗原理
14.4 實驗說明
14.5 實驗內容
14.6 實驗總結
14.7 實驗報告及小組任務
14.8 參考代碼
第三部分 Nachos源碼分析
第15章 Nachos系統簡介
15.1 Nachos簡介
15.2 Nachos的運行原理
15.3 系統源碼
15.4 系統的編譯與測試
第16章 Nachos系統調用
16.1 以Add為例分析系統調用
16.2 系統調用流程及相關源文件分析
第17章 Nachos系統的同步與互斥
17.1 同步與互斥機制
17.2 信號量
17.3 鎖
17.4 條件變量
17.5 案例分析:同步磁盤的實現
第18章 Nachos線程調度
18.1 線程結構分析
18.2 線程調度類分析
18.3 線程調度作業
18.4 測試結果
第19章 Nachos文件系統
19.1 Nachos文件系統相關源碼說明
19.2 Nachos文件系統類分析
19.3 文件系統其他相關類
附錄A 實驗報告模板
參考文獻
序
前言
教學建議
第一部分 基 礎 知 識
第1章 虛擬機及其使用概述2
1.1 虛擬機軟件VMware概述2
1.2 搭建實踐環境2
1.3 在Windows下安裝VMware2
1.4 VMware下Ubuntu的安裝配置6
1.5 虛擬機下的Linux與宿主機Windows的文件訪問14
1.5.1 虛擬機下Ubuntu的網絡配置及FTP使用14
1.5.2 Ubuntu虛擬機下開啟Telnet服務15
1.5.3 Ubuntu虛擬機下開啟Samba服務16
本章小結17
第2章 Linux與Windows的分析與比較18
2.1 Linux系統特性18
2.1.1 Linux內核18
2.1.2 Linux系統軟硬件資源的組織19
2.1.3 Linux文件系統19
2.2 Windows下的cmd與Linux下的shell20
2.2.1 終端和控制臺的概念20
2.2.2 Windows下cmd與Linux下shell的比較20
2.3 Linux和Windows基本命令與格式20
2.3.1 Windows與Linux基本命令20
2.3.2 命令格式介紹和幫助查詢21
2.4 Linux和Windows 下C語言編程環境及編譯器22
本章小結22
第3章 C語言知識23
3.1 C語言基本語法回顧23
3.1.1 分析一個簡單的C程序23
3.1.2 數據類型23
3.1.3 變量與常量25
3.1.4 運算符 26
3.1.5 函數27
3.2 指針29
3.2.1 指針基礎29
3.2.2 指針變量的操作29
3.2.3 指針與函數30
3.2.4 數組與指針31
3.3 C標準庫31
本章小結32
第4章 文件I/O33
4.1 系統調用與C語言標準庫33
4.2 Linux文件系統調用函數34
4.3 C語言標準庫中的文件I/O函數37
本章小結40
第5章 系統進程編程基礎41
5.1 main函數與命令行參數41
5.2 進程終止41
5.3 Linux中的進程控制函數42
5.3.1 fork函數42
5.3.2 wait和waitpid函數42
5.3.3 exec函數43
5.4 進程創建及終止函數44
5.4.1 CreateProcess函數44
5.4.2 ExitProcess函數45
本章小結46
第6章 C程序調試技術47
6.1 Windows下基于VC 6.0和VS 2005的調試47
6.2 GDB簡介及Linux下的命令行調試53
6.3 Linux下可視化界面調試范例55
本章小結58
第二部分 核 心 實 驗
第7章 Linux編程基礎實驗60
7.1 實驗目的60
7.2 實驗準備60
7.3 實驗基本知識及原理60
7.4 實驗說明62
7.5 實驗內容62
7.6 實驗總結64
7.7 實驗報告及小組任務64
7.8 參考代碼65
第8章 作業調度實驗66
8.1 實驗目的66
8.2 實驗準備66
8.3 實驗基本知識及原理66
8.4 實驗說明67
8.5 實驗內容68
8.6 實驗總結69
8.7 實驗報告及小組任務69
8.8 參考代碼70
第9章 系統調用及進程控制實驗74
9.1 實驗目的74
9.2 實驗準備74
9.3 實驗基本知識及原理74
9.4 實驗說明77
9.5 實驗內容80
9.6 實驗總結80
9.7 實驗報告及小組任務80
9.8 參考代碼81
第10章 同步與互斥實驗85
10.1 實驗目的85
10.2 實驗準備85
10.3 實驗基本知識及原理85
10.4 實驗說明86
10.5 實驗內容88
10.6 實驗總結89
10.7 實驗報告及小組任務89
10.8 參考代碼89
第11章 銀行家算法實驗101
11.1 實驗目的101
11.2 實驗準備101
11.3 實驗基本知識及原理101
11.4 實驗說明102
11.5 實驗內容103
11.6 實驗總結104
11.7 實驗報告及小組任務104
11.8 參考代碼105
第12章 內存管理實驗111
12.1 實驗目的111
12.2 實驗準備111
12.3 實驗知識及基本原理111
12.4 實驗說明114
12.5 實驗內容117
12.6 實驗總結117
12.7 實驗報告及小組任務117
12.8 參考代碼117
第13章 磁盤調度實驗124
13.1 實驗目的124
13.2 實驗準備124
13.3 實驗知識及基本原理124
13.4 實驗說明126
13.5 實驗內容127
13.6 實驗總結128
13.7 實驗報告及小組任務128
13.8 參考代碼128
第14章 文件系統實驗132
14.1 實驗目的132
14.2 實驗準備132
14.3 實驗原理132
14.4 實驗說明135
14.5 實驗內容137
14.6 實驗總結137
14.7 實驗報告及小組任務137
14.8 參考代碼137
第三部分 Nachos源碼分析
第15章 Nachos系統簡介146
15.1 Nachos簡介146
15.2 Nachos的運行原理146
15.3 系統源碼146
15.4 系統的編譯與測試147
第16章 Nachos系統調用149
16.1 以Add為例分析系統調用149
16.2 系統調用流程及相關源文件分析153
第17章 Nachos系統的同步與互斥156
17.1 同步與互斥機制156
17.2 信號量156
17.3 鎖157
17.4 條件變量158
17.5 案例分析:同步磁盤的實現159
第18章 Nachos線程調度161
18.1 線程結構分析161
18.2 線程調度類分析164
18.3 線程調度作業166
18.4 測試結果167
第19章 Nachos文件系統168
19.1 Nachos文件系統相關源碼說明168
19.2 Nachos文件系統類分析168
19.3 文件系統其他相關類172
附錄A 實驗報告模板175
參考文獻193