30天自製作業系統

30天自製作業系統

《30天自製作業系統》是2012年人民郵電出版社出版的圖書,作者是川合秀實。該書介紹了怎么編寫代碼,完成作業系統任務。

基本信息

內容簡介

自己編寫一個作業系統,是許多程式設計師的夢想。也許有人曾經挑戰過,但因為太難而放棄了。其實你錯了,你的失敗並不是因為編寫作業系統太難,而是因為沒有人告訴你那其實是一件很簡單的事。那么,你想不想再挑戰一次呢?

這是一本兼具趣味性、實用性與學習性的書籍。作者從計算機的構造、彙編語言、C語言開始解說,讓你在實踐中掌握算法。在這本書的指導下,從零編寫所有代碼,30天后就可以製作出一個具有視窗系統的32位多任務作業系統。

本書以課題為主導,邊做邊玩,拋開晦澀難懂的語言,行文風格十分隨性,還充滿了各種歡樂的吐槽,適合作業系統愛好者和程式設計人員閱讀。

作品目錄

第0天 著手開發之前

1 前言

2 何謂作業系統

3 開發作業系統的各種方法

4 無知則無畏

5 如何開發作業系統

6 作業系統開發中的困難

7 學習本書時的注意事項(重要!)

8 各章內容摘要

第1天 從計算機結構到彙編程式入門

1 先動手操作

2 究竟做了些什麼

3 初次體驗彙編程式

4 加工潤色

第2天 彙編語言學習與Makefile入門

1 介紹文本編輯器

2 繼續開發

3 先製作啟動區

4 Makefile入門

第3天 進入32位模式並導入C語言

1 製作真正的IPL

2 試錯

3 讀到18扇區

4 讀入10個柱面

5 著手開發作業系統

6 從啟動區執行作業系統

7 確認作業系統的執行情況

8 32位模式前期準備

9 開始導入C語言

10 實現HLT(harib00j)

第4天 C語言與畫面顯示的練習

1 用C語言實現記憶體寫入(harib01a)

2 條紋圖案(harib01b)

3 挑戰指針(harib01c)

4 指針的套用(1)(harib01d)

5 指針的套用(2)(harib01e)

6 色號設定(harib01f)

7 繪製矩形(harib01g)

8 今天的成果(harib01h)

第5天 結構體、文字顯示與GDT/IDT初始化

1 接收啟動信息(harib02a)

2 試用結構體(harib02b)

3 試用箭頭記號(harib02c)

4 顯示字元(harib02d)

5 增加字型(harib02e)

6 顯示字元串(harib02f)

7 顯示變數值(harib02g)

8 顯示滑鼠指針(harib02h)

9 GDT與IDT的初始化(harib02i)

第6天 分割編譯與中斷處理

1 分割源檔案(harib03a)

2 整理Makefile(harib03b)

3 整理頭檔案(harib03c)

4 意猶未盡

5 初始化PIC(harib03d)

6 中斷處理程式的製作(harib03e)

第7天 FIFO與滑鼠控制

1 獲取按鍵編碼(hiarib04a)

2 加快中斷處理(hiarib04b)

3 製作FIFO緩衝區(hiarib04c)

4 改善FIFO緩衝區(hiarib04d)

5 整理FIFO緩衝區(hiarib04e)

6 總算講到滑鼠了(harib04f)

7 從滑鼠接受數據(harib04g)

第8天 滑鼠控制與32位模式切換

1 滑鼠解讀(1)(harib05a)

2 稍事整理(harib05b)

3 滑鼠解讀(2)(harib05c)

4 移動滑鼠指針(harib05d)

5 通往32位模式之路

第9天 記憶體管理

1 整理源檔案(harib06a)

2 記憶體容量檢查(1)(harib06b)

3 記憶體容量檢查(2)(harib06c)

4 挑戰記憶體管理(harib06d)

第10天 迭加處理

1 記憶體管理(續)(harib07a)

2 迭加處理(harib07b)

3 提高迭加處理速度(1)(harib07c)

4 提高迭加處理速度(2)(harib07d)

第11天 製作視窗

1 滑鼠顯示問題(harib08a)

2 實現畫面外的支持(harib08b)

3 shtctl的指定省略(harib08c)

4 顯示視窗(harib08d)

5 小實驗(harib08e)

6 高速計數器(harib08f)

7 消除閃爍(1)(harib08g)

8 消除閃爍(2)(harib08h)

第12天 定時器(1)

1 使用定時器(harib09a)

2 計量時間(harib09b)

3 逾時功能(harib09c)

4 設定多個定時器(harib09d)

5 加快中斷處理(1)(harib09e)

6 加快中斷處理(2)(harib09f)

7 加快中斷處理(3)(harib09g)

第13天 定時器(2)

1 簡化字元串顯示(harib10a)

2 重新調整FIFO緩衝區(1)(harib10b)

3 測試性能(harib10c~harib10f)

4 重新調整FIFO緩衝區(2)(harib10g)

5 加快中斷處理(4)(harib10h)

6 使用“哨兵”簡化程式(harib10i)

第14天 高解析度及鍵盤輸入

1 繼續測試性能(harib11a~harib11c)

2 提高解析度(1)(harib11d)

3 提高解析度(2)(harib11e)

4 鍵盤輸入(1)(harib11f)

5 鍵盤輸入(2)(harib11g)

6 追記內容(1)(harib11h)

7 追記內容(2)(harib11i)

第15天 多任務(1)

1 挑戰任務切換(harib12a)

2 任務切換進階(harib12b)

3 做個簡單的多任務(1)(harib12c)

4 做個簡單的多任務(2)(harib12d)

5 提高運行速度(harib12e)

6 測試運行速度(harib12f)

7 多任務進階(harib12g)

第16天 多任務(2)

1 任務管理自動化(harib13a)

2 讓任務休眠(harib13b)

3 增加視窗數量(harib13c)

4 設定任務優先權(1)(harib13d)

5 設定任務優先權(2)(harib13e)

第17天 命令行視窗

1 閒置任務(harib14a)

2 創建命令行視窗(harib14b)

3 切換輸入視窗(harib14c)

4 實現字元輸入(harib14d)

5 符號的輸入(harib14e)

6 大寫字母與小寫字母(harib14f)

7 對各種鎖定鍵的支持(harib14g)

第18天 dir命令

1 控制游標閃爍(1)(harib15a)

2 控制游標閃爍(2)(harib15b)

3 對回車鍵的支持(harib15c)

4 對視窗滾動的支持(harib15d)

5 mem命令(harib15e)

6 cls命令(harib15f)

7 dir命令(harib15g)

第19天 應用程式

1 type命令(harib16a)

2 type命令改良(harib16b)

3 對FAT的支持(harib16c)

4 代碼整理(harib16d)

5 第一個應用程式(harib16e)

第20天 API

1 程式整理(harib17a)

2 顯示單個字元的API(1)(harib17b)

3 顯示單個字元的API(2)(harib17c)

4 結束應用程式(harib17d)

5 不隨作業系統版本而改變的API(harib17e)

6 為應用程式自由命名(harib17f)

7 當心暫存器(harib17g)

8 用API顯示字元串(harib17h)

第21天 保護作業系統

1 攻克難題——字元串顯示API(harib18a)

2 用C語言編寫應用程式(harib18b)

3 保護作業系統(1)(harib18c)

4 保護作業系統(2)(harib18d)

5 對異常的支持(harib18e)

6 保護作業系統(3)(harib18f)

7 保護作業系統(4)(harib18g)

第22天 用C語言編寫應用程式

1 保護作業系統(5)(harib19a)

2 幫助發現bug(harib19b)

3 強制結束應用程式(harib19c)

4 用C語言顯示字元串(1)(harib19d)

5 用C語言顯示字元串(2)(harib19e)

6 顯示視窗(harib19f)

7 在視窗中描繪字元和方塊(harib19g)

第23天 圖形處理相關

1 編寫malloc(harib20a)

2 畫點(harib20b)

3 刷新視窗(harib20c)

4 畫直線(harib20d)

5 關閉視窗(harib20e)

6 鍵盤輸入API(harib20f)

7 用鍵盤輸入來消遣一下(harib20g)

8 強制結束並關閉視窗(harib20h)

第24天 視窗操作

1 視窗切換(1)(harib21a)

2 視窗切換(2)(harib21b)

3 移動視窗(harib21c)

4 用滑鼠關閉視窗(harib21d)

5 將輸入切換到應用程式視窗(harib21e)

6 用滑鼠切換輸入視窗(harib21f)

7 定時器API(harib21g)

8 取消定時器(harib21h)

第25天 增加命令行視窗

1 蜂鳴器發聲(harib22a)

2 增加更多的顏色(1)(harib22b)

3 增加更多的顏色(2)(harib22c)

4 視窗初始位置(harib22d)

5 增加命令行視窗(1)(harib22e)

6 增加命令行視窗(2)(harib22f)

7 增加命令行視窗(3)(harib22g)

8 增加命令行視窗(4)(harib22h)

9 變得更像真正的作業系統(1)(harib22i)

10 變得更像真正的作業系統(2)(harib22j)

第26天 為視窗移動提速

1 提高視窗移動速度(1)(harib23a)

2 提高視窗移動速度(2)(harib23b)

3 提高視窗移動速度(3)(harib23c)

4 提高視窗移動速度(4)(harib23d)

5 啟動時只打開一個命令行視窗(harib23e)

6 增加更多的命令行視窗(harib23f)

7 關閉命令行視窗(1)(harib23g)

8 關閉命令行視窗(2)(harib23h)

9 start命令(harib23i)

10 ncst命令(harib23j)

第27天 LDT與庫

1 先來修復bug(harib24a)

2 應用程式運行時關閉命令行視窗(harib24b)

3 保護應用程式(1)(harib24c)

4 保護應用程式(2)(harib24d)

5 最佳化應用程式的大小(harib24e)

6 庫(harib24f)

7 整理make環境(harib24g)

第28天 檔案操作與文字顯示

1 alloca(1)(harib25a)

2 alloca(2)(harib25b)

3 檔案操作API(harib25c)

4 命令行API(harib25d)

5 日文文字顯示(1)(harib25e)

6 日文文字顯示(2)(harib25f)

7 日文文字顯示(3)(harib25g)

第29天 壓縮與簡單的應用程式

1 修復bug(harib26a)

2 檔案壓縮(harib26b)

3 標準函式

4 非矩形視窗(harib26c)

5 bball(harib26d)

6 外星人遊戲(harib26e)

第30天 高級的應用程式

1 命令行計算器(harib27a)

2 文本閱覽器(harib27b)

3 MML播放器(harib27c)

4 圖片閱覽器(harib27d)

5 IPL的改良(harib27e)

6 光碟啟動(harib27f)

第31天 寫在開發完成之後

1 繼續開發要靠大家的努力

2 關於作業系統的大小

3 作業系統開發的訣竅

4 分享給他人使用

5 關於光碟中的軟體

6 關於開源的建議

7 後記

8 畢業典禮

9 附錄

編輯推薦

只需30天

從零開始編寫一個五臟俱全的圖形作業系統

39.1KB迷你系統

實現多任務、漢字顯示、檔案壓縮,還能聽歌看圖玩遊戲

日本編程天才

揭開CPU、記憶體、磁碟以及作業系統底層工作模式的神秘面紗

作者簡介

川合秀實(Hidemi Kawai)

生於1975年,是一位以“輕量化”編程思想見長的“非主流”開發者。2000年因自行開發的OSASK項目而名聲大噪。OSASK是一個開源的32位微型作業系統,它並非以Linux等核心為基礎,而是完全從零開始開發,在一張軟碟的容量下實現了GUI、多任務、多語言等高級特性,啟動時間只需1秒。本書的內容可以看成是作者以OSASK為藍本,教會讀者從零開始開發一個作業系統,同時可以讓初學者在編寫作業系統的過程中,了解作業系統背後更多的知識。

相關詞條

相關搜尋

熱門詞條

聯絡我們