本書結(jié)合操作系統(tǒng)原理,分析了一個面向教學的操作系統(tǒng)--EOS操作系統(tǒng)的源代碼。本書從EOS操作系統(tǒng)中引用了豐富的代碼實例,并配有大量的圖示和圖表,一步步的引導讀者分析EOS操作系統(tǒng)的源代碼。本書與其它操作系統(tǒng)理論書籍最明顯的不同是,配有若干個精心設(shè)計的實驗。讀者可以親自動手完成這些實驗,在實踐的過程中循序漸進的學習EOS操作系統(tǒng),進而加深對操作系統(tǒng)原理的理解。全書共8章,配有12個實驗。
更多科學出版社服務(wù),請掃碼獲取。
目錄
第1章 EOS概述 1
1.1 EOS操作系統(tǒng) 1
1.2 集成實驗環(huán)境 1
1.3 從源代碼到可運行的操作系統(tǒng) 3
第2章 EOS編程基礎(chǔ) 8
2.1 EOS內(nèi)核源代碼的結(jié)構(gòu) 8
2.2 預定義的C數(shù)據(jù)類型 9
2.3 鏈表的使用 10
2.4 NASM匯編 13
2.5 C和匯編的相互調(diào)用 15
2.6 原語操作 18
2.7 錯誤處理 19
2.8 條件編譯 22
2.9 C語言中變量的內(nèi)存布局 24
2.10 使用工具閱讀EOS源代碼 30
第3章 EOS的啟動過程 33
3.1 BIOS程序的執(zhí)行過程 33
3.2 Boot程序的執(zhí)行過程 35
3.3 Loader程序的執(zhí)行過程 35
3.4 內(nèi)核的初始化過程 35
第4章 對象管理 37
4.1 對象類型 37
4.2 對象 38
4.3 對象類型和對象組成的鏈表 39
4.4 對象的方法 40
4.5 對象的生命周期 41
4.6 對象的句柄 41
第5章 進程管理 43
5.1 進程的描述與控制 43
5.1.1 進程和程序 43
5.1.2 進程控制塊 44
5.1.3 進程的創(chuàng)建 45
5.1.4 進程的終止 48
5.2 線程的描述與控制 49
5.2.1 線程控制塊 49
5.2.2 線程的創(chuàng)建和終止 50
5.2.3 線程的狀態(tài)和轉(zhuǎn)換 51
5.2.4 線程的掛起狀態(tài) 52
5.3 進程的同步與通信 55
5.3.1 基本概念 55
5.3.2 EOS內(nèi)核提供的同步對象 55
5.4 線程調(diào)度 59
5.4.1 就緒隊列和就緒位圖 60
5.4.2 線程調(diào)度執(zhí)行的時機 61
5.4.3 調(diào)度程序 63
5.4.4 時間片輪轉(zhuǎn)調(diào)度 64
第6章 內(nèi)存管理 68
6.1 i386處理器的工作模式和
內(nèi)存管理方式 68
6.2 EOS內(nèi)存管理概述 70
6.3 物理存儲器的管理 71
6.4 進程地址空間 72
6.5 頁目錄和頁表的邏輯地址 73
6.6 虛擬地址描述符鏈表 74
6.7 系統(tǒng)內(nèi)存池 75
6.8 進程地址空間的內(nèi)存分布 76
第7章 I/O管理 78
7.1 驅(qū)動程序?qū)ο笈c設(shè)備對象 78
7.2 文件對象及其操作 79
7.3 設(shè)備驅(qū)動的安裝與工作原理 82
7.4 文件系統(tǒng)驅(qū)動 84
7.5 塊設(shè)備的讀寫 84
7.5.1 磁盤調(diào)度算法 87
7.5.2 讀寫緩沖區(qū) 90
第8章 FAT12文件系統(tǒng) 91
8.1 文件系統(tǒng)是一個邏輯層 91
8.2 系統(tǒng)區(qū) 92
8.2.1 根目錄 92
8.2.2 文件分配表 94
8.3 操作文件 98
8.3.1 打開文件與關(guān)閉文件 99
8.3.2 讀文件 102
8.3.3 寫文件 104
8.4 引導扇區(qū) 107
第9章 綜合實驗 110
實驗1 實驗環(huán)境的使用 110
實驗2 操作系統(tǒng)的啟動 122
實驗3 進程的創(chuàng)建 131
實驗4 線程的狀態(tài)和轉(zhuǎn)換 145
實驗5 進程的同步 153
實驗6 時間片輪轉(zhuǎn)調(diào)度 162
實驗7 物理存儲器與進程邏輯地址空間的管理 169
實驗8 分頁存儲器管理 181
實驗9 頁面置換算法與動態(tài)內(nèi)存分配 190
實驗10 串口設(shè)備驅(qū)動程序 199
實驗11 磁盤調(diào)度算法 207
實驗12 基本輸入輸出 218
實驗13 掃描FAT12文件系統(tǒng)管理的軟盤 225
實驗14 讀文件和寫文件 230
附錄 238
附錄A Bochs虛擬機 238
附錄B 字節(jié)順序Little-endian與Big-endian 239
附錄C EOS核心源代碼協(xié)議 240
附錄D 課程設(shè)計實驗題目 241
參考文獻 247