開啟主選單

求真百科

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

參考文獻

  1. 我國出版社的等級劃分和分類標準,知網出書,2021-03-01
  2. 人民郵電出版社簡介,人民郵電出版社