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