最近買了一本計(jì)算機(jī)科學(xué)導(dǎo)論训枢,正在看,以彌補(bǔ)的自己那菜的摳腳的計(jì)算機(jī)知識(shí)醉旦,借此平臺(tái)饶米,記錄我讀書的筆記和記錄,主要是為了記錄下書中的一些文字车胡,和當(dāng)時(shí)自己的想法檬输,為了以后忘了翻著方便。來吧匈棘!
1.1 圖靈模型
首先便是這個(gè)圖靈模型丧慈,這個(gè)是1937年阿蘭圖靈提出的一個(gè)概念,這個(gè)概念針對(duì)于通用計(jì)算機(jī),大概的意思就是所有的計(jì)算都可能在一個(gè)種特殊的機(jī)器上執(zhí)行逃默。但是他個(gè)人比較喜歡研究計(jì)算機(jī)的哲學(xué)意義鹃愤,而不是建造一臺(tái)真實(shí)的計(jì)算機(jī)。(其實(shí)他1938年就發(fā)明了一臺(tái)名為巨人的計(jì)算機(jī)完域,用于破解德國密碼Enigma)软吐。
1.1.1 數(shù)據(jù)處理器
在討論圖靈模型之前,我們先引入一個(gè)東西吟税,數(shù)據(jù)處理器凹耙。根據(jù)字面意思,我們可以理解為肠仪,一臺(tái)機(jī)器肖抱,我們輸入數(shù)據(jù),然后這臺(tái)機(jī)器處理數(shù)據(jù)异旧,最后將處理完的數(shù)據(jù)輸出虐沥。類似下圖
是不是有點(diǎn)類似我們用過的計(jì)算器,但是這里的處理只是一種單一的處理泽艘,比如只處理加法欲险。想象一下,如果處理器的能夠處理的數(shù)據(jù)和類型很多匹涮,而且能夠處理大量的數(shù)據(jù)天试,這是不是就有點(diǎn)計(jì)算機(jī)的意思的。
1.1.2 可編程數(shù)據(jù)處理器
圖靈模型中還添加了一個(gè)元素----------程序然低。程序就是用來告訴計(jì)算機(jī)對(duì)數(shù)據(jù)進(jìn)行處理的指令集合喜每,說的通俗點(diǎn)就是對(duì)數(shù)據(jù)進(jìn)行一系列的操作,程序就是這堆操作集合在一起雳攘。
關(guān)于程序带兜,還衍生了3個(gè)特點(diǎn):
1.在同一個(gè)程序下,輸入不同的數(shù)據(jù)吨灭,會(huì)有不同的結(jié)果
2.在不同的程序中刚照,輸入相同的數(shù)據(jù)。會(huì)有不同的結(jié)果
3.相同的程序下喧兄,輸入相同的數(shù)據(jù)无畔,其結(jié)果一定相同
1.1.3 通用圖靈機(jī)
這個(gè)概念就是,一臺(tái)機(jī)器只要提供了合適的程序就能做任何運(yùn)算吠冤。也就是說浑彰,假設(shè)有有臺(tái)強(qiáng)大的計(jì)算機(jī)和一臺(tái)通用圖靈機(jī),只要給通用計(jì)算機(jī)提供了合適的程序拯辙,通用圖靈機(jī)就能和強(qiáng)大的計(jì)算機(jī)一樣運(yùn)行郭变,這里其實(shí)我還是要吐個(gè)槽的,配置跟不上還是沒有強(qiáng)大的計(jì)算機(jī)牛逼的。
1.2 馮 · 諾依曼模型
終于該這位哥裝逼了诉濒,這位哥在圖靈模型的基礎(chǔ)上了些東西周伦。基于通用圖靈機(jī)建造的計(jì)算機(jī)都是在存儲(chǔ)器中存儲(chǔ)數(shù)據(jù)循诉,并且程序和數(shù)據(jù)在邏輯上是相同的,所以程序也能夠存儲(chǔ)在計(jì)算機(jī)的存儲(chǔ)器中撇他。
1.2.1 4個(gè)子系統(tǒng)
根據(jù)馮 · 諾依曼模型建造的計(jì)算機(jī)分為4個(gè)子系統(tǒng):存儲(chǔ)器茄猫、算術(shù)邏輯單元、控制單元和輸入/輸出單元
1.存儲(chǔ)器
存儲(chǔ)器主要用來儲(chǔ)存數(shù)據(jù)和程序
2.算術(shù)邏輯單元
算術(shù)邏輯單元(ALU)是用來進(jìn)行計(jì)算和邏輯運(yùn)算的地方困肩。加減乘除什么的(我這個(gè)說的比較膚淺)划纽。
3.控制單元
控制單元是對(duì)存儲(chǔ)器、算術(shù)邏輯單元锌畸、輸入/輸出等子系統(tǒng)進(jìn)行控制操作的單元
4.輸入/輸出
輸入子系統(tǒng)就是通過計(jì)算機(jī)外部接受數(shù)據(jù)和程序勇劣,輸出子系統(tǒng)就是負(fù)責(zé)將整個(gè)計(jì)算機(jī)處理結(jié)果輸出到計(jì)算機(jī)外部。比如電腦打開一個(gè)TXT文件潭枣,讀取里面的內(nèi)容就是一個(gè)輸入的過程比默,將硬盤里面的數(shù)據(jù)讀出來,在TXT文件里面寫東西然后保存就是一個(gè)輸出的過程盆犁,你懂的命咐。
1.2.2 存儲(chǔ)程序概念
馮 · 諾依曼模型要求程序要存儲(chǔ)在內(nèi)存中,這和早期只存儲(chǔ)數(shù)據(jù)的計(jì)算機(jī)結(jié)構(gòu)是不一樣的⌒乘辏現(xiàn)代的計(jì)算機(jī)的存儲(chǔ)單元是用來存儲(chǔ)程序及其響應(yīng)數(shù)據(jù)醋奠,這說明數(shù)據(jù)和程序應(yīng)該具有相同的格式,這是因?yàn)樗麄兌即鎯?chǔ)在存儲(chǔ)器中伊佃,實(shí)際上他們都是以位模式(0和1的序列)存儲(chǔ)在內(nèi)存中的窜司。
1.2.3 指令的順序執(zhí)行
馮 · 諾依曼模型中的一段程序是由一組數(shù)量有限的指令組成,根據(jù)這個(gè)模型航揉,控制單元從內(nèi)存中取出一條指令塞祈,解釋指令,然后讀取指令帅涂,也就是說织咧,指令是一條一條的執(zhí)行的,當(dāng)然漠秋,也有可能控制單元跳過這條指令執(zhí)行下一條指令笙蒙,或者再去執(zhí)行一條已經(jīng)執(zhí)行過了的指令,這并不意味著指令沒有按照順序來執(zhí)行庆锦。
1.3 計(jì)算機(jī)組成部分
三大部分:計(jì)算機(jī)硬件捅位、數(shù)據(jù)和計(jì)算機(jī)軟件
1.3.1 計(jì)算機(jī)硬件
當(dāng)今的計(jì)算機(jī)硬件基于馮 · 諾依曼模型,并且包含那四個(gè)部分。
1.3.2 數(shù)據(jù)
馮 · 諾依曼模型沒有說明具體怎么存儲(chǔ)數(shù)據(jù)艇搀,但是如果一臺(tái)計(jì)算機(jī)是電子設(shè)備尿扯,那么最好的方式應(yīng)該就是電子信號(hào),出現(xiàn)和消失來記錄數(shù)據(jù)焰雕,所以這樣就只有2種狀態(tài)衷笋,那么我們使用二進(jìn)制就會(huì)相當(dāng)方便。那么存儲(chǔ)圖片視頻怎么辦矩屁,首先會(huì)將圖片視頻轉(zhuǎn)化為二進(jìn)制的形式辟宗,再加以存儲(chǔ)。那么這樣就會(huì)導(dǎo)致二進(jìn)制相當(dāng)龐大吝秕,這時(shí)候就要將相同的數(shù)據(jù)組織在一起泊脐,形成一個(gè)單位(套路),再把這些單位組織在一起形成更大的單位烁峭,這樣會(huì)使我們很方便的控制這些數(shù)據(jù)容客。
1.3.3 計(jì)算機(jī)軟件
圖靈或馮 · 諾依曼模型的主要特征是程序的概念。既然扯到程序约郁,就免不了編程了缩挑,早期的程序員(工程師?操作員鬓梅?)還是很苦逼的调煎,編程就是一個(gè)撥動(dòng)開關(guān)的過程,以及配線的變化己肮,很麻煩士袄。
在馮 · 諾依曼模型中,不但要存儲(chǔ)數(shù)據(jù)谎僻,還要存儲(chǔ)程序娄柳,并且要求程序要是有序的指令集,指令可以改變指令艘绍。而且要找到合適和指令來解決問題赤拒。當(dāng)問題變的很大的時(shí)候,指令已經(jīng)太多太多了诱鞠,想想挎挖,天天按波動(dòng)開關(guān)的那些工程師是有多麻煩,于是科學(xué)家就研究出利用符號(hào)代表位模式航夺,計(jì)算機(jī)語言就誕生了蕉朵,自從誕生了計(jì)算機(jī)語言后,編程就變的非常方便了阳掐,并且根據(jù)編程還衍生了軟件工程的概念始衅,還包括程序設(shè)計(jì)中要嚴(yán)格遵循的原理和規(guī)則冷蚂。之后又在計(jì)算機(jī)發(fā)展演變的過程中,科學(xué)家發(fā)現(xiàn)有一系列指令對(duì)所有程序來說都是公用的汛闸,幾乎哪都在用蝙茶,如果這些指令只編寫一次,那么效率將會(huì)大大提高诸老,于是操作系統(tǒng)就出來了隆夯,所以操作系統(tǒng)最開始只是為了程序訪問計(jì)算機(jī)部件提高的一個(gè)方便的管理程序。現(xiàn)在操作系統(tǒng)當(dāng)然就更加牛逼了别伏。
總結(jié):馮 · 諾依曼模型有4個(gè)系統(tǒng)蹄衷; 存儲(chǔ)數(shù)據(jù)和程序;按照順序執(zhí)行指令畸肆。