作者descent ( 返無)
看板Soft_Job
標題[賞書] Orange's 一個作業系統的實現
時間Fri Aug 17 08:34:51 2012
@書名:(請盡量寫正確的全名)
Orange's 一個作業系統的實現
@書本類型:(繁體書、簡體書、翻譯書、英文書)
繁體書
@購買時間:(約略就好~)
20100916
@購買地點:
博客來網路書店
@連結:(請至少附上一個參考連結,方便使用者找尋、購買。)
http://www.tenlong.com.tw/items/9867309537?item_id=56264
@入手方式:借閱(圖書館、親友)、購買、交換
購買
@為什麼會買這本書?
書中知識對於工作上來說可能沒有立即的助益, 我會花時間研究完全只是為了想「知道」
從電腦一開機就執行的 os 程式是什麼樣子。
@讀完有任何感想?(請至少附上五十字感想)
這書上有好多我的筆記, 不過大多不是心得, 而是我得把他的句子稍做改寫, 要不然讀來
實在不愉快。
明明組合語言對岸是稱為匯編, 真不知道為什麼繁體中文版本變成編譯, 偏偏這又會讓人
誤會是要編譯 C 語言的那個意思, 這可讓我手動改了不少次。
還有使用者/被使用者這兩個詞, 我看了很久之後才知道這是指 caller/callee, 台灣應
該是翻譯成呼叫者/被呼叫者, 讓我在權限 stack 切換那邊卡了很久。
"訪問"以台灣術語來說是"存取"的意思。例如'訪問'記憶體指的'存取'記憶體,
花了我好多時間才搞懂 ... 按!!
想不到第一版原來就很糟糕, 第一版第六章標題名為進程, 台灣應該是用行程, 但重點是
整章充斥著處理這東西, 應該是指處理程序的意思, 我大膽猜測, 這位將簡體中文轉為繁
體中文的編輯並不懂他現在在編輯的書籍是難得的中文大作, 本書被他做成這個樣子, 要
是有一天他突然懂 OS 了, 應該會很後悔自己把這本書搞砸了。
以同樣製作中國出版社的電腦書籍來說, 碁峰的程式設計師的自我修養:連結、載入、程
式庫就製作的很棒, 描述語句、翻譯辭彙在在令人讀來輕鬆愉快, 沒有奇怪的辭彙、惱人
的中國技術術語。
書中第三章的保護模式介紹我非常喜愛, 在 dos 環境下可以一個功能慢慢測試, 從進入
保護模式、權限切換、ldt 的使用、分頁表 ... 得把這些程式都看懂, 執行過一遍, 那
才能稱上了解了 x86 保護模式。不過我看得異常辛苦, 這章的知識實在是太硬, 我已經
挑戰好幾次。總算有點懂了。
我遇到的一開始困難點是組合語言, 我不算是會組合語言, 第三章有關組合語言的程式碼
實在讓我大吃苦頭, 但在努力學習之下, 我還是不會組合語言 ... 冏。
不過那沒關係, 只要學習到能夠寫 OS 的部份就夠用。
process 一章花了我不少的腦力, source code 之前沒有秘密, 透過 bochs 一步一步的
追蹤組合語言指令, 終於了解 process 切換的秘密。 不過一次要吸收 timer 中斷和
process 複雜的堆疊切換, 實在痛苦, 卡關好久之後才能理解, 不過要寫好這段程式似乎
不容易, 總是有著其他錯誤, 久久無法排除。
鍵盤驅動程式比我想的還要複雜, 若螢幕顯示的難度是 1 的話, 鍵盤驅動程式大概是
10 吧!程式碼複雜許多, 會用到類似 finite state machine 的觀念, 不過比起
process 切換, 容易多了。最後會完成一個 tty。
IPC 使用的方式是類似 micro kernel 的方式來實作, 和 linux monolithic kernel 方
式不同, 這邊也算好理解。
檔案系統以及 fork 的實作也很精彩, 我終於知道 fork 是怎麼實作的。
不過是描述 ide, 並不是 sata, 這比較可惜。
不過讀這本書有個問題, 要完全理解書上說的並非只是讀過就好, 還需要跟著實作, 用程
式碼來體驗書中的描述。這也是雖然我看完卻還是要繼續跟著書中的程式碼, 打造起一個
os。
書中知識對於工作上來說可能沒有立即的助益, 我會花時間研究完全只是為了想「知道」
從電腦一開機就執行的 os 程式是什麼樣子, 也認為完全自己動手完成所有的程式碼很
酷, 老是用別人寫好的 library, 總覺得這程式不完全是自己寫的那樣, 成就感不高。想
從這本書獲得在工作上的即戰力效應可能不高, 又要花費大量時間學習, 只推薦給有興趣
學習的同好或是學生。能在學生時代就知道這些知識是比較好的, 配合作業系統課程, 相
信能建立紮實的基礎, 面試能提到這部份的學習, 應該是大大加分。
@覺得買得有價值嗎? Yes/No
yes
@如果給一到五顆星,你給幾顆? (*****)
5
(註:如果要批評請就事論事,請勿出現人身攻擊。)
作業系統開發實戰手冊:以開發一個視窗多工作業系統為例
30天打造OS!作業系統自作入門
也可參考。這兩本我是打算用來實作 gui 部份。
--
錢要是不花, 它就是紙。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.125.239.51
推 BombCat:好有趣 08/17 08:47
推 james732:酷耶!不過這樣我會想找對岸的原始版本... 08/17 09:10
→ enthos:這本我買的是二手書,不過整箱太重沒拆封,看的是電子檔。 08/17 10:34
推 purpose:原始版本:內存、字節、位圖、堆棧 08/17 10:47
推 Bencrie: 記憶體、位元組、點陣圖、堆疊 08/17 12:19
→ manlike: word ? 08/17 13:09
推 edward13: byte吧 08/17 13:21
推 onlywig:想借題問一下 "30天打造一個OS" 這個日本人寫的書評價如何 08/17 14:32
推 snaketsai:30天我個人很不推= ="如果只是想玩玩還OK,真的要了解一 08/17 15:17
→ snaketsai:個系統的話,實在不太合。 08/17 15:18
30天打造OS 我個人蠻喜歡的, 不過最好先這過這本,
把保護模式那邊搞懂, 再看 30天打造OS 會比較好。
※ 編輯: descent 來自: 59.125.239.51 (08/17 16:46)
→ samuelcdf:宏 -> 巨集 08/17 18:08
推 codemonkey:兩本我都有,算是拿來休閒的好書 08/17 19:25
→ darthv:finite state machine你會覺得難是因為你背景偏軟吧 08/17 21:00
→ darthv:其實狀態機是相當簡單的概念喔,比多執行緒等簡單得多 08/17 21:01
這邊我是指鍵盤 driver 的難度, 雖然我覺得 finite state machine 也不簡單。
不過 parse scan code 的 finite state machine 不會太複雜。
要在 x86 保護模式下完成 keyboard driver 需要先啟動保護模式 (設定 gdt),
再初使化 8259, 設定 idt, 完成中斷程式的部份, 然後就可以讀取 keyboard
port 得到 scan code。再來才是 parse scan code 的部份。
如果是 usb 鍵盤我就不知道要怎麼處理了。
而螢幕輸出部份只要寫入記憶體位址 0xb8000 就可以了。難度差很大。
※ 編輯: descent 來自: 111.184.178.89 (08/17 21:34)
→ Ntst0:嘿嘿 08/18 00:23
→ darthv:driver一開始頭腦真的要轉一下,用硬體的角度思考 08/18 07:30
→ darthv:不過熟了就覺得都一樣簡單(或一樣難) 08/18 07:30
推 mimi0213:usb鍵盤要port整個host controller driver & usb core 08/18 08:58
→ mimi0213:& kb driver,可以參考u-boot的code在改寫,比較容易 08/18 08:59