從零自制操作系統

馬起園 等

  • 出版商: 電子工業
  • 出版日期: 2025-08-01
  • 售價: $1,128
  • 語言: 簡體中文
  • 頁數: 724
  • ISBN: 7121508753
  • ISBN-13: 9787121508752
  • 相關分類: 系統開發
  • 下單後立即進貨 (約4週~6週)

相關主題

商品描述

在本書中,你將嘗試從零自制操作系統。你會體驗到制作操作系統的整個過程,從打開計算機、調用操作系統本身到能夠運行各種應用。你會了解到計算機的內部結構,以及操作系統的工作原理 ;在此 之前,它們對於你來說可能一直都是黑箱。 本書內容包括 :個人可以制作操作系統嗎、計算機工作原理和 Hello World 、EDK II 和內存映射、 屏幕顯示實踐和引導加載器、像素繪圖和 make 入門、文本顯示和控制臺類、鼠標輸入和 PCI 、中斷和 FIFO、內存管理、疊加過程、窗口、定時器和 ACPI、鍵盤輸入、多任務處理、終端、命令、文件系 統、應用、分頁、系統調用、窗口應用、圖形和事件、多終端、使用應用加載文件、從應用寫入文件、 應用的內存管理、日文顯示和重定向、應用間通信、額外應用、前方的路,以及配置開發環境、獲取 MikanOS 、EDK II 文件說明、C++ 中的模板、iPXE 、ASCII 碼表。 本書的目標讀者是寫過簡單程序的人。如果你編寫過幾百行代碼,有相關編程經驗,那麼應該可以 毫無顧慮地通讀本書。但如果你從未編寫過程序,那麼閱讀本書將會很吃力。

目錄大綱

第 0章 個人可以制作操作系統嗎 1
0.1 如何制作操作系統 2
0.2 到底什麼是操作系統 3
0.3 自制操作系統的步驟 6
0.4 享受自制操作系統的樂趣 7
0.5 自制操作系統的全貌 8
第1章 計算機工作原理和HelloWorld 15
1.1 Hello World 16
1.2 如何查找U盤的設備名稱 20
1.3 如何使用WSL 20
1.4 使用模擬器 22
1.5 最終做了些什麼 23
1.6 還是讓我們動手吧 27
1.7 使用UEFI BIOS啟動 28
1.8 制作操作系統的工具 29
1.9 C語言版的Hello World程序 30
第 2章 EDK II和內存映射 33
2.1 EDK II簡介 34
2.2 EDK II的Hello World程序(osbook_day02a) 35
2.3 主存儲器 38
2.4 內存映射 39
2.5 獲取內存映射(osbook_day02b) 41
2.6 將內存映射保存到文件中 43
2.7 檢查內存映射 46
2.8 指針簡介(1):地址和指針 47
2.9 指針和箭頭運算符 48
第 3章 屏幕顯示實踐和引導加載器 53
3.1 QEMU監視器 54
3.2 寄存器 56
3.3 第一個內核(osbook_day03a) 58
3.4 從引導加載器繪制像素(osbook_day03b) 66
3.5 從內核繪制像素(osbook_day03c) 68
3.6 錯誤處理(osbook_day03d) 70
3.7 指針簡介(2):指針與匯編語言 73
第 4章 像素繪圖和make入門 77
4.1 make簡介(osbook_day04a) 78
4.2 自由繪制像素(osbook_day04b) 81
4.3 利用C++語言特性重寫程序(osbook_day04c) 86
4.4 vtable 91
4.5 改進加載器(osbook_day04d) 93
第 5章 文本顯示和控制臺類 99
5.1 嘗試寫入字符(osbook_day05a) 100
5.2 拆分編譯(osbook_day05b) 103
5.3 增加字體(osbook_day05c) 106
5.4 字符串繪制和sprintf()(osbook_day05d) 108
5.5 控制臺類(osbook_day05e) 110
5.6 printk()(osbook_day05f) 114
第 6章 鼠標輸入和PCI 117
6.1 鼠標光標(osbook_day06a) 118
6.2 USB Host驅動程序 121
6.3 搜索PCI設備(osbook_day06b) 123
6.4 帶輪詢的鼠標輸入(osbook_day06c) 132
第 7章 中斷和FIFO 141
7.1 中斷(osbook_day07a) 142
7.2 中斷處理程序 143
7.3 中斷向量 144
7.4 設置中斷描述符 147
7.5 MSI機制 149
7.6 中斷總結 150
7.7 加速中斷處理程序(osbook_day07b) 151
7.8 FIFO和FILO 152
7.9 實現隊列 153
7.10 使用隊列加速中斷 157
第 8章 內存管理 161
8.1 內存管理概述 162
8.2 UEFI內存映射(osbook_day08a) 162
8.3 移動數據結構(osbook_day08b) 165
8.4 移動棧區域 166
8.5 設置分段 167
8.6 設置分頁 174
8.7 內存管理挑戰(osbook_day08c) 177
第 9章 疊加過程 185
9.1 疊加過程概述(osbook_day09a) 186
9.2 new運算符 186
9.3 疊加過程的原理 189
9.4 疊加過程的時間測量(osbook_day09b) 205
9.5 加速疊加過程(osbook_day09c) 209
9.6 測量滾動過程時間(osbook_day09d) 219
9.7 更快的滾動過程(osbook_day09e) 221
第 10 章 窗口 227
10.1 再論鼠標(osbook_day10a) 228
10.2 第一個窗口(osbook_day10b) 229
10.3 快速計數器(osbook_day10c) 232
10.4 消除閃爍(osbook_day10d) 234
10.5 後置緩沖區(osbook_day10e) 240
10.6 拖動窗口(osbook_day10f) 241
10.7 僅拖動窗口(osbook_day10g) 246
第 11 章 定時器和ACPI 249
11.1 整理源碼(osbook_day11a) 250
11.2 定時器中斷(osbook_day11b) 251
11.3 精確定時(osbook_day11c) 253
11.4 多個定時器和超時通知(osbook_day11d) 257
11.5 ACPI PM定時器和RSDP(osbook_day11e) 261
第 12 章 鍵盤輸入 269
12.1 查找FADT(osbook_day12a) 270
12.2 使用ACPI PM定時器(osbook_day12b) 273
12.3 USB鍵盤驅動程序(osbook_day12c) 275
12.4 修改鍵(osbook_day12d) 279
12.5 文本框(osbook_day12e) 283
12.6 光標(osbook_day12f) 286
第 13 章 多任務處理(1) 291
13.1 多任務和上下文 292
13.2 處理上下文切換(osbook_day13a) 293
13.3 自動上下文切換(osbook_day13b) 302
13.4 驗證多任務處理(osbook_day13c) 306
13.5 更多任務(osbook_day13d) 307
第 14 章 多任務處理(2) 313
14.1 休眠(osbook_day14a) 314
14.2 事件發生時喚醒(osbook_day14b) 319
14.3 性能測量 324
14.4 確定任務的優先級(osbook_day14c) 324
14.5 休眠任務(osbook_day14d) 332
第 15 章 終端 335
15.1 在主線程中繪制窗口(osbook_day15a) 336
15.2 活動窗口(osbook_day15b) 340
15.3 終端窗口(osbook_day15c) 348
15.4 加速繪圖(osbook_day15d) 353
第 16 章 命令 359
16.1 終端中的按鍵操作(osbook_day16a) 360
16.2 echo命令(osbook_day16b) 364
16.3 clear命令(osbook_day16c) 368
16.4 lspci命令(osbook_day16d) 369
16.5 命令歷史記錄(osbook_day16e) 370
16.6 省電(osbook_day16f) 373
第 17 章 文件系統 375
17.1 文件和文件系統 376
17.2 BIOS參數塊 380
17.3 目錄條目 381
17.4 讀出卷(osbook_day17a) 383
17.5 ls命令(osbook_day17b) 390
第 18 章 應用 395
18.1 文件分配表(osbook_day18a) 396
18.2 第一個應用(osbook_day18b) 402
18.3 C++中的計算器(osbook_day18c) 408
18.4 標準庫(osbook_day18d) 414
第 19 章 分頁 417
19.1 可執行文件和內存地址 418
19.2 地址轉換 419
19.3 加載並運行應用(osbook_day19a) 422
19.4 虛擬地址和四級分頁 422
19.5 在後半部分運行應用 425
19.6 加載應用 426
19.7 設置分層分頁結構 428
19.8 整理分層分頁結構 432
第 20 章 系統調用 437
20.1 應用如何使用操作系統函數(osbook_day20a) 438
20.2 保護操作系統(1)(osbook_day20b) 440
20.3 設置TSS(osbook_day20c) 447
20.4 幫助查找錯誤(osbook_day20d) 455
20.5 系統調用(osbook_day20e) 459
20.6 註冊系統調用的過程 460
20.7 系統調用本體 462
第 21 章 窗口應用 467
21.1 設置IST(osbook_day21a) 468
21.2 字符串顯示系統調用(osbook_day21b) 470
21.3 創建系統調用 472
21.4 創建write() 476
21.5 退出系統調用(osbook_day21c) 478
21.6 返回棧指針 482
21.7 代碼整理(osbook_day21d) 484
21.8 打開一個窗口(osbook_day21e) 486
21.9 在窗口中寫入文本(osbook_day21f) 487
第 22 章 圖形和事件(1) 491
22.1 使用exit()(osbook_day22a) 492
22.2 繪制兩個點(osbook_day22b) 494
22.3 獲取計時器值(osbook_day22c) 498
22.4 窗口繪制的優化(osbook_day22d) 500
22.5 繪制直線(osbook_day22e) 502
22.6 關閉窗口(osbook_day22f) 506
22.7 等待按鍵輸入(osbook_day22g) 508
第 23 章 圖形和事件(2) 517
23.1 鼠標輸入(osbook_day23a) 518
23.2 繪圖軟件(osbook_day23b) 523
23.3 計時器命令(osbook_day23c) 527
23.4 動畫(osbook_day23d) 532
23.5 打方塊遊戲(osbook_day23e) 534
第 24 章 多終端 539
24.1 增加終端數量(osbook_day24a) 540
24.2 光標自動閃爍(osbook_day24b) 541
24.3 同時啟動多個應用(osbook_day24c) 544
24.4 修復窗口重疊的錯誤(osbook_day24d) 549
24.5 不需要終端即可啟動應用(osbook_day24e) 550
24.6 凍結操作系統的應用(osbook_day24f) 554
24.7 保護操作系統(2)(osbook_day24g) 556
第 25 章 使用應用讀取文件 559
25.1 目錄支持(osbook_day25a) 560
25.2 讀取文件(osbook_day25b) 566
25.3 正則表達式搜索(osbook_day25c) 575
第 26 章 使用應用寫入文件 577
26.1 標準輸入(osbook_day26a) 578
26.2 文件描述符的抽象化 578
26.3 接收鍵盤輸入 580
26.4 EOF和EOT(osbook_day26b) 583
26.5 寫入文件(1)(osbook_day26c) 584
26.6 寫入文件(2)(osbook_day26d) 591
第 27 章 應用的內存管理 597
27.1 按需分頁(osbook_day27a) 598
27.2 內存映射文件(osbook_day27b) 604
27.3 測量內存使用情況(osbook_day27c) 612
27.4 寫入時復制(osbook_day27d) 614
第 28 章 日文顯示和重定向 625
28.1 日文和字符編碼(osbook_day28a) 626
28.2 日文字體(osbook_day28b) 633
28.3 重定向(osbook_day28c) 638
第 29 章 應用間通信 645
29.1 退出碼(osbook_day29a) 646
29.2 管道(osbook_day29b) 649
29.3 解析命令行並啟動任務 651
29.4 管道處理的主體PipeDescriptor 652
29.5 啟動和關閉終端 655
29.6 終止任務 657
29.7 排序命令(osbook_day29c) 661
29.8 終端錯誤修復(osbook_day29d) 663
29.9 共享內存 665
第 30 章 額外應用 667
30.1 應用路徑程序(osbook_day30a) 668
30.2 more命令(osbook_day30b) 669
30.3 使cat與輸入相對應(osbook_day30c) 672
30.4 關閉按鈕(osbook_day30d) 674
30.5 文本查看器(osbook_day30e) 679
30.6 圖像查看器(osbook_day30f) 682
第 31 章 前方的路 687
附錄A 配置開發環境 690
附錄B 獲取MikanOS 695
附錄C EDKII文件說明 698
附錄D C++中的模板 701
附錄E iPXE 702
附錄F ASCII碼表 705
致謝 709