關于我們
書單推薦
新書推薦
|
30天自制操作系統(tǒng) 讀者對象:適合操作系統(tǒng)愛好者和程序設計人員閱讀
《30天自制操作系統(tǒng)》是一本兼具趣味性、實用性與學習性的操作系統(tǒng)圖書。作者從計算機的構造、匯編語言、C語言開始解說,讓讀者在實踐中掌握算法。在這本書的指導下,從零編寫所有代碼,30天后就可以制作出一個具有窗口系統(tǒng)的32位多任務操作系。
《30天自制操作系統(tǒng)》適合操作系統(tǒng)愛好者和程序設計人員閱讀。
只需30天 從零開始編寫一個五臟俱全的圖形操作系統(tǒng) 39.1KB迷你系統(tǒng) 實現(xiàn)多任務、漢字顯示、文件壓縮,還能聽歌看圖玩游戲 日本編程天才 揭開CPU、內(nèi)存、磁盤以及操作系統(tǒng)底層工作模式的神秘面紗
“好想編寫一個操作系統(tǒng)呀!”筆者的朋友曾說這是所有程序員都曾經(jīng)懷揣的一個夢想。說“所有的程序員”可能有點夸張了,不過作為程序員的夢想,它至少也應該能排進前十名吧。
也許很多人覺得編寫操作系統(tǒng)是個天方夜譚,這一定是操作系統(tǒng)業(yè)界的一個陰謀(笑)。他們故意讓大家相信編寫操作系統(tǒng)是一件非常困難的事情,這樣就可以高價兜售自己開發(fā)的操作系統(tǒng),而且操作系統(tǒng)的作者還會被頂禮膜拜。那么實際情況又怎么樣呢?和別的程序相比,其實編寫操作系統(tǒng)并沒有那么難,至少筆者的感覺是這樣。 在各位讀者之中,也許有人曾經(jīng)挑戰(zhàn)過操作系統(tǒng)的編寫,但因為太難而放棄了。擁有這樣經(jīng)歷的人也許不會認同筆者的觀點。其實你錯了,你的失敗并不是因為編寫操作系統(tǒng)太難,而是因為沒有人告訴你那其實是一件很簡單的事而已。 不僅是編寫操作系統(tǒng),任何事都是一樣的。如果講解的人認為它很難,那就不可能把它講述得通俗易懂,即便是同樣的內(nèi)容,也會講得無比復雜。這樣的講解,肯定是很難懂的。 那么,你想不想和筆者一起再挑戰(zhàn)一次呢?如果你曾經(jīng)夢想過編寫自己的操作系統(tǒng),一定會覺得樂在其中的。 可能有人會說,這本書足足有700多頁,怎么會“有趣”和“簡單”呢?唔,這么一說筆者也覺得挺心虛的,不過其實也只是長了那么一點點啦。平均下來的話,每天只有大約23頁的內(nèi)容,你看,也沒有那么長吧? 這本書的文風非常輕松,也許你不知不覺中就會讀得很快。但是這樣的話可能印象不會很深,最好還是能靜下心來慢慢地讀。書中所展示的程序代碼和文字的說明同樣重要,因此也希望大家仔細閱讀。只要注意這些,理解本書的內(nèi)容就應該沒有問題了。 在本書中,我們使用C語言和匯編語言來編寫操作系統(tǒng),不過不必擔心,你可以在閱讀本書的同時來逐步學習關于這些編程語言的知識。本書在這方面寫得非常仔細,如果能有人通過本書終于把C語言中的指針給搞懂了,那筆者的目的也就達到了。即便是從這樣的水平開始,30天后你也能夠編寫出一個很棒的操作系統(tǒng),請大家拭目以待吧!
川合秀實(Hidemi Kawai),生于1975年,是一位以“輕量化”編程思想見長的“非主流”開發(fā)者。2000年因自行開發(fā)的OSASK項目而名聲大噪。OSASK是一個開源的32位微型操作系統(tǒng),它并非以Linux等內(nèi)核為基礎,而是完全從零開始開發(fā),在一張軟盤的容量下實現(xiàn)了GUI、多任務、多語言等高級特性,啟動時間只需1秒。本書的內(nèi)容可以看成是作者以OSASK為藍本,教會讀者從零開始開發(fā)一個操作系統(tǒng),同時可以讓初學者在編寫操作系統(tǒng)的過程中,了解操作系統(tǒng)背后更多的知識。
第0天 著手開發(fā)之前
1 前言 2 何謂操作系統(tǒng) 3 開發(fā)操作系統(tǒng)的各種方法 4 無知則無畏 5 如何開發(fā)操作系統(tǒng) 6 操作系統(tǒng)開發(fā)中的困難 7 學習本書時的注意事項(重要。 8 各章內(nèi)容摘要 第1天 從計算機結構到匯編程序入門 1 先動手操作 2 究竟做了些什么 3 初次體驗匯編程序 4 加工潤色 第2天 匯編語言學習與Makefile入門 1 介紹文本編輯器 2 繼續(xù)開發(fā) 3 先制作啟動區(qū) 4 Makefile入門 第3天 進入32位模式并導入C語言 1 制作真正的IPL 2 試錯 3 讀到18扇區(qū) 4 讀入10個柱面 5 著手開發(fā)操作系統(tǒng) 6 從啟動區(qū)執(zhí)行操作系統(tǒng) 7 確認操作系統(tǒng)的執(zhí)行情況 8 32位模式前期準備 9 開始導入C語言 10 實現(xiàn)HLT(harib00j) 第4天 C語言與畫面顯示的練習 1 用C語言實現(xiàn)內(nèi)存寫入(harib01a) 2 條紋圖案(harib01b) 3 挑戰(zhàn)指針(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緩沖區(qū)(hiarib04c) 4 改善FIFO緩沖區(qū)(hiarib04d) 5 整理FIFO緩沖區(qū)(hiarib04e) 6 總算講到鼠標了(harib04f) 7 從鼠標接受數(shù)據(jù)(harib04g) 第8天 鼠標控制與32位模式切換 1 鼠標解讀(1)(harib05a) 2 稍事整理(harib05b) 3 鼠標解讀(2)(harib05c) 4 移動鼠標指針(harib05d) 5 通往32位模式之路 第9天 內(nèi)存管理 1 整理源文件(harib06a) 2 內(nèi)存容量檢查(1)(harib06b) 3 內(nèi)存容量檢查(2)(harib06c) 4 挑戰(zhàn)內(nèi)存管理(harib06d) 第10天 疊加處理 1 內(nèi)存管理(續(xù))(harib07a) 2 疊加處理(harib07b) 3 提高疊加處理速度(1)(harib07c) 4 提高疊加處理速度(2)(harib07d) 第11天 制作窗口 1 鼠標顯示問題(harib08a) 2 實現(xiàn)畫面外的支持(harib08b) 3 shtctl的指定省略(harib08c) 4 顯示窗口(harib08d) 5 小實驗(harib08e) 6 高速計數(shù)器(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 重新調(diào)整FIFO緩沖區(qū)(1)(harib10b) 3 測試性能(harib10c~harib10f) 4 重新調(diào)整FIFO緩沖區(qū)(2)(harib10g) 5 加快中斷處理(4)(harib10h) 6 使用“哨兵”簡化程序(harib10i) 第14天 高分辨率及鍵盤輸入 1 繼續(xù)測試性能(harib11a~harib11c) 2 提高分辨率(1)(harib11d) 3 提高分辨率(2)(harib11e) 4 鍵盤輸入(1)(harib11f) 5 鍵盤輸入(2)(harib11g) 6 追記內(nèi)容(1)(harib11h) 7 追記內(nèi)容(2)(harib11i) 第15天 多任務(1) 1 挑戰(zhàn)任務切換(harib12a) 2 任務切換進階(harib12b) 3 做個簡單的多任務(1)(harib12c) 4 做個簡單的多任務(2)(harib12d) 5 提高運行速度(harib12e) 6 測試運行速度(harib12f) 7 多任務進階(harib12g) 第16天 多任務(2) 1 任務管理自動化(harib13a) 2 讓任務休眠(harib13b) 3 增加窗口數(shù)量(harib13c) 4 設定任務優(yōu)先級(1)(harib13d) 5 設定任務優(yōu)先級(2)(harib13e) 第17天 命令行窗口 1 閑置任務(harib14a) 2 創(chuàng)建命令行窗口(harib14b) 3 切換輸入窗口(harib14c) 4 實現(xiàn)字符輸入(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 不隨操作系統(tǒng)版本而改變的API(harib17e) 6 為應用程序自由命名(harib17f) 7 當心寄存器(harib17g) 8 用API顯示字符串(harib17h) 第21天 保護操作系統(tǒng) 1 攻克難題——字符串顯示API(harib18a) 2 用C語言編寫應用程序(harib18b) 3 保護操作系統(tǒng)(1)(harib18c) 4 保護操作系統(tǒng)(2)(harib18d) 5 對異常的支持(harib18e) 6 保護操作系統(tǒng)(3)(harib18f) 7 保護操作系統(tǒng)(4)(harib18g) 第22天 用C語言編寫應用程序 1 保護操作系統(tǒng)(5)(harib19a) 2 幫助發(fā)現(xiàn)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 蜂鳴器發(fā)聲(harib22a) 2 增加更多的顏色(1)(harib22b) 3 增加更多的顏色(2)(harib22c) 4 窗口初始位置(harib22d) 5 增加命令行窗口(1)(harib22e) 6 增加命令行窗口(2)(harib22f) 7 增加命令行窗口(3)(harib22g) 8 增加命令行窗口(4)(harib22h) 9 變得更像真正的操作系統(tǒng)(1)(harib22i) 10 變得更像真正的操作系統(tǒng)(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 優(yōu)化應用程序的大。╤arib24e) 6 庫(harib24f) 7 整理make環(huán)境(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 標準函數(shù) 4 非矩形窗口(harib26c) 5 bball(harib26d) 6 外星人游戲(harib26e) 第30天 高級的應用程序 1 命令行計算器(harib27a) 2 文本閱覽器(harib27b) 3 MML播放器(harib27c) 4 圖片閱覽器(harib27d) 5 IPL的改良(harib27e) 6 光盤啟動(harib27f) 第31天 寫在開發(fā)完成之后 1 繼續(xù)開發(fā)要靠大家的努力 2 關于操作系統(tǒng)的大小 3 操作系統(tǒng)開發(fā)的訣竅 4 分享給他人使用 5 關于光盤中的軟件 6 關于開源的建議 7 后記 8 畢業(yè)典禮 9 附錄 第15天
你還可能感興趣
我要評論
|