標籤:

深入計算機底層,從幾本靠譜的書開始

計算機底層的原理很複雜,能夠把這些複雜的知識用準確,生動,通俗易懂,且具備可操作性的方式寫成文字的作者真的很了不起,而我這就有幾本這樣的書推薦給大家,它們分別是《編碼-隱匿在計算機軟硬體背後的語言》([ 美]Charles Petzold著),《彙編語言》(王爽著),《30天自製操作系統》([日]川合秀石著),下面對這幾本書做簡單的介紹。

《編碼-隱匿在計算機軟硬體背後的語言》這本書是偏向數字電路的,從硬體這一層面講解了一些基本電子元器件的工作方式,比如8位加法器,觸發器,鎖存器等等,然後再進一步將這些電子元器件組合成內存,甚至cpu,簡單的說,它就是告訴你「計算機是如何工作的」。可是當提到數字電路的時候,你腦子裡首先想到的是什麼?是那些跟一座破廟裡面的蜘蛛網一樣混亂的電路圖?晦澀難懂的概念?看似複雜的邏輯?跟枕頭一樣厚的教科書?我不知道你是怎麼想的,反正大學裡面的數字電路這門課給我的印象就是這樣,當然,我對這門課毫無興趣。可是當我看完這本書的時候,我才發現,原來數字電路不是用來死記硬背的,複雜的邏輯完全可以從簡單的邏輯入手推導過來。作者用導線,電燈泡,開關,這3個家喻戶曉的東西拼裝出一個個功能各異的元器件,然後再把元器件橫向拼裝成更複雜的器件,所以整本書的知識結構非常有層次感,在循序漸進的學習過程中,你會覺得一些原本認為複雜難懂的東西是這樣「理所當然的簡單」。更好玩的是,你完全可以把書上介紹的電路實現一遍,比如去做個內存,甚至cpu出來,你不需要去買二極體,電路板,電焊鐵,焊錫絲等等這些工具,只需要下載個《minecraft》(中文名《我的世界》)遊戲就行,這是一款模擬現實世界的沙盒遊戲,你千萬不要被這遊戲的低像素給嚇跑了,耐心點,你會發現裡面有「紅石」,「中繼器」,「開關」等等元素,你可以用它們模擬出現實中的電路。我當初就在遊戲裡面實現了一個8位加法器,如下圖所示。

這就是輸入端了,那9個開關看見沒?他可以輸入0,1(最右邊的開關是控制進位的),而紅色的一條條的就是「導線了」。

這是輸出端,最左邊這位是溢出位,右邊8位正常輸出,如果石頭上面的「火柴」一樣的東西亮了,就表明輸出是1。

那天晚上花了很長時間才做完這個加法器,這時看到遠處太陽升起來,感覺特別美呢!

現在給大家看看別人做的計算器。

我的世界 紅石表達式計算器—在線播放—優酷網,視頻高清在線觀看 http://v.youku.com/v_show/id_XNzYwNjgwMjA4.html?from=y1.2-1-99.3.4-1.1-1-1-3-0

《彙編語言》不是列舉一堆的彙編指令,告訴你每個指令該怎麼用,事實上這是一本指令手冊該做的事情。我們知道機器指令(彙編語言和編譯器的產物)是和相應的cpu綁定在一起的,而作者挑選了結構簡單的8086cpu,通過講解某些關鍵指令來深入理解機器工作的基本原理,讓讀者有底層編程的體驗。有意思的是,書裡面提的很多問題以及實驗都很「邊界」,換句話說,就是能很好的考察你到底有沒有真的理解。另外,書裡面講解的很多概念,都是操作系統的基礎。

《30天自製操作系統》,看到這種N天學會xxx的書,出自本能的反應就是嗤之以鼻,是的,實際上我們很難在30天搞定,但30天不是重點。關鍵是這本書從0開始到一個完整的操作系統每一步都有源代碼,也就是說你完全可以跟著一起敲代碼,最後也能做出一個操作系統來,非常具有可操作性。事實上,我覺得最牛逼的「hello word」就是在機器通電後直接在屏幕上顯示「hello world」。

這幾本書都有一個共性,在傳授知識的方式上面很有技巧,他們通過知識屏蔽,循序漸進,類比等方式讓一個個複雜的原理變的自然,看的過程中很容易領悟,也很有快感。相反,不恰當的表達方式,完全可以做到把一個人的興趣扼殺在搖籃里,比如某些大學的教材。

推薦閱讀:

360雲盤關閉你的照片和文件怎麼辦?
你需要熟練運用的12個命令行工具
無人駕駛操作系統(OS)
一個Mac小白的自我修養
一基於事件處理的RTOS原型內核的介紹-2_概念與約定

TAG:操作系統 |