圖靈教育 一個64位操作係統的設計與實現 C語言自製操作係統教程 引入諸多

圖靈教育 一個64位操作係統的設計與實現 C語言自製操作係統教程 引入諸多 下載 mobi epub pdf 電子書 2025

田宇 著
圖書標籤:
  • 操作係統
  • 自製操作係統
  • C語言
  • 圖靈教育
  • 64位操作係統
  • 內核開發
  • 匯編語言
  • 係統編程
  • 底層開發
  • 教學教程
想要找書就要到 圖書大百科
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
店鋪: 人民郵電齣版社官方旗艦店
齣版社: 人民郵電齣版社
ISBN:9787115475251
商品編碼:28650475070
包裝:平裝
開本:16
齣版時間:2018-05-01
字數:1022

具體描述


內容介紹
本書講述瞭一個64位多核操作係統的自製過程。此操作係統自製過程是先從虛擬平颱構築起一個基礎框架,隨後再將基礎框架移植到物理平颱中進行升級、完善與優化。為瞭凸顯64位多核操作係統的特點,物理平颱選用搭載著Intel Core-i7處理器的筆記本電腦。與此同時,本書還將Linux內核的源碼精髓、諸多官方白皮書以及多款常用協議濃縮於其中,可使讀者在讀完本書後能夠學以緻用,進而達到理論聯係實際的目的。 全書共分為16章。*1~2章講述瞭操作係統的基礎概念和開發操作係統需要掌握的知識;第3~5章在虛擬平颱下快速構建起一個操作係統模型;第6~16章將在物理平颱下對操作係統模型做進一步升級、優化和完善。 本書既適閤在校學習理論知識的初學者,又適閤在職工作的軟件工程師或有一定基礎的業餘愛好者。

作者介紹
田宇 Linux內核愛好者,曾在多傢大中型軟件公司從事軟件開發工作,參與過多款高端嵌入式産品的開發研製,主要負責Linux內核和驅動的研發,以及開源操作係統環境的深度定製。

關聯推薦
基於Intel I7處理器的64位多核操作係統,引入諸多Linux內核的設計精髓
目錄
*一部分 操作係統相關知識介紹及環境搭建
*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


《深入探索:現代操作係統內核原理與實踐》 在這信息爆炸的時代,理解我們賴以生存的數字世界的基石——操作係統——已不再是少數技術專傢的專利,而是每一位渴望深入理解計算機本質的開發者和技術愛好者必備的知識。然而,市麵上關於操作係統內核的書籍,往往要麼過於理論化,脫離實際;要麼過於淺顯,流於錶麵。我們渴望一本能夠真正帶領讀者深入內核,感受操作係統脈搏,並能將理論知識付諸實踐的書籍。 《深入探索:現代操作係統內核原理與實踐》正是這樣一本為滿足您的期待而生的著作。它旨在為您提供一個全麵、深入且富有實踐性的操作係統內核學習體驗。本書將從最基礎的概念齣發,逐步引導您理解現代操作係統的核心組件是如何協同工作的,以及它們在底層是如何實現的。我們不會迴避那些看似復雜的技術細節,而是緻力於用清晰、邏輯嚴謹的語言,結閤生動的比喻和詳實的示例,將它們一一剖析,讓您在理解理論的同時,也能建立起直觀的認識。 本書的獨特之處,在於其對“原理”與“實踐”的完美融閤。 第一部分:奠定堅實的基礎——操作係統的核心概念 在本書的開篇,我們將首先為您梳理操作係統最核心的概念,為後續深入的學習打下堅實的基礎。您將瞭解到: 操作係統的定義與演進: 從批處理係統到分時係統,再到現代的多任務、多用戶操作係統,我們將迴顧操作係統的發展曆程,理解不同時代背景下技術選擇的考量,以及這些演進如何塑造瞭我們今天所使用的操作係統。 進程與綫程: 這是操作係統並發處理的基本單元。我們將深入探討進程與綫程的區彆與聯係,理解它們的生命周期管理,以及綫程模型(用戶級綫程與內核級綫程)的優劣。您將瞭解到如何創建、終止進程,以及在進程間如何進行通信(IPC),例如管道、消息隊列、共享內存等。 內存管理: 內存是操作係統的生命綫。我們將詳細講解內存管理的不同策略,包括連續分配、分頁、分段以及它們的組閤。您將理解虛擬內存的概念,它如何通過頁錶、TLB等機製實現地址轉換,以及缺頁中斷的處理過程。我們還會探討頁麵置換算法(如LRU、FIFO)的原理與實現,以及內存泄漏的檢測與避免。 處理器調度: 如何在多個進程/綫程之間公平有效地分配 CPU 時間,是操作係統性能的關鍵。我們將深入分析各種調度算法,如先來先服務(FCFS)、最短作業優先(SJF)、優先級調度、時間片輪轉(Round Robin)等,並討論它們在不同場景下的適用性。您還將接觸到多級反饋隊列調度等更復雜的調度策略。 同步與互斥: 在多任務環境下,共享資源的訪問必須得到妥善管理,以避免競態條件。我們將詳細講解鎖(Locks)、信號量(Semaphores)、互斥量(Mutexes)等同步原語的工作原理,並探討死鎖的産生條件、檢測與避免方法。您將理解臨界區、原子操作等概念,並學習如何在並發環境中編寫安全可靠的代碼。 文件係統: 文件係統是用戶與存儲設備交互的接口。我們將深入剖析文件係統的基本概念,如文件、目錄、inode、超級塊等,並介紹不同類型的文件係統(如FAT、ext2/3/4、NTFS)的設計思想。您將理解文件操作(創建、刪除、讀寫)在底層是如何實現的,以及文件係統的日誌功能如何保證數據的一緻性。 I/O 係統: 輸入/輸齣設備是計算機與外界交互的橋梁。我們將講解I/O係統的基本結構,包括設備驅動程序、緩衝技術、中斷處理機製等。您將理解為何I/O操作通常比CPU計算慢,以及操作係統如何通過各種技術來提高I/O效率。 第二部分:動手實踐——構建屬於您的操作係統內核 理論的學習固然重要,但真正的理解往往來自於親手的實踐。《深入探索:現代操作係統內核原理與實踐》的另一大亮點,便是其係統性的實踐指導。本書將帶領您一步步地構建一個簡化的、但功能齊全的操作係統內核,讓您在實踐中鞏固所學理論,並獲得寶貴的開發經驗。 開發環境的搭建: 我們將詳細介紹如何搭建一套完整的交叉編譯環境,包括選擇閤適的工具鏈(如GCC、Binutils)、配置匯編器與鏈接器,以及使用QEMU等模擬器進行快速的測試與調試。 引導過程的探索: 您將親手編寫並理解 bootloader 的工作流程,它是操作係統啓動的第一道門。我們將從 x86 架構的 BIOS/UEFI 引導流程開始,理解如何加載您的內核到內存並跳轉執行。 內核的入口與初始化: 瞭解內核的入口點,以及CPU在啓動後需要完成的一係列初始化工作,包括設置中斷嚮量錶、初始化內存控製器、設置定時器等。 中斷處理機製的實現: 您將學習如何編寫中斷服務程序(ISR),理解中斷發生時的 CPU 狀態保存與恢復,以及如何處理硬件中斷和軟件中斷。 內存管理模塊的開發: 我們將指導您實現一個簡單的物理內存分配器,以及基於分頁的虛擬內存管理機製,包括頁錶的創建與更新。 進程與綫程調度器的實現: 您將親手編寫一個基於優先級的或時間片的進程調度器,並實現進程/綫程的創建、切換與終止。 簡單的係統調用接口: 學習如何定義和實現係統調用,為用戶程序提供訪問內核服務的接口,例如簡單的打印輸齣、文件讀寫等。 文件係統的初步構建: 您將嘗試實現一個簡單的內存文件係統,理解文件和目錄的結構,以及實現基本的創建、刪除、讀寫操作。 驅動程序的編寫入門: 介紹設備驅動程序的基本概念,並嘗試編寫一個簡單的字符設備驅動程序,例如一個虛擬串口。 本書的特色: 循序漸進,由淺入深: 無論是理論講解還是實踐步驟,都力求清晰易懂,避免一開始就陷入晦澀難懂的概念。 理論聯係實際: 每一項理論知識的介紹,都會緊密結閤其在操作係統內核中的實際應用,並通過代碼示例加以說明。 豐富的代碼示例: 本書提供瞭大量精煉、可運行的代碼示例,幫助您理解抽象的理論概念,並作為您自行開發的基礎。 關注現代操作係統設計: 雖然以實現為導嚮,但我們也會融入現代操作係統的設計理念,例如微內核與宏內核的對比,以及高性能I/O技術的一些探討。 強調調試與排錯技巧: 在實踐過程中,調試是不可避免的環節。我們將分享一些實用的調試技巧和排錯思路,幫助您高效地解決問題。 適閤讀者: 對操作係統原理有濃厚興趣,希望深入理解其內部工作機製的計算機科學專業學生。 希望突破“黑盒”限製,從底層理解計算機運作的軟件工程師。 對底層開發、嵌入式係統、係統編程有誌於深入研究的技術愛好者。 期望將理論知識轉化為實際動手能力的開發者。 《深入探索:現代操作係統內核原理與實踐》不僅是一本技術書籍,更是一次引導您深入計算機世界心髒的探險旅程。通過本書的學習,您將不再滿足於僅僅成為一個應用程序的編寫者,而是能夠理解操作係統如何賦予您的程序生命,並最終能夠構建齣屬於您自己的、具有獨特功能的操作係統內核。 準備好踏上這段令人興奮的旅程瞭嗎?讓我們一起,深入探索,構建未來!

用戶評價

評分

這本書的封麵設計就透露著一種硬核的理工男氣息,那種純粹的、直擊本質的風格,讓我這個剛接觸操作係統不久的愛好者眼前一亮。從目錄看,它似乎並沒有過多地渲染宏大的敘事或者復雜的應用層技術,而是直接把人拉進瞭底層構建的現場。我最欣賞它的一點是,它沒有迴避那些令人望而生畏的細節,比如內存管理、中斷處理這些被很多入門教程含糊帶過的地方。作者似乎堅信,隻有真正理解瞭這些“枯燥”的部分,纔能真正掌握操作係統的精髓。我尤其期待它在匯編語言與C語言的結閤點上能有獨到的見解,畢竟,一個真正的操作係統必然是這兩種語言緊密協作的産物。如果內容能像承諾的那樣,引導讀者親手搭建起一個最小係統框架,那這本書的價值就不僅僅是知識的傳授,更是一種實踐精神的培養。我希望它能成為我書架上那本可以隨時翻開,查找關鍵技術實現細節的“工具書”,而不是讀完一遍就束之高閣的“故事書”。這種對底層刨根問底的態度,是當前市麵上許多浮於錶麵的教程所缺乏的。

評分

這本書的敘事節奏把握得非常巧妙,讀起來不像是在啃一本教科書,更像是在跟隨一位經驗豐富的工程師進行項目實操。它沒有一開始就堆砌大量的理論公式,而是選擇瞭一條更具實踐性的路徑,通過逐步構建模塊來自然地引齣必要的理論知識。這種“先搭骨架,後填血肉”的教學方式,極大地降低瞭初學者的挫敗感。比如,在講解啓動流程時,它應該會細緻地分析BIOS/UEFI是如何將控製權移交給我們的代碼的,這部分內容往往是決定讀者能否成功“點亮”自己係統的關鍵。我特彆關注它對現代處理器特性(比如分頁機製、保護模式的切換)的處理深度。如果能用清晰易懂的圖錶來輔助解釋這些復雜的硬件交互,那麼這本書的閱讀體驗將得到質的飛躍。它所追求的,我認為不僅僅是讓讀者知道“是什麼”,更重要的是教會他們“為什麼是這樣設計”,以及“如果我要修改,應該從哪裏入手”。這種深入骨髓的洞察力,纔是區分一本優秀係統設計書和普通教材的試金石。

評分

閱讀這本書的過程,與其說是在學習一個既定的知識體係,不如說是在進行一次嚴肅的“逆嚮工程”實踐。它強迫你走齣舒適區,去直麵那些被高級語言層層封裝起來的底層魔術。我預感,這本書的價值會隨著讀者動手能力的增強而不斷增值。那些關於段頁式內存管理的圖解,如果能結閤實際的頁錶結構操作代碼來展示,那麼抽象的概念就會瞬間變得具象化。我特彆看重它在錯誤處理和異常捕獲方麵的講解。一個可靠的操作係統,其魯棒性往往體現在它如何優雅地處理那些意料之外的事件。如果書中能詳盡地展示如何設置中斷描述符錶(IDT)並編寫基本的異常處理程序,那麼讀者在後續的開發中,遇到藍屏(或者說內核崩潰)時,就能更有效地進行調試和定位問題。這本書顯然不是為瞭應付考試而編寫的,它承載的是一種將理論轉化為可運行、可調試的真實係統的工程信念。

評分

我發現這本書在章節劃分上體現瞭非常清晰的邏輯層次感,這對於理解一個復雜係統至關重要。它似乎是把整個操作係統切分成瞭若乾個可以獨立攻剋的堡壘。從最基礎的硬件初始化,到內核的調度算法,再到文件係統的初步設計,每一步都像是精心設計的關卡。我個人對它在並發與同步機製上的處理尤為好奇。在沒有成熟內核框架支持的情況下,如何用最基礎的指令去實現一個健壯的鎖機製或信號量,無疑是對作者功底的極大考驗。我期望看到它能提供詳細的上下文切換流程解析,因為這是理解多任務處理的“心髒”所在。此外,如果書中能穿插一些“踩坑指南”或者設計決策的權衡分析,那就更完美瞭。例如,為什麼選擇某種特定的內存分配策略,這種選擇帶來的性能收益和潛在風險是什麼?這種對設計取捨的坦誠交流,能讓讀者在構建自己係統時,具備更成熟的判斷力,而不是盲目地復製粘貼代碼。

評分

這本書最吸引我的地方在於它的“自製”精神,這暗示著它提供的是一套可被完全掌控的、無黑箱的實現方案。這意味著,讀者將麵對的不是某一個商業操作係統的碎片化描述,而是從零開始構建一個完整生態的藍圖。我期待看到它在I/O設備驅動編寫上的切入點。在沒有現成庫支持的情況下,如何通過端口I/O或內存映射I/O與簡單的硬件(比如串口或鍵盤)進行通信,是檢驗係統是否真正“活起來”的關鍵一步。這種親手點亮硬件的成就感,是任何仿真環境都無法替代的。此外,如果書中能對現代操作係統設計中的一些前沿趨勢進行簡要的展望或對比,哪怕隻是作為拓展閱讀,也會極大地提升這本書的廣度。總而言之,這本書似乎在告訴我們:理論是骨架,代碼是肌肉,而實踐纔是賦予這個“生命體”靈魂的催化劑,它提供的正是這樣一套完整的、高強度的“造物”流程指南。

相關圖書

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.teaonline.club All Rights Reserved. 圖書大百科 版權所有