又有兩年沒有寫blog了, 這2年從做windows phone 到 android c++, 慢慢的很多觀念也有所改變了。以前一心想做c#相關的工作,現在卻感覺,什麼語言都無所謂了。公司專案挺忙,加班比較多,不忙的時候又想休息休息。 所以blog又荒廢了好久。也很少有時間早學習, 加上年紀越來越大,學習動力和熱情也越來越小了。最近乙個月不是特別忙,抽空看了看《深入理解計算機系統》、《程式設計師的自我修養》、《現代作業系統》三本書,然後順帶看了看編譯,彙編相關的知識, 也在網上查了不少資料。突然發現好多東西其實是大學裡都學過,這也算是工作6年對以前知識的乙個總體的複習吧。在不同時期看相同的書,總會有不同的收穫。
對於計算機專業畢業的人來說,後面大部分都是學校都學過,從純硬體的模擬電路,數位電路,到軟硬體相關的計算機組成原理,計算機體系結構,再就是最底層的作業系統,編譯原理,彙編,c語言,到上層存軟體的開發語言。但是很多人都覺得是枯燥的理論知識,實際這真是挺有用的東西。但是工作後基本不會接觸,所以都忘記的差不多了,看下書一段時間又忘記了,所以這次決定寫下來,算是學習筆記,也算是為一些朋友提供乙個參考。
作為乙個it工程師,用現在流行的話來說,這也是個高階大氣上檔次的工作。但是你是否真的了解你每天都在用的計算機,你又是否真的了解你自己寫的程式呢?當乙個人問你計算機是怎麼工作的時候,你會不會一臉茫然的想,我怎麼從來沒想過這個問題?
我們的**是如何被編譯成可執行檔案的?
程式是如何被cpu執行的?
程序和執行緒到底是什麼東西?
cpu的指令和組合語言和程式庫和開發語言有什麼關係?
為什麼系統可以同時執行多個程式,是如何做到的?
.net的編譯出來的是託管**,和c++的native**執行有區別嗎?
為什麼我new了1g的記憶體空間,實際記憶體卻沒變化?
如果你能很確定的回答這些問題,那麼我有不懂的問題就應該可以向你請教了。那也麻煩你幫我找找文章中的錯誤。如果你不太清楚甚至是完全說不清,那我們就一起來學習學習。
這個系列是介紹計算機的原理,主要涉及的是軟體方面的,硬體原理只會簡單的從體系結構方面進行介紹。每乙個點都不會特別深入,一方面是沒這個能力,另一方面是沒必要,因為每乙個點可能都是厚厚的一本書。而且對於我這種基本和應用程式打交道的碼農來說,這個程度的了解也是比較合適的。整個學習過程也就是看書,查資料,再重新看書,再查資料,最後總結。裡面也會結合自己有點一點點經驗,把比較零散的點結合起來方便理解。 文章裡肯定會存在很多錯誤,希望可以指出來。
還有一些沒讀的
主要是linux相關的書比較多,但是後續文章中一些內容都是比較通用的,有些地方會寫出windows和linux的差異。其中ldd,lkd,utk三本經常看到論壇大神回答問題是說你看那看utk那裡那裡就知道了,我後來搜尋發現我也看了2本了,雖然只是了解性的看了看。
計算機原理學習(1)-- 計算機基本工作原理
計算機原理學習(2)-- 儲存器和i/o裝置和匯流排
計算機原理學習(3)-- 記憶體工作原理
計算機原理學習(4)-- 作業系統發展和程式編譯
計算機原理學習(5)-- x86-16 cpu和記憶體管理
計算機原理學習(6)-- x86-32 cpu和記憶體管理之分頁管理
計算機原理學習(7)-- x86-32 cpu和記憶體管理之分段管理
計算機原理學習(8)-- 程序的記憶體對映和記憶體共享
計算機原理學習(9)-- 可執行檔案的編譯和結構
計算機原理學習(10)-- 可執行檔案的載入和執行
計算機原理學習(11)-- 程序的記憶體布局
(tbd) 2014.4.26 update
計算機原理學習 一
作為乙個it工程師,用現在流行的話來說,這也是個高階大氣上檔次的工作。但是你是否真的了解你每天都在用的計算機,你又是否真的了解你自己寫的程式呢?當乙個人問你計算機是怎麼工作的時候,你會不會一臉茫然的想,我怎麼從來沒想過這個問題?我們的 是如何被編譯成可執行檔案的?程式是如何被cpu執行的?程序和執行...
計算機原理學習(1)
又有兩年沒有寫blog了,這2年從做windows phone 到 android c 慢慢的很多觀念也有所改變了。以前一心想做c 相關的工作,現在卻感覺,什麼語言都無所謂了。公司專案挺忙,加班比較多,不忙的時候又想休息休息。所以blog又荒廢了好久。也很少有時間早學習,加上年紀越來越大,學習動力和...
計算機組成原理學習筆記
一直以來對計算機的組成及工作原理都沒有乙個整體的認識,剛好學習到這裡了,通過系統學習,對計算機組成及工作原理有了乙個系統的 認識,這裡做個總結,交流一下。初中我們就知道計算機處理器由運算器 控制器 儲存器組成,後來我們有學習了很多的暫存器 儲存器和匯流排等知識,知識雖然多了,但是並沒有將他們合理的組...