本書(shū)是操作系統(tǒng)課程的實(shí)驗(yàn)教材,旨在幫助讀者加強(qiáng)對(duì)操作系統(tǒng)原理與設(shè)計(jì)的理解,以分析、設(shè)計(jì)、改進(jìn)和實(shí)現(xiàn)操作系統(tǒng)的運(yùn)行機(jī)理和各種算法思想,尤其是操作系統(tǒng)的核心功能。全書(shū)共6章,內(nèi)容包括概述、進(jìn)程管理、內(nèi)存管理、設(shè)備管理、文件管理與系統(tǒng)安全、拓展實(shí)驗(yàn)等操作系統(tǒng)核心,在某些經(jīng)典算法上提供了多種語(yǔ)言、不同平臺(tái)的實(shí)現(xiàn)代碼。附錄部分給出了Linux、vi和DOS命令,以便在實(shí)踐過(guò)程中作為工具速查。 本書(shū)可作為高等院校計(jì)算機(jī)專業(yè)操作系統(tǒng)課程的實(shí)驗(yàn)教材,也可作為各類操作系統(tǒng)教學(xué)培訓(xùn)教材和自學(xué)參考書(shū)。
本書(shū)強(qiáng)調(diào)對(duì)于操作系統(tǒng)的動(dòng)手實(shí)踐能力,全文以實(shí)驗(yàn)為主線,在實(shí)驗(yàn)中驗(yàn)證原理,加強(qiáng)對(duì)操作系統(tǒng)原理與設(shè)計(jì)實(shí)現(xiàn)的理解;本書(shū)精選操作系統(tǒng)經(jīng)典核心算法,提供了JAVA和C++兩種語(yǔ)言在Linux和Windows平臺(tái)的實(shí)現(xiàn)的源代碼,通過(guò)一個(gè)原理,不同操作環(huán)境下實(shí)現(xiàn),驗(yàn)證或解釋原理算法;本書(shū)的代碼通過(guò)嚴(yán)格的驗(yàn)證實(shí)現(xiàn),先由選修操作系統(tǒng)課程的學(xué)生自主實(shí)現(xiàn),在統(tǒng)一在實(shí)驗(yàn)平臺(tái)上優(yōu)化復(fù)現(xiàn),嚴(yán)格控制代碼的準(zhǔn)確性。
劉宏哲,博士,副教授,北京聯(lián)合大學(xué)信息學(xué)院軟件工程系主任,北京市信息服務(wù)工程重點(diǎn)實(shí)驗(yàn)室副主任兼辦公室主任,碩士研究生導(dǎo)師,軟件工程學(xué)位分委會(huì)副主任,中國(guó)計(jì)算機(jī)用戶學(xué)會(huì)網(wǎng)絡(luò)應(yīng)用分會(huì)副秘書(shū)長(zhǎng)。主要研究方向?yàn)閳D像處理、社群媒體語(yǔ)義計(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)核升級(jí)和添加系統(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)五 控制臺(tái)繪畫(huà) 95
2.2.3 線程池 101
實(shí)驗(yàn)一 Java線程池使用 101
實(shí)驗(yàn)二 多線程模擬購(gòu)票系統(tǒng) 105
2.3 線程同步 108
2.3.1 信號(hào)量 109
實(shí)驗(yàn)一 PV實(shí)現(xiàn)信號(hào)量機(jī)制 109
實(shí)驗(yàn)二 兔子吃草問(wèn)題 111
2.3.2 互斥量 115
實(shí)驗(yàn)一 雙線程打印 115
實(shí)驗(yàn)二 銀行取款 117
2.3.3 生產(chǎn)者―消費(fèi)者問(wèn)題 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)者問(wèn)題 126
2.3.4 讀者-寫(xiě)者問(wèn)題 131
實(shí)驗(yàn)一 讀者-寫(xiě)者(C++實(shí)現(xiàn)) 132
實(shí)驗(yàn)二 讀者-寫(xiě)者(Java實(shí)現(xiàn)) 139
2.3.5 哲學(xué)家就餐問(wèn)題 151
實(shí)驗(yàn)一 哲學(xué)家就餐(C++實(shí)現(xiàn)) 151
實(shí)驗(yàn)二 哲學(xué)家就餐(Java實(shí)現(xiàn)) 155
2.3.6 理發(fā)師問(wèn)題 158
實(shí)驗(yàn)一 理發(fā)師問(wèn)題(C++實(shí)現(xiàn)) 159
實(shí)驗(yàn)二 理發(fā)師問(wèn)題(Java實(shí)現(xiàn)) 163
2.4 死鎖 169
實(shí)驗(yàn)一 A-B競(jìng)爭(zhēng)資源 170
實(shí)驗(yàn)二 銀行家算法程序 172
實(shí)驗(yàn)三 人臉識(shí)別中的死鎖問(wèn)題 181
第3章 內(nèi)存管理 190
3.1 內(nèi)存分配 190
實(shí)驗(yàn)― 內(nèi)存分配與回收 190
3.2 頁(yè)面置換 197
實(shí)驗(yàn)一 頁(yè)面置換算法模擬(C++實(shí)現(xiàn)) 198
實(shí)驗(yàn)二 頁(yè)面置換算法模擬(Java實(shí)現(xiàn)) 202
實(shí)驗(yàn)三 頁(yè)式地址重定位模擬 204
第4章 設(shè)備管理 210
實(shí)驗(yàn)一 設(shè)備管理 210
實(shí)驗(yàn)二 磁盤(pá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控制臺(tái)命令 263
參考文獻(xiàn) 264