30天自制操作系統-30days diy os

30days_diy_os


第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 附錄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章