30天自製操作系統
《30天自製操作系統》,川合秀實 著,周自恆 李黎明 曾祥江 張文旭 譯,出版社: 人民郵電出版社。
人民郵電出版社,1953年10月成立,隸屬於中國工信出版傳媒集團,是工業和信息化部主管的大型專業出版社[1]。建社以來,人民郵電出版社圍繞「立足工信事業,面向現代社會,傳播科學知識,引領美好生活」的出版宗旨,已發展成為集圖書、期刊、音像電子及數字出版於一體的綜合性出版大社[2]。
目錄
內容簡介
《30天自製操作系統》是*本兼具趣味性、實用性與學習性的操作系統圖書。作者從計算機的構造、匯編語言、C語言開始解說,讓讀者在實踐中掌握算法。在這本書的指導下,從零編寫所有代碼,30天後*可以製作出*個具有窗口系統的32位多任務操作系。 《30天自製操作系統》適合操作系統愛好者和程序設計人員閱讀。
目錄
第0天 着手開發之前 *
- 前言 *
2 何謂操作系統 3
3 開發操作系統的各種方法 4
4 *知則*畏 4
5 如何開發操作系統 6
6 操作系統開發中的困難 7
7 學習本書時的注意事項(重要!) 9
8 各章內容摘要 **
第 *天 從計算機結構到匯編程序入門 *3
- 先動手操作 *3
2 做了些什麼 *9
3 初次體驗匯編程序 22
4 加工潤色 24
第 2天 匯編語言學習與Makefile入門 28
- 介紹文本編輯器 28
2 繼續開發 29
3 先製作啟動區 40
4 Makefile入門 4*
第3天 進入32位模式並導入C語言 45
- 製作真正的IPL 45
2 試錯 50
3 讀到*8扇區 5*
4 讀入*0個柱面 52
5 着手開發操作系統 54
6 從啟動區執行操作系統 55
7 確認操作系統的執行情況 56
8 32位模式前期準備 57
9 開始導入C語言 59
- 0 實現HLT(harib00j) 62
第4天 C語言與畫面顯示的練習 64
- 用C語言實現內存寫入(harib0*a) 64
2 條紋圖案(harib0*b) 67
3 挑戰指針(harib0*c) 69
4 指針的應用(*)(harib0*d) 74
5 指針的應用(2)(harib0*e) 74
6 色號設定(harib0*f) 75
7 繪製矩形(harib0*g) 84
8 今 天的成果(harib0*h) 86
第5天 結構體、文字顯示與GDT/IDT初始化 88
- 接收啟動信息(harib02a) 88
2 試用結構體(harib02b) 89
3 試用箭頭記號(harib02c) 9*
4 顯示字符(harib02d) 9*
5 增加字體(harib02e) 94
6 顯示字符串(harib02f) 96
7 顯示變量值(harib02g) 97
8 顯示鼠標指針(harib02h) 99
9 GDT與IDT的初始化(harib02i) *0*
第6天 分割編譯與中斷處理 *08
- 分割源文件(harib03a) *08
2 整理Makefile(harib03b) *09
3 整理頭文件(harib03c) **0
4 意猶未盡 **2
5 初始化PIC(harib03d) **5
6 中斷處理程序的製作(harib03e) **9
第7天 FIFO與鼠標控制 *25
- 獲取按鍵編碼(hiarib04a) *25
2 加快中斷處理(hiarib04b) *27
3 製作FIFO緩衝區(hiarib04c) *30
4 *FIFO緩衝區(hiarib04d) *33
5 整理FIFO緩衝區(hiarib04e) *35
6 總算講到鼠標了(harib04f) *38
7 從鼠標接受數據(harib04g) *4*
第8天 鼠標控制與32位模式切換 *44
- 鼠標解讀(*)(harib05 a) *44
2 稍事整理(harib05b) *46
3 鼠標解讀(2)(harib05c) *48
4 移動鼠標指針(harib05d) *5*
5 通往32位模式之路 *53
第9天 內存管理 *62
- 整理源文件(harib06a) *62
2 內存容量檢查(*)(harib06b) *63
3 內存容量檢查(2)(harib06c) *68
4 挑戰內存管理(harib06d) *72
第 *0天 疊加處理 *8*
- 內存管理(續)(harib07a) *8*
2 疊加處理(harib07b) *84
3 提*疊加處理速度(*)(harib07c) *94
4 提*疊加處理速度(2)(harib07d) *97
第 **天 製作窗口 20*
- 鼠標顯示問題(harib08a) 20*
2 實現畫面外的支持(harib08b) 202
3 shtctl的*省略(harib08c) 203
4 顯示窗口(harib08d) 206
5 小實驗(harib08e) 208
6 *速計數器(harib08f) 209
7 *閃爍(*)(harib08g) 2**
8 *閃爍(2)(harib08h) 2*4
第 *2天 定時器(*) 220
- 使用定時器(harib09a) 220
2 計量時間(harib09b) 224
3 *時功能(harib09c) 225
4 設定多個定時器(harib09d) 228
5 加快中斷處理(*)(harib09e) 232
6 加快中斷處理(2)(harib09f) 234
7 加快中斷處理(3)(harib09g) 236
第 *3天 定時器(2) 240
- 簡化字符串顯示(harib*0a) 240
2 重新調整FIFO緩衝區(*)(harib*0b) 24*
3 測試性能(harib*0c~harib*0f) 243
4 重新調整FIFO緩衝區(2)(harib*0g) 246
5 加快中斷處理(4)(harib*0h) 253
6 使用「哨兵」簡化程序(harib*0i) 257
第 *4天 *分辨率及鍵盤輸入 262
- 繼續測試性能(harib**a~harib**c) 262
2 提*分辨率(*)(harib**d) 266
3 提*分辨率(2)(harib**e) 269
4 鍵盤輸入(*)(harib**f) 272
5 鍵盤輸入(2)(harib**g) 275
6 追記內容(*)(harib**h) 277
7 追記內容(2)(harib**i) 279
第 *5天 多任務(*) 282
- 挑戰任務切換(harib*2a) 282
2 任務切換進*(harib*2b) 289
3 做個簡單的多任務(*)(harib*2c) 29*
4 做個簡單的多任務(2)(harib*2d) 293
5 提*運行速度(harib*2e) 294
6 測試運行速度(harib*2f) 297
7 多任務進*(harib*2g) 299
第 *6天 多任務(2) 304
- 任務管理自動化(harib*3a) 304
2 讓任務休眠(harib*3b) 308
3 增加窗口數量(harib*3c) 3*3
4 設定任務*先級(*)(harib*3d) 3*7
5 設定任務*先級(2)(harib*3e) 320
第 *7天 命令行窗口 329
- 閒置任務(harib*4a) 329
2 *建命令行窗口(harib*4b) 33*
3 切換輸入窗口(harib*4c) 334
4 實現字符輸入(harib*4d) 337
5 符號的輸入(harib*4e) 34*
6 大寫字母與小寫字母(harib*4f) 343
7 對各種鎖定鍵的支持(harib*4g) 346
第 *8天 dir命令 350
- 控制光標閃爍(*)(harib*5 a) 350
2 控制光標閃爍(2)(harib*5b) 352
3 對回車鍵的支持(harib*5c) 355
4 對窗口滾動的支持(harib*5d) 357
5 mem命令(harib*5e) 359
6 cls命令(harib*5f) 363
7 dir命令(harib*5g) 366
第 *9天 應用程序 37*
- type命令(harib*6a) 37*
2 type命令改良(harib*6b) 378
3 對FAT的支持(harib*6c) 382
4 代碼整理(harib*6d) 387
5 第 *個應用程序(harib*6e) 387
第 20天 API 392
- 程序整理(harib*7a) 392
2 顯示單個字符的API(*)(harib*7b) 399
3 顯示單個字符的API(2)(harib*7c) 402
4 結束應用程序(harib*7d) 403
5 *隨操作系統版本而改變的API(harib*7e) 405
6 為應用程序自由命名(harib*7f) 408
7 當心寄存器(harib*7g) 4*0
8 用API顯示字符串(harib*7h) 4*2
第 2*天 *護操作系統 4*8
- 攻克難題——字符串顯示API(harib*8a) 4*8
2 用C語言編寫應用程序(harib*8b) 420
3 *護操作系統(*)(harib*8c) 424
4 *護操作系統(2)(harib*8d) 426
5 對異常的支持(harib*8e) 43*
6 *護操作系統(3)(harib*8f) 434
7 *護操作系統(4)(harib*8g) 435
第 22天 用C語言編寫應用程序 443
- *護操作系統(5)(harib*9a) 443
2 幫助發現bug(harib*9b) 448
3 強制結束應用程序(harib*9c) 452
4 用C語言顯示字符串(*)(harib*9d) 455
5 用C語言顯示字符串(2)(harib*9e) 457
6 顯示窗口(harib*9f) 462
7 在窗口中描繪字符和方塊(harib*9g) 465
第 23天 圖形處理相關 468
- 編寫malloc(harib20a) 468
2 畫點(harib20b) 472
3 刷新窗口(harib20c) 475
4 畫直線(harib20d) 478
5 關閉窗口(harib20e) 483
6 鍵盤輸入API(harib20f) 484
7 用鍵盤輸入來消遣*下(harib20g) 488
8 強制結束並關閉窗口(harib20h) 489
第 24天 窗口操作 493
- 窗口切換(*)(harib2*a) 493
2 窗口切換(2)(harib2*b) 495
3 移動窗口(harib2*c) 496
4 用鼠標關閉窗口(harib2*d) 498
5 將輸入切換到應用程序窗口(harib2*e) 500
6 用鼠標切換輸入窗口(harib2*f) 506
7 定時器API(harib2*g) 507
8 取消定時器(harib2*h) 5**
第 25天 增加命令行窗口 5*5
- 蜂鳴器發聲(harib22a) 5*5
2 增加更多的顏色(*)(harib22b) 5*8
3 增加更多的顏色(2)(harib22c) 520
4 窗口初始位置(harib22d) 523
5 增加命令行窗口(*)(harib22e) 524
6 增加命令行窗口(2)(harib22f) 528
7 增加命令行窗口(3)(harib22g) 53*
8 增加命令行窗口(4)(harib22h) 532
9 變得更像真正的操作系統(*)(harib22i) 534
- 0 變得更像真正的操作系統(2)(harib22j) 538
第 26天 為窗口移動提速 54*
- 提*窗口移動速度(*)(harib23a) 54*
2 提*窗口移動速度(2)(harib23b) 543
3 提*窗口移動速度(3)(harib23c) 547
4 提*窗口移動速度(4)(harib23d) 549
5 啟動時只打開*個命令行窗口(harib23e) 55*
6 增加更多的命令行窗口(harib23f) 554
7 關閉命令行窗口(*)(harib23g) 555
8 關閉命令行窗口(2)(harib23h) 56*
9 start命令(harib23i) 563
- 0 ncst命令(harib23j) 564
第 27天 LDT與庫 57*
- 先來修復bug(harib24a) 57*
2 應用程序運行時關閉命令行窗口(harib24b) 573
3 *護應用程序(*)(harib24c) 577
4 *護應用程序(2)(harib24d) 580
5 *化應用程序的大小(harib24e) 583
6 庫(harib24f) 587
7 整理make環境(harib24g) 590
第 28天 文件操作與文字顯示 598
- alloca(*)(harib25 a) 598
2 alloca(2)(harib25b) 60*
3 文件操作API(harib25c) 605
4 命令行API(harib25d) 6*2
5 日文文字顯示(*)(harib25e) 6*5
6 日文文字顯示(2)(harib25f) 624
7 日文文字顯示(3)(harib25g) 629
第 29天 壓縮與簡單的應用程序 635
- 修復bug(harib26a) 635
2 文件壓縮(harib26b) 636
3 標準函數 644
4 非矩形窗口(harib26c) 647
5 bball(harib26d) 648
6 外星人遊戲(harib26e) 65*
第30天 * 級的應用程序 659
- 命令行計算器(harib27a) 659
2 文本閱覽器(harib27b) 664
3 MML播放器(harib27c) 67*
4 圖片閱覽器(harib27d) 679
5 IPL的改良(harib27e) 683
6 光盤啟動(harib27f) 688
第3*天 寫在開發完成之後 690
- 繼續開發要靠大家的努力 690
2 關於操作系統的大小 692
3 操作系統開發的訣竅 693
4 分享給他人使用 694
5 關於光盤中的軟件 695
6 關於開源的建議 696
7 後記 698
8 畢業典禮 703
9 附錄 704
參考文獻
- ↑ 我國出版社的等級劃分和分類標準,知網出書,2021-03-01
- ↑ 人民郵電出版社簡介,人民郵電出版社