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