當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 程序喵大人
[導(dǎo)讀]導(dǎo)讀:如果你也讀CS專(zhuān)業(yè),如果你也不知道怎么回答“學(xué)計(jì)算機(jī)不就是學(xué)修電腦”這個(gè)CS系的宿命之問(wèn),推薦一定讀一讀《深入理解計(jì)算機(jī)系統(tǒng)》。《深入理解計(jì)算機(jī)系統(tǒng)》是一本什么樣的書(shū)呢??jī)蓚€(gè)字,經(jīng)典。原因有二,第一,這書(shū)無(wú)數(shù)業(yè)界大牛推薦,第二,這書(shū)和你印象中的經(jīng)典一樣,給人的第一感覺(jué)就是厚...


導(dǎo)讀:如果你也讀CS專(zhuān)業(yè),如果你也不知道怎么回答“學(xué)計(jì)算機(jī)不就是學(xué)修電腦”這個(gè)CS系的宿命之問(wèn),推薦一定讀一讀《深入理解計(jì)算機(jī)系統(tǒng)》。

《深入理解計(jì)算機(jī)系統(tǒng)》是一本什么樣的書(shū)呢??jī)蓚€(gè)字,經(jīng)典。原因有二,第一,這書(shū)無(wú)數(shù)業(yè)界大牛推薦,第二,這書(shū)和你印象中的經(jīng)典一樣,給人的第一感覺(jué)就是厚實(shí)。不過(guò),厚實(shí)也很容易再給人一種感覺(jué),那就是望而卻步——你沒(méi)準(zhǔn)會(huì)想,這么厚的書(shū),又是經(jīng)典,是不是很難讀?


大可放心,一點(diǎn)也不會(huì)。


經(jīng)典也是有細(xì)分領(lǐng)域的,有很多書(shū)之所以經(jīng)典,是因?yàn)閷?duì)一些問(wèn)題進(jìn)行了很深入的探討,而《深入理解計(jì)算機(jī)系統(tǒng)》的經(jīng)典,我認(rèn)為是把計(jì)算機(jī)中被分割成很多塊的知識(shí),用一本書(shū)一口氣完整地全部整理出來(lái)。


1《深入理解計(jì)算機(jī)系統(tǒng)》為什么經(jīng)典

我們先回想一下,計(jì)算機(jī)專(zhuān)業(yè)都開(kāi)設(shè)有哪些專(zhuān)業(yè)課。首先肯定有編程,這個(gè)專(zhuān)業(yè)很大一部分工作是要給碼農(nóng)培養(yǎng)接班人。編程的一個(gè)重要環(huán)節(jié)是編譯,那設(shè)計(jì)編譯器要開(kāi)一門(mén)課,叫編譯原理。編譯完了要運(yùn)行,運(yùn)行需要依賴(lài)硬件環(huán)境和軟件環(huán)境,于是就有了計(jì)算機(jī)組成原理和操作系統(tǒng)。如果早個(gè)二三十年,計(jì)算機(jī)的知識(shí)體系到這就差不多了,不過(guò)現(xiàn)在可是網(wǎng)絡(luò)時(shí)代,所以還得再加一門(mén)課,叫計(jì)算機(jī)網(wǎng)絡(luò)。這還是往大了分,細(xì)分就更多了,光編程語(yǔ)言就有好幾種,而且別忘了背后還有一堆的各種數(shù)學(xué),就不細(xì)說(shuō)了。


計(jì)算機(jī)技術(shù)蓬勃發(fā)展,學(xué)科體系自然枝繁葉茂,但學(xué)計(jì)算機(jī)很容易就像在追冰與火之歌一樣,世界觀太宏大支線(xiàn)劇情太多,眼前很難呈現(xiàn)出一幅完整的圖景。所以當(dāng)時(shí)我們學(xué)各門(mén)學(xué)科的時(shí)候,大家問(wèn)的最多的不是學(xué)科本身的某個(gè)知識(shí)點(diǎn),而是“為什么要學(xué)這門(mén)課”。剛才我把各個(gè)主要科目串了一串,讀完應(yīng)該會(huì)對(duì)各科之間的關(guān)系有一個(gè)更宏觀的了解。


可是,光有這么一句話(huà)肯定還有很多問(wèn)題沒(méi)法解決。有沒(méi)有一本書(shū)專(zhuān)從這個(gè)角度講計(jì)算機(jī)科學(xué)呢?計(jì)算機(jī)科學(xué)有很多經(jīng)典的書(shū),但大多數(shù)都是專(zhuān)注各個(gè)領(lǐng)域的內(nèi)部知識(shí),不過(guò)好在還真有一本經(jīng)典的書(shū),是從計(jì)算機(jī)的角度來(lái)看待計(jì)算機(jī),這就是《深入理解計(jì)算機(jī)系統(tǒng)》。


我當(dāng)初讀《深入理解計(jì)算機(jī)系統(tǒng)》,讀完就是一個(gè)感覺(jué),淋漓暢快。感覺(jué)腦子里很多零星的碎片,讀完以后都拼在了一起?!渡钊肜斫庥?jì)算機(jī)系統(tǒng)》書(shū)很厚,講的也深入,但深入的是知識(shí)點(diǎn)與知識(shí)點(diǎn)之間的關(guān)聯(lián),也許很多正好都是你深感困擾的問(wèn)題,讀完很容易讓你有種“哦,原來(lái)是這樣”的感嘆,節(jié)省了很多去苦苦思索的時(shí)間。寫(xiě)本文的時(shí)候我特意看了一下大家對(duì)《深入理解計(jì)算機(jī)系統(tǒng)》的書(shū)評(píng),果然很多人感受和我一樣,相見(jiàn)恨晚。


2《深入理解計(jì)算機(jī)系統(tǒng)》都寫(xiě)了什么


《深入理解計(jì)算機(jī)系統(tǒng)》這本書(shū)起源于卡內(nèi)基梅隆大學(xué)(CMU)的一門(mén)課,叫計(jì)算機(jī)系統(tǒng)導(dǎo)論(ICS)。這門(mén)課相信計(jì)算機(jī)系的學(xué)生都不會(huì)陌生,一般都是作為第一門(mén)專(zhuān)業(yè)課開(kāi)設(shè)的,內(nèi)容基本就是回答大家剛?cè)肟訒r(shí)最想知道的那個(gè)問(wèn)題:學(xué)計(jì)算機(jī)都學(xué)些什么。對(duì)于我來(lái)說(shuō),這是當(dāng)時(shí)唯一一門(mén)從計(jì)算機(jī)整體視角來(lái)開(kāi)展介紹的課程,在那以后,我們就被扔進(jìn)各個(gè)子學(xué)科里面撲騰,再也難一窺全貌。


《深入理解計(jì)算機(jī)系統(tǒng)》的作者們很謙虛,說(shuō)這本書(shū)起源于ICS,但經(jīng)過(guò)3版的不斷擴(kuò)充內(nèi)容,涵蓋范圍已經(jīng)很廣,現(xiàn)在也可以作為計(jì)算機(jī)組成原理(ORG)和系統(tǒng)編程(SP)的教材,但我覺(jué)得,這本書(shū)的用途遠(yuǎn)不止于“教材”。


相信每個(gè)學(xué)完計(jì)算機(jī)的學(xué)生都會(huì)認(rèn)同,學(xué)計(jì)算機(jī),編程也好其它什么也好,最佳的方法就是動(dòng)手,親自動(dòng)手做一次,比看什么書(shū)都掌握得牢靠。但是,這就帶來(lái)一個(gè)悖論:學(xué)計(jì)算機(jī),最好的方法就是去做一臺(tái)計(jì)算機(jī),計(jì)算機(jī)專(zhuān)業(yè)教的內(nèi)容一言蔽之,確實(shí)就是怎樣去制造計(jì)算機(jī)運(yùn)行的各個(gè)所需部件,但限制條件非常多,真正動(dòng)手?jǐn)]一臺(tái)計(jì)算機(jī)不太現(xiàn)實(shí)。


那怎么辦呢?我經(jīng)常在B站圍觀大牛完成各種精巧的小玩意,看了一遍,感覺(jué)自己也像是做了一遍,雖然肯定沒(méi)有自己動(dòng)手來(lái)得實(shí)在,不過(guò)肯定比只看純描寫(xiě)要好得多。那我們是不是能退而求其次,“看”別人一個(gè)部件一個(gè)部件地?cái)]一臺(tái)計(jì)算機(jī)呢?《深入理解計(jì)算機(jī)系統(tǒng)》就是從這個(gè)理念出發(fā)寫(xiě)成了本書(shū)。


3《深入理解計(jì)算機(jī)系統(tǒng)》第3版都改了什么


《深入理解計(jì)算機(jī)系統(tǒng)》是一本經(jīng)典書(shū),現(xiàn)在已經(jīng)出到了第3版,正好我手里第2版和第3版都有,順手先一個(gè)比較。


總的來(lái)說(shuō),第3版基本沿用了第2版的框架,但也有不少變化。首先第3版有兩個(gè)直觀變化,一個(gè)是更厚了一點(diǎn),一個(gè)是印刷更好看了,第2版是最經(jīng)典的黑白印刷,第3版加入了藍(lán)色,正好這本書(shū)里面很多代碼圖表,看起來(lái)更醒目了。


在內(nèi)容上第3版也做了大量修改。第2版和第3版大概相差10年,在第2版上市的時(shí)候,IA32架構(gòu),也就是我們俗稱(chēng)的32位指令集還是主流,但到了現(xiàn)在,已經(jīng)是64位指令集,也就是x86-64的天下了。第3版也體現(xiàn)了技術(shù)的變化,指令集的表現(xiàn)形式均采用64位。指令集是非常底層的東西,所以這部分牽涉了很多內(nèi)容,書(shū)里都做了全面調(diào)整。


另一個(gè)內(nèi)容上的大改動(dòng)是API的升級(jí),譬如在第11章,第3版用新的getaddrinfo和getnameinfo函數(shù)取代了老版的gethostbyname和gethostbyaddr。


此外還有不少細(xì)節(jié)上的調(diào)整甚至重寫(xiě),也對(duì)一些容易讓人困擾的知識(shí)點(diǎn)進(jìn)行了擴(kuò)充說(shuō)明,總的來(lái)說(shuō)閱讀體驗(yàn)比上一版更好。

4《深入理解計(jì)算機(jī)系統(tǒng)》漫游指南

《深入理解計(jì)算機(jī)系統(tǒng)》一共12章,分成程序結(jié)構(gòu)和執(zhí)行、在系統(tǒng)上運(yùn)行程序和程序間的交互和通信三個(gè)部分,涉及了計(jì)算機(jī)技術(shù)的方方面面,橫跨多個(gè)科目。下面我就毛遂自薦充當(dāng)各位的導(dǎo)游,和大家一起逐章看看都講了哪些內(nèi)容。


第一章,章名就叫“計(jì)算機(jī)系統(tǒng)漫游”,可以認(rèn)為是這本書(shū)的“計(jì)算機(jī)導(dǎo)論”課,以一個(gè)hello程序?yàn)橹骶€(xiàn),串起了從編代碼到程序執(zhí)行整個(gè)過(guò)程都經(jīng)歷了哪些環(huán)節(jié)。最后有一個(gè)知識(shí)點(diǎn),叫“Amdahl定律”,研究各個(gè)部件的性能提升和整體性能提升的關(guān)系。


第二章,叫“信息的表示和處理”,介紹了一些數(shù)字邏輯的內(nèi)容,也就是計(jì)算機(jī)的“計(jì)算”部分。計(jì)算可分為數(shù)值類(lèi)型和運(yùn)算類(lèi)型兩個(gè)組成部分,在數(shù)學(xué)體系里,數(shù)的類(lèi)型有很多,譬如自然數(shù)、整數(shù)、有理數(shù)、無(wú)理數(shù)、代數(shù)數(shù)、超越數(shù)、實(shí)數(shù)等等,光數(shù)系都是數(shù)學(xué)里的重點(diǎn)研究對(duì)象,不過(guò)別擔(dān)心,計(jì)算機(jī)里邊就簡(jiǎn)單多了,目前只分為整數(shù)和浮點(diǎn)數(shù)兩類(lèi)。

第二章也是“程序結(jié)構(gòu)和執(zhí)行”部分的第一章,往下都是從機(jī)器角度看程序構(gòu)造。


第三章,叫“程序的機(jī)器級(jí)表示”,名字挺拗口,其實(shí)說(shuō)的就是指令集的事。計(jì)算機(jī)專(zhuān)業(yè)一般不會(huì)為CPU指令集專(zhuān)門(mén)開(kāi)一課,很多知識(shí)點(diǎn)和匯編語(yǔ)言說(shuō)的內(nèi)容重合,前面說(shuō)的全面調(diào)整為x86-64體系,在這個(gè)部分體現(xiàn)得很充分。


第四章,叫“處理器體系結(jié)構(gòu)”,講的是CPU的工作原理。不要和上一章搞混了,CPU的指令集,和CPU本身的結(jié)構(gòu)原理有關(guān)系,但不完全是一回事,這一章更多的是邏輯電路相關(guān)的內(nèi)容,介紹諸如時(shí)鐘周期、流水線(xiàn)等偏硬件內(nèi)容。


第五章,叫“優(yōu)化程序性能”,章名就已經(jīng)很明確,劃分知識(shí)點(diǎn)的話(huà)大部分屬于編譯原理范疇。我們上編譯原理主要講的是各種文法和實(shí)現(xiàn)諸如詞法器這類(lèi)的部件,不過(guò)這都屬于基本功,真正的重點(diǎn)和難點(diǎn)在于優(yōu)化。當(dāng)然程序性能優(yōu)化不止編譯優(yōu)化,這是一套體系,還有內(nèi)存、存儲(chǔ)等多個(gè)地方都可以進(jìn)行優(yōu)化。要想看編譯原理的基本功部分,推薦看龍書(shū)。


第六章,叫“存儲(chǔ)器層次結(jié)構(gòu)”,就是我們所說(shuō)的內(nèi)存外存了,涉及磁盤(pán)構(gòu)造、緩存設(shè)計(jì)等等問(wèn)題。


第七章,叫“鏈接”,這是源碼編譯的一個(gè)重要環(huán)節(jié)?;貞浺幌戮幾g原理對(duì)編譯過(guò)程的介紹,源碼編譯不是直接從源碼編譯成目標(biāo)代碼,也就是不是直接生成機(jī)器碼,而生成一種叫“中間代碼”的產(chǎn)物。以中間代碼為界,前面叫“前端”,對(duì)應(yīng)的還有一個(gè)“后端”,就是通過(guò)中間代碼最終生成目標(biāo)代碼,鏈接就是這個(gè)過(guò)程的一個(gè)重要環(huán)節(jié)。第七章也是“在系統(tǒng)上運(yùn)行程序”部分的第一章,往下主要是從操作系統(tǒng)的角度看程序運(yùn)行性的各種情況。


第八章,叫“異??刂屏鳌保爱惓!边@個(gè)概念大家肯定都聽(tīng)過(guò),不過(guò)這里主要指的是操作系統(tǒng)中的異常及中斷的工作流程,不過(guò)也簡(jiǎn)要討論了高級(jí)編程語(yǔ)言中的異常。


第九章,叫“虛擬內(nèi)存”,虛擬內(nèi)存在現(xiàn)代操作系統(tǒng)中非常重要,這一章主要討論虛擬內(nèi)存的各種管理機(jī)制,以及現(xiàn)在很熱門(mén)的垃圾收集(GC),還延伸了一點(diǎn)安全人員很感興趣的內(nèi)存泄露方面的討論。


第十章,叫“系統(tǒng)級(jí)IO”,主要介紹文件系統(tǒng)的讀寫(xiě)等操作接口。要是能對(duì)文件系統(tǒng)本身多展開(kāi)一點(diǎn)內(nèi)容就更好了。這一章也是“程序間的交互和通信”部分的第一章,往下說(shuō)的就都是各種IO了。


第十一章和第十二章分別介紹了“網(wǎng)絡(luò)編程”和“并發(fā)編程”,至此主流的各種IO就全部介紹了一遍。

5
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話(huà)語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉