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

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

田宇 著
圖書標籤:
  • 操作係統
  • 自製操作係統
  • C語言
  • 64位操作係統
  • 內核開發
  • 係統編程
  • 嵌入式係統
  • 底層開發
  • 計算機原理
  • 教程
想要找書就要到 靜流書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
店鋪: 雲聚算圖書專營店
齣版社: 人民郵電齣版社
ISBN:9787115475251
商品編碼:28650480324
包裝:平裝
開本: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


跨越數字鴻溝:從底層原理到實踐應用——理解現代計算架構的基石 在這個信息爆炸的時代,我們每天都在與各種復雜的數字設備和軟件打交道。從智能手機上的應用程序,到支撐龐大互聯網的服務器,再到驅動我們日常工作生活的個人電腦,這一切的背後都離不開一個至關重要的核心——操作係統。然而,當我們習慣瞭使用各種應用時,是否曾好奇過,在這些應用之下,那個默默無聞、卻又無所不能的“大腦”是如何運作的?它又是如何管理著我們計算機裏的一切資源,並為我們提供如此流暢便捷的交互體驗的? 本書將帶你深入探索操作係統的核心奧秘,揭示現代計算架構最根本的原理。我們並非從零開始構建一個完整的操作係統,而是將注意力聚焦在理解那些構成操作係統基石的關鍵概念和技術,並通過精煉、易懂的案例,讓你能夠清晰地認識它們在整個體係中的作用和意義。我們將拋開繁瑣的實現細節,以概念的清晰闡述和邏輯的嚴謹推演為主要驅動力,幫助你構建起對操作係統工作機製的宏觀認知。 穿越時空,窺探計算機的“心跳” 想象一下,當你的手指在屏幕上輕輕一點,一個應用程序就此啓動,數據在瞬間被處理,結果呈現在你眼前。這個過程仿佛是魔法,但背後卻是操作係統精妙的調度和管理。本書將從最底層齣發,首先為你描繪齣計算機硬件的宏觀圖景。我們將理解中央處理器(CPU)是如何執行指令的,內存是如何存儲和訪問數據的,以及輸入輸齣設備是如何與係統進行交互的。這如同為理解生命體的運作,先要瞭解其骨骼、肌肉和神經係統一般。 接著,我們將逐步揭示操作係統如何在硬件的基礎上,建立起一套管理和協調的機製。這包括: 進程與綫程管理: 當我們同時打開多個應用程序時,操作係統是如何在有限的CPU資源下,讓它們井然有序地運行,互不乾擾的?我們將深入理解進程的概念,它是如何被創建、調度和終止的;而綫程,作為進程內部更輕量級的執行單元,又扮演著怎樣的角色?你將瞭解到各種調度算法的權衡與選擇,以及它們如何影響係統的響應速度和吞吐量。 內存管理: 計算機的內存是有限且寶貴的資源。操作係統是如何高效地分配和迴收內存,確保每個程序都能獲得所需的空間,同時避免衝突和浪費的?本書將闡釋虛擬內存的概念,它如何通過地址映射,為每個進程提供一個獨立的、連續的地址空間,從而極大地簡化瞭程序開發,並提高瞭內存的利用率。你將瞭解分頁、分段等經典的內存管理技術,以及它們在現代操作係統中的演進。 文件係統: 我們存儲在計算機上的文檔、圖片、視頻等,是如何被組織、管理和訪問的?文件係統扮演著至關重要的角色。我們將探索文件係統的基本結構,目錄是如何組織的,文件是如何被存儲在物理介質上的,以及如何實現高效的文件讀寫和查找。 輸入/輸齣(I/O)管理: 鍵盤、鼠標、顯示器、硬盤等設備,是如何與操作係統進行通信的?I/O管理是連接硬件與軟件的橋梁。本書將介紹I/O設備的特性,以及操作係統如何通過驅動程序、中斷等機製,實現對這些設備的統一管理和高效利用。 並發與同步: 在多任務環境下,多個進程或綫程可能需要訪問共享資源。如何確保這些訪問的正確性,避免數據不一緻的問題?我們將探討並發控製的挑戰,以及互斥鎖、信號量等同步機製的原理和應用,讓你深刻理解“競態條件”是如何被剋服的。 超越概念:理解設計的哲學與演進 除瞭深入剖析各個核心模塊的功能,本書還將引導你思考操作係統設計背後的哲學和演進。為何會有不同的操作係統,它們之間存在哪些根本性的差異?我們將探討一些經典的操作係統設計思想,例如微內核與宏內核的優劣,以及它們如何影響係統的穩定性、可擴展性和安全性。 同時,我們也會追溯操作係統的發展曆程,理解隨著硬件技術的進步和應用需求的演變,操作係統是如何不斷演化和創新的。從早期的批處理係統,到分時操作係統,再到現代的多處理器、分布式和實時操作係統,你將看到技術革新如何驅動著操作係統的發展,也體會到在不斷變化的計算環境中,操作係統所承擔的越來越重要的角色。 構建清晰的認知框架,賦能未來的學習 本書的編寫宗旨是幫助你構建起一個清晰、完整的操作係統認知框架。我們力求用最簡潔的語言,最直觀的比喻,將最復雜的技術概念進行剝離和闡釋。你不會在這裏找到冗長的代碼示例,也不會被大量的匯編指令所睏擾。相反,我們將專注於“為什麼”和“是什麼”,讓你理解每個設計決策背後的考量,以及每個模塊在整個係統中所扮演的不可或缺的角色。 通過本書的學習,你將能夠: 建立對計算機底層運作機製的深刻理解。 清晰地認識操作係統的核心組件及其功能。 掌握理解其他操作係統相關技術(如分布式係統、嵌入式係統)所需的基礎知識。 培養分析和解決復雜軟件係統問題的能力。 為進一步深入學習操作係統內核開發、係統優化等領域打下堅實基礎。 無論你是計算機科學的學生,對底層技術充滿好奇的技術愛好者,還是希望提升自身技術視野的軟件工程師,本書都將為你打開一扇通往操作係統世界的大門。我們將一起,穿越數字的迷霧,理解計算的本質,讓你在麵對紛繁復雜的軟件世界時,能夠洞悉其根基,把握其脈搏。讓我們一起,踏上這場探索之旅,理解那個連接硬件與軟件、驅動數字世界的強大引擎。

用戶評價

評分

作為一名有一定C語言基礎但對操作係統知之甚少的開發者,我一直渴望能找到一本能夠讓我“親手”構建操作係統的書籍。這本書無疑滿足瞭我的期待,甚至超齣瞭我的想象。作者巧妙地將理論知識與實踐操作相結閤,從零開始,一步步引導讀者構建一個功能性的64位操作係統。我尤其欣賞書中對每一個抽象概念的具象化描述,比如在講解內存管理時,書中詳細剖析瞭物理地址、虛擬地址、頁錶等概念,並提供瞭相應的C語言代碼實現,這讓我能夠直觀地理解這些概念是如何在代碼層麵運作的。更令人驚喜的是,本書涵蓋瞭現代操作係統中的許多核心模塊,例如進程間通信(IPC)、文件係統、以及簡單的用戶態應用程序的加載和運行。在實現這些模塊的過程中,作者並沒有迴避其中的復雜性,而是通過精心設計的代碼片段和翔實的解釋,幫助讀者剋服難關。每一次編譯成功、每一次程序如期運行,都給我帶來極大的滿足感。本書提供的代碼質量很高,清晰易懂,並且具有很強的可擴展性。我已經迫不及待地想在本書的基礎上,進一步探索更高級的操作係統特性,比如多處理器支持、設備驅動模型的深入研究等。這本書是開啓操作係統開發之旅的絕佳起點,它不僅教授瞭知識,更培養瞭解決問題的能力和對底層原理的敬畏之心。

評分

這本書簡直是打開瞭我對操作係統世界的大門!我之前一直覺得操作係統是個神秘而遙不可及的存在,但這本書用一種非常直觀、循序漸進的方式,把那些復雜的概念一一拆解。從最基礎的啓動過程,到內存管理、進程調度,再到中斷處理和設備驅動,作者都力求用最清晰的語言和代碼示例來解釋。讓我印象最深刻的是,書中並沒有僅僅停留在理論層麵,而是提供瞭大量的C語言代碼,讓我可以跟著一步一步地去構建自己的操作係統。這種“動手實踐”的學習方式,極大地增強瞭我的理解和信心。當我看到自己寫的代碼真的讓一個簡陋的操作係統跑起來的時候,那種成就感是難以言喻的。雖然過程中遇到不少睏難,調試瞭很久,但每一次解決問題,都感覺自己對操作係統的理解又進瞭一層。這本書的目錄設計也很有條理,每個章節都像一個小的裏程碑,讓我能夠清晰地看到自己的學習進度。我尤其喜歡書中對一些底層細節的深入探討,比如匯編語言在啓動階段的應用,以及如何與硬件進行交互。這些內容對於理解操作係統的本質至關重要。總的來說,這是一本非常紮實、有深度,同時又充滿實踐指導意義的書籍,強烈推薦給所有對操作係統感興趣的開發者!

評分

讀完這本書,我感覺自己仿佛經曆瞭一場“從無到有”的偉大創造。它不像其他很多理論性的操作係統教材那樣枯燥晦澀,而是以一種極其生動和實用的方式,帶領讀者深入操作係統的心髒地帶。作者的寫作風格非常獨特,他善於將復雜的硬件細節和軟件邏輯用非常通俗易懂的比喻和流程圖來解釋,讓我這個之前對底層開發一竅不通的人,也能逐漸掌握其中的奧秘。尤其是在講解中斷和異常處理部分,我之前一直認為這是非常高深的學問,但通過書中詳盡的圖示和代碼示例,我得以清晰地瞭解到CPU是如何響應中斷信號,以及操作係統又是如何進行處理的。這本書不僅提供瞭構建操作係統的基本框架,還提供瞭很多實現關鍵功能的指導,比如如何創建和管理進程,如何進行簡單的內存分配和迴收,甚至是如何編寫一個能夠運行在自己操作係統上的簡單小程序。每當我跟著書中的代碼敲打齣一個功能,並成功運行起來時,那種成就感簡直無法用言語形容。它讓我不再覺得操作係統隻是一個遙不可及的黑盒子,而是可以被理解、被掌控、甚至被創造的。這本書的價值在於它教會瞭我“如何去思考”操作係統的問題,而不是僅僅羅列一些概念。

評分

這本書絕對是我近年來閱讀過的最有價值的計算機技術書籍之一!我之前一直對操作係統的工作原理感到好奇,但市麵上很多書籍要麼過於理論化,要麼代碼晦澀難懂。這本書則完美地解決瞭這個問題。它以一種非常務實的方式,從零開始,指導讀者如何設計和實現一個64位的C語言操作係統。我最欣賞的是,書中不僅講解瞭理論知識,更提供瞭大量可運行的代碼示例。這些代碼質量很高,清晰易懂,並且能夠很好地運行。作者在講解內存管理、進程調度、中斷處理等核心概念時,都用非常生動的比喻和詳盡的圖示,讓我能夠輕鬆理解這些復雜的底層機製。尤其是在實現文件係統和設備驅動的部分,讓我對操作係統如何與外部硬件進行交互有瞭全新的認識。這本書讓我深刻體會到瞭“紙上得來終覺淺,絕知此事要躬行”的道理。每一次成功的編譯和運行,都給我帶來瞭巨大的滿足感和成就感。我強烈推薦這本書給所有對操作係統開發感興趣的初學者和有經驗的開發者,它絕對能幫助你打開一扇通往底層世界的大門!

評分

這本書給我最深刻的感受就是“顛覆”——它徹底顛覆瞭我對操作係統開發難度和學習方式的認知。我一直以為,寫一個操作係統需要多麼深厚的計算機體係結構和底層編程功底,但這本書卻打破瞭我的固有觀念。作者通過循序漸進的方式,將一個完整的操作係統設計和實現過程分解成一個個易於理解和操作的模塊。從最基礎的引導加載程序(bootloader)開始,到內核的初始化,再到基本的內存管理和進程調度,每一個環節都做瞭非常詳盡的闡述,並且配套瞭可以直接運行和調試的C語言代碼。我特彆喜歡書中對各種數據結構和算法在操作係統中的應用解釋,比如如何用鏈錶管理進程,如何用位圖來跟蹤空閑內存頁。這些具體的實現細節,讓我對操作係統的工作原理有瞭更深刻的認識。而且,書中還涉及瞭一些更高級的話題,比如如何實現簡單的係統調用接口,以及如何進行基本的設備驅動開發。這些內容極大地拓展瞭我的視野,讓我對操作係統的完整性有瞭更全麵的理解。這本書不僅僅是一本技術教程,更像是一位經驗豐富的導師,帶著你一步步走進操作係統的殿堂。

相關圖書

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

© 2025 book.coffeedeals.club All Rights Reserved. 靜流書站 版權所有