预购商品
书目分类
特别推荐
本書講述了一個64位元多核作業系統的自製過程。此作業系統自製過程是先從虛擬平臺構築起一個基礎框架,隨後再將基礎框架移植到物理平臺中進行升級、完善與優化。為了凸顯64位元多核作業系統的特點,物理平臺選用搭載著Intel Core- i7處理器的筆記型電腦。與此同時,本書還將Linux內核的源碼精髓、諸多官方白皮書以及多款常用協議濃縮於其中,可使讀者在讀完本書後能夠學以致用,進而達到理論聯繫實際的目的。 全書共分為16章。第1~2章講述了作業系統的基礎概念和開發作業系統需要掌握的知識;第3~5章在虛擬平臺下快速構建起一個作業系統模型;第6~16章將在物理平臺下對作業系統模型做進一步升級、優化和完善。 本書既適合在校學習理論知識的初學者,又適合在職工作的軟體工程師或有一定基礎的業餘愛好者。
第一部分 作業系統相關知識介紹及環境搭建 第1章 作業系統概述 4 1.1 什麼是作業系統 4 1.2 作業系統的組成結構 4 1.3 編寫作業系統需要的知識 7 1.4 本書作業系統簡介 8 第2章 環境搭建及基礎知識 9 2.1 虛擬機器及開發系統平臺介紹 9 2.1.1 VMware的安裝 9 2.1.2 編譯環境CentOS 6 10 2.1.3 Bochs虛擬機器 11 2.2 組合語言 14 2.2.1 AT&T組合語言格式與Intel組合語言格式 14 2.2.2 NASM編譯器 16 2.2.3 使用組合語言調用C語言的函數 16 2.3 C語言 19 2.3.1 GNU C內嵌組合語言 20 2.3.2 GNU C語言對標準C語言的擴展 23 第二部分 初級篇 第3章 BootLoader引導啟動程式 30 3.1 Boot引導程式 30 3.1.1 BIOS引導原理 31 3.1.2 寫一個Boot引導程式 32 3.1.3 創建虛擬軟碟鏡像檔 36 3.1.4 在Bochs上運行我們的Boot程式 38 3.1.5 載入Loader到記憶體 40 3.1.6 從Boot跳轉到Loader程式 52 3.2 Loader引導載入程式 54 3.2.1 Loader原理 54 3.2.2 寫一個Loader程式 55 3.2.3 從真實模式進入保護模式再到IA-32e模式 65 3.2.4 從Loader跳轉到內核程式 75 第4章 內核層 78 4.1 內核執行頭程式 78 4.1.1 什麼是內核執行頭程式 78 4.1.2 寫一個內核執行頭程式 79 4.2 內核主程序 83 4.3 螢幕顯示 85 4.3.1 在螢幕上顯示色彩 86 4.3.2 在螢幕上顯示log 88 4.4 系統異常 100 4.4.1 異常的分類 101 4.4.2 系統異常處理(一) 102 4.4.3 系統異常處理(二) 109 4.5 初級記憶體管理單元 121 4.5.1 獲得實體記憶體資訊 121 4.5.2 計算可用實體記憶體頁數 123 4.5.3 分配可用實體記憶體頁 126 4.6 中斷處理 142 4.6.1 8259A PIC 142 4.6.2 觸發中斷 148 4.7 鍵盤驅動 152 4.7.1 簡述鍵盤功能 152 4.7.2 實現鍵盤中斷捕獲函數 154 4.8 進程管理 155 4.8.1 簡述進程管理模組 155 4.8.2 PCB 156 4.8.3 init進程 163 第5章 應用層 171 5.1 跳轉到應用層 171 5.2 實現系統調用API 180 5.3 實現一個系統調用處理函數 185 第三部分 高級篇 第6章 處理器體系結構 190 6.1 基礎功能與新特性 190 6.1.1 運行模式 190 6.1.2 通用寄存器 191 6.1.3 CPUID指令 192 6.1.4 標誌寄存器EFLAGS 193 6.1.5 控制寄存器 195 6.1.6 MSR寄存器組 199 6.2 位址空間 199 6.2.1 虛擬位址 200 6.2.2 物理位址 200 6.3 真實模式 200 6.3.1 真實模式概述 201 6.3.2 真實模式的段定址方式 201 6.3.3 真實模式的中斷向量表 201 6.4 保護模式 202 6.4.1 保護模式概述 202 6.4.2 保護模式的段管理機制 206 6.4.3 保護模式的中斷/異常處理機制 214 6.4.4 保護模式的頁管理機制 217 6.4.5 保護模式的位址轉換過程 224 6.5 IA-32e模式 226 6.5.1 IA-32e模式概述 226 6.5.2 IA-32e模式的段管理機制 228 6.5.3 IA-32e模式的中斷/異常處理機制 234 6.5.4 IA-32e模式的頁管理機制 234 6.5.5 IA-32e模式的位址轉換過程 237 第7章 完善BootLoader功能 238 7.1 真實模式的定址瓶頸 238 7.1.1 錯綜複雜的1 MB物理位址空間 238 7.1.2 突破1 MB實體記憶體瓶頸 239 7.1.3 真實模式下的4 GB線性位址定址 240 7.2 獲取物理位址空間資訊 240 7.3 作業系統引導載入階段的記憶體空間劃分 242 7.4 U盤啟動 244 7.4.1 USB-FDD、USB-ZIP和USB-HDD啟動模式的簡介 244 7.4.2 將Boot引導程式移植到U盤中啟動 251 7.5 在物理平臺上啟動作業系統 255 7.6 細說VBE功能的實現 261 7.6.1 VBE規範概述 261 7.6.2 獲取物理平臺的VBE相關資訊 272 7.6.3 設置顯示模式 279 第8章 內核主程序 282 8.1 內核主程序功能概述 282 8.2 作業系統的Makefile編譯腳本 282 8.3 作業系統的kernel.lds連結腳本 286 8.4 作業系統的線性位址空間劃分 289 8.5 獲得處理器的固件資訊 290 第9章 高級記憶體管理單元 297 9.1 SLAB記憶體池 297 9.1.1 SLAB記憶體池概述及相關結構體定義 298 9.1.2 SLAB記憶體池的創建與銷毀 299 9.1.3 SLAB記憶體池中物件的分配與回收 302 9.2 基於SLAB記憶體池技術的通用記憶體管理單元 308 9.2.1 通用記憶體管理單元的初始化函數slab_init 308 9.2.2 通用記憶體的分配函數kmalloc 312 9.2.3 通用記憶體的回收函數kfree 317 9.3 調整物理頁管理功能 321 9.3.1 記憶體管理單元結構及相關函數調整 321 9.3.2 調整alloc_pages函數 323 9.3.3 創建free_pages函數 327 9.4 頁表初始化 330 9.4.1 頁表重新初始化 331 9.4.2 VBE幀緩存區位址重映射 334 第10章 高級中斷處理單元 337 10.1 APIC概述 337 10.2 Local APIC 338 10.2.1 Local APIC的基礎資訊 338 10.2.2 Local APIC整體結構及各功能描述 344 10.3 I/O APIC 352 10.3.1 I/O APIC控制器的基礎資訊 353 10.3.2 I/O APIC整體結構及各引腳功能 356 10.4 中斷控制器的模式選擇與初始化 358 10.4.1 中斷模式 359 10.4.2 Local APIC控制器的初始化 362 10.4.3 I/O APIC控制器的初始化 368 10.5 高級中斷處理功能 375 10.5.1 Linux的中斷處理機制概述 375 10.5.2 實現中斷上半部處理功能 377 第11章 設備驅動程式 382 11.1 鍵盤和滑鼠驅動程式 382 11.1.1 鍵盤和滑鼠控制器 382 11.1.2 完善鍵盤驅動 389 11.1.3 實現滑鼠驅動 398 11.2 硬碟驅動程式 403 11.2.1 硬碟設備初探 403 11.2.2 完善硬碟驅動程式 418 第12章 進程管理 428 12.1 進程管理單元功能概述 428 12.2 多核處理器 429 12.2.1 超執行緒技術與多核技術概述 429 12.2.2 多核處理器間的IPI通信機制介紹 434 12.2.3 讓我們的系統支援多核 437 12.3 進程調度器 464 12.3.1 Linux進程調度器簡介 465 12.3.2 牆上時鐘與計時器 468 12.3.3 內核計時器 479 12.3.4 實現進程調度功能 486 12.4 內核同步方法 498 12.4.1 原子變數 498 12.4.2 信號量 499 12.4.3 完善自旋鎖 501 12.5 完善進程管理單元 503 12.5.1 完善PCB與處理器運行環境 503 12.5.2 完善進程調度器和AP處理器引導程式 508 12.5.3 關於執行緒 514 第13章 檔案系統 516 13.1 檔案系統概述 516 13.2 解析FAT32檔案系統 517 13.2.1 FAT32檔案系統簡介 517 13.2.2 通過實例深入解析FAT32檔案系統 523 13.2.3 實現基於路徑名的檔案系統檢索功能 532 13.3 虛擬檔案系統 552 13.3.1 Linux VFS簡介 552 13.3.2 實現VFS 554 第14章 系統調用API庫 566 14.1 系統調用API結構 566 14.2 基於POSIX規範實現系統調用API庫 567 14.2.1 POSIX規範下的系統調用API簡介 567 14.2.2 升級系統調用模組 568 14.2.3 基礎檔操作的系統調用API實現 574 14.2.4 進程創建的系統調用API實現 599 14.2.5 記憶體管理的基礎系統調用API實現 618 第15章 Shell命令解析器及命令 626 15.1 Shell命令解析器 626 15.1.1 Shell命令解析器概述 626 15.1.2 實現Shell命令解析器 627 15.2 基礎命令 641 15.2.1 重啟命令reboot 641 15.2.2 工作目錄切換命令cd 642 15.2.3 目錄內容顯示命令ls 645 15.2.4 文件查看命令cat 654 15.2.5 程式執行命令exec 655 第16章 一個彩蛋 665 附錄 術語表 676 參考資料 679
田宇,Linux內核愛好者,曾在多家大中型軟體公司從事軟體開發工作,參與過多款高端嵌入式產品的開發研製,主要負責Linux內核和驅動的研發,以及開源操作系統環境的深度定製。
最近浏览商品
客服公告
热门活动
订阅电子报