本書是操作系統(tǒng)課程的實驗教材,旨在幫助讀者加強對操作系統(tǒng)原理與設計的理解,以分析、設計、改進和實現(xiàn)操作系統(tǒng)的運行機理和各種算法思想,尤其是操作系統(tǒng)的核心功能。全書共6章,內容包括概述、進程管理、內存管理、設備管理、文件管理與系統(tǒng)安全、拓展實驗等操作系統(tǒng)核心,在某些經典算法上提供了多種語言、不同平臺的實現(xiàn)代碼。附錄部分給出了Linux、vi和DOS命令,以便在實踐過程中作為工具速查。 本書可作為高等院校計算機專業(yè)操作系統(tǒng)課程的實驗教材,也可作為各類操作系統(tǒng)教學培訓教材和自學參考書。
本書強調對于操作系統(tǒng)的動手實踐能力,全文以實驗為主線,在實驗中驗證原理,加強對操作系統(tǒng)原理與設計實現(xiàn)的理解;本書精選操作系統(tǒng)經典核心算法,提供了JAVA和C++兩種語言在Linux和Windows平臺的實現(xiàn)的源代碼,通過一個原理,不同操作環(huán)境下實現(xiàn),驗證或解釋原理算法;本書的代碼通過嚴格的驗證實現(xiàn),先由選修操作系統(tǒng)課程的學生自主實現(xiàn),在統(tǒng)一在實驗平臺上優(yōu)化復現(xiàn),嚴格控制代碼的準確性。
劉宏哲,博士,副教授,北京聯(lián)合大學信息學院軟件工程系主任,北京市信息服務工程重點實驗室副主任兼辦公室主任,碩士研究生導師,軟件工程學位分委會副主任,中國計算機用戶學會網絡應用分會副秘書長。主要研究方向為圖像處理、社群媒體語義計算、數(shù)字博物館,具有較強的科研能力和較扎實的理論基礎,是北京聯(lián)合大學李德毅院士智能車團隊骨干成員。
目錄
第1章 概述 1
1.1 操作系統(tǒng)環(huán)境實驗 1
實驗一 Linux使用環(huán)境 2
實驗二 Linux下C編程環(huán)境 4
實驗三 Windows系統(tǒng)管理命令 7
實驗四 Windows文件操作命令 10
1.2 詳解系統(tǒng)調用實現(xiàn)機制 12
實驗一 詳解Linux系統(tǒng)添加系統(tǒng)調用方法 16
實驗二 向Linux內核增加一個系統(tǒng)調用 21
實驗三 Ubuntu 14.04 TLS內核升級和添加系統(tǒng)調用 24
第2章 進程管理 28
2.1 進程 28
2.1.1 進程創(chuàng)建與終止 29
實驗一 Linux下進程的控制 29
實驗二 Windows下進程的管理 33
2.1.2 進程調度 37
實驗一 設計PCB表結構 38
實驗二 進程調度算法 41
2.1.3 進程間通信 46
實驗一 消息傳遞 47
實驗二 共享內存(Windows程序) 49
實驗三 共享內存(Linux程序) 52
實驗四 管道 64
實驗五 Socket通信原理 71
2.2 線程 76
2.2.1 線程創(chuàng)建與終止 77
實驗一 Pthread API線程 77
實驗二 Win32線程 79
實驗三 Java線程 80
2.2.2 單線程與多線程比較 81
實驗一 “累加”計算效率 82
實驗二 檢驗素數(shù)效率 85
實驗三 文件復制 89
實驗四 矩陣乘法的實現(xiàn) 91
實驗五 控制臺繪畫 95
2.2.3 線程池 101
實驗一 Java線程池使用 101
實驗二 多線程模擬購票系統(tǒng) 105
2.3 線程同步 108
2.3.1 信號量 109
實驗一 PV實現(xiàn)信號量機制 109
實驗二 兔子吃草問題 111
2.3.2 互斥量 115
實驗一 雙線程打印 115
實驗二 銀行取款 117
2.3.3 生產者―消費者問題 118
實驗一 生產者―消費者(C++實現(xiàn)) 121
實驗二 生產者―消費者(Java實現(xiàn)) 124
實驗三 應用管程思想解決生產者和消費者問題 126
2.3.4 讀者-寫者問題 131
實驗一 讀者-寫者(C++實現(xiàn)) 132
實驗二 讀者-寫者(Java實現(xiàn)) 139
2.3.5 哲學家就餐問題 151
實驗一 哲學家就餐(C++實現(xiàn)) 151
實驗二 哲學家就餐(Java實現(xiàn)) 155
2.3.6 理發(fā)師問題 158
實驗一 理發(fā)師問題(C++實現(xiàn)) 159
實驗二 理發(fā)師問題(Java實現(xiàn)) 163
2.4 死鎖 169
實驗一 A-B競爭資源 170
實驗二 銀行家算法程序 172
實驗三 人臉識別中的死鎖問題 181
第3章 內存管理 190
3.1 內存分配 190
實驗― 內存分配與回收 190
3.2 頁面置換 197
實驗一 頁面置換算法模擬(C++實現(xiàn)) 198
實驗二 頁面置換算法模擬(Java實現(xiàn)) 202
實驗三 頁式地址重定位模擬 204
第4章 設備管理 210
實驗一 設備管理 210
實驗二 磁盤調度算法 214
實驗三 Spooling假脫機技術 223
第5章 文件管理與系統(tǒng)安全 232
實驗一 文件管理 232
第6章 拓展實驗 236
實驗一 GPU并行編程 236
實驗二 智能車虛擬交換模塊C++實現(xiàn)方案 244
附錄A Linux命令速查及疑難解答 251
附錄B 文件編輯器vi命令 260
附錄C Windows控制臺命令 263
參考文獻 264