我並不喜歡教科書的內容, 那只能有個基本概念, 無法實作出作業系統, 而無法實作的東西, 我認為要稱得上「了解」二字, 恐怕猶如 0 到 1 那般的遙遠。
基本上我是以Orange's 一個作業系統的實現為主, 其他兩本為輔, 因為其他兩本有提到 GUI 的實作, 這也是我有興趣的部份, 早期是以世紀末軟體革命作為我研究 GUI 實作書籍, 不過該書在這部份寫的不是很詳細, 現在有其他兩本可以輔助了, 而且完全用自己寫的程式碼來實作, 使用 c/bios function call, 那不算是自己完成所有的東西, library 實在幫我們完成太多工作了。這本定價也是三本當中最便宜的, 定價是 580, 其實不算便宜, 但以書中的內容來說實在是太便宜了。本書使用 nasm 為組譯器, 我參考杨文博的電子書學習 gas at & t syntax 的版本, 我還是比較習慣 gnu toolchain。
很巧的是, 這三本書分別是中國、日本、台灣的作者, 真是高興台灣的作者也能出版這樣的書籍, 也很高興台灣的出版社願意出版, 雖然高達 750 的定價 (作業系統開發實戰手冊:以開發一個視窗多工作業系統為例), 但我依然覺得以這樣的知識來說實在值得; 日本人寫的30天打造OS!作業系統自作入門則是 780, 在這三本書當中是最貴的, 基本上不知道是不是翻譯的關係, 有點覺得怪怪的, 但還不至於影響理解, 我覺得讀來也算有趣。
左邊是第一版, 右邊是第二版, 第一版還沒消化完畢又出第二版了, 我的學習實在太慢。可惜這本好書被製作的很糟糕, 松崗得好好加油才是, 以同樣製作中國出版社的電腦書籍來說, 碁峰的程式設計師的自我修養:連結、載入、程式庫就製作的很棒, 描述語句、翻譯辭彙在在令人讀來輕鬆愉快, 沒有奇怪的辭彙、惱人的中國技術術語。真是可惜了這本書, 直接買簡體版可能不會差太多。製作簡體中文的書籍難度應該容易許多, 如果因為出版社的不用心, 只做做繁體中文的工作, 那實在也太不尊重台灣支持你的讀者了。
明明組合語言對岸是稱為匯編, 真不知道為什麼繁體中文版本變成編譯, 偏偏這又會讓人誤會是要編譯 C 語言的那個意思, 這可讓我手動改了不少次。
還有使用者/被使用者這兩個詞, 我看了很久之後才知道這是指 caller/callee, 台灣應該是翻譯成呼叫者/被呼叫者, 讓我在權限 stack 切換那邊卡了很久。
想不到第一版原來就很糟糕, 第一版第六章標題名為進程, 台灣應該是用行程, 但重點是整章充斥著處理這東西, 應該是指處理程序的意思, 我大膽猜測, 這位將簡體中文轉為繁體中文的編輯並不懂他現在在編輯的書籍是難得的中文大作, 本書被他做成這個樣子, 要是有一天他突然懂 OS 了, 應該會很後悔自己把這本書搞砸了。
書中第三章的保護模式介紹我非常喜愛, 在 dos 環境下可以一個功能慢慢測試, 從進入保護模式、權限切換、ldt 的使用、分頁表 ... 得把這些程式都看懂, 執行過一遍, 那才能稱上了解了 x86 保護模式。不過我看得異常辛苦, 這章的知識實在是太硬, 我已經挑戰好幾次。總算有點懂了。
我遇到的一開始困難點是組合語言, 我不算是會組合語言, 第三章有關組合語言的程式碼實在讓我大吃苦頭, 但在努力學習之下, 我還是不會組合語言 ... 冏。
不過那沒關係, 只要學習到能夠寫 OS 的部份就夠用, 等建立好 c runtime 環境, 再來使用 C。但也不輕鬆, 畢竟操作 gdt 切入 x86 保護模式, page tabe, idt, 這些組合語言在一般的 os 環境下, 根本不會用到, 要熟悉他們其實是很困難的。還有 x86 其特有的 segment 定址方式, 在記憶體內容的變數, 幾乎都和使用 C 語言宣告變數不同, 每每總是將錯誤的位址填到所執行的組合語言指令, 如何 debug 也是很麻煩的問題, 我試過書上幾種方式, 成效總是不章, 還是靠著很多苦功才找出錯誤。
再來是 x86 的硬體知識, 怎麼切入保護模式、權限切換、page tabe ... 疑 ... 怎麼和上面一樣? 因為本來就有相關, 你也不能說我一直在寫重複的東西。這些知識並不容易理解, 而且必須搭配程式碼的實作, 才能真正的知道。
使用 gas at&t 語法也讓我的學習之路上佈滿荊棘, 我非常堅持要使用 gas at&t 語法, 偏偏這本書使用的是 nasm intel 語法, 好在有杨文博的版本, 讓我一步一步把本書的程式改成 at&t 語法, 也當作是 gas at&t 的練習, 現在我已經比較習慣 at&t 的語法了。
後面還有長長的章節, 要繼續慢慢克服了。
這是以Orange's 一個作業系統的實現 google group 論壇: https://groups.google.com/group/osfromscratch/topics
這是百度的討論區:
http://tieba.baidu.com/f?kw=%D7%D4%BC%BA%B6%AF%CA%D6%D0%B4%B2%D9%D7%F7%CF%B5%CD%B3&fr=wwwt
朋友 lon 找到難得的繁體中文介紹保護模式的文章: http://www.csie.ntu.edu.tw/~wcchen/asm98/asm/proj/b85506061/table_of_contents.html
朋友 lon 找到難得的繁體中文介紹保護模式的文章: http://www.csie.ntu.edu.tw/~wcchen/asm98/asm/proj/b85506061/table_of_contents.html
0 意見:
張貼意見