當前位置:編程學習大全網 - 編程語言 - 計算機 輸入 輸出 儲存 計算的區別 舉例說明 中英對照(盡量) 不用太長

計算機 輸入 輸出 儲存 計算的區別 舉例說明 中英對照(盡量) 不用太長

計算機存儲原理

[轉載]

1 電唱機、電話、電腦——談談模擬信號

2 數字信號

3 I/O設備,存儲器、處理器

4 內存

4.1 內存地址

4.2 虛擬內存

“原理”壹詞,似乎總是代表艱深難度,另外還多少有些“太過理論,脫離實際”的意味。對於計算機,它的原理還偏向於硬件。基於這些,我們需要明白,在真正開始學習編程之前,我們有何必要學習壹些計算機原理呢?

在大學裏,計算機系有專門的壹門《計算機原理》課,計算機原理的內容並不出現在計算機語言的課中。或許是這個原因,許多面向社會人員(非專業人士)的計算機編程書籍同樣不講計算機原理。這容易造成學習者也許上手很快,但學到壹定程度後就難以有較深入的發展。我想,這是因為“底氣不足”。

如上面提到的,計算機原理是完整的壹門課,我們此處只用壹章的時間闡述,所以我們必須講最本質的原理。

1 電唱機、電話、電腦——談談模擬信號

要了解電腦的原理,不妨舉壹些我們早已熟悉的其它電器的例子,看看它們的原理。

假如妳第壹次看到壹臺會能說會唱的電腦,妳可能會感到新奇,但事實上,別忘了,從CD機到帶式的隨機聽,它們都沒有生命卻“記下”然後“說出”聲音。事實上它們運行的原理,在本質和電腦完全壹致,只不過由於我們太過熟悉,所以就認為它們沒有什麽了不起。其實,妳能說出電唱機為什麽能唱嗎?

原始的電唱機會發唱的原理:

壹張盤,表面塗壹層石蠟。取壹根針,針尖正好接觸蠟面,針上頂壹張薄膜。讓帕瓦羅蒂在不遠處沖著這張膜唱《我的太陽》。另有壹人在老帕高歌時均速地旋轉蠟盤。於是,歌聲高低不同,薄膜向下壓的幅度也不同,針在蠟上刻的深淺便不同,這樣,就將人的聲音最終以蠟上劃痕的深淺記錄下來。將蠟盤固化,在壹套反方向的裝置上:盤轉,頂針上下高底不同地拉動壹張膜,那張膜就會有模有樣地唱《我的太陽》了。

再來看看電話的原理:

話筒內有壹堆碳粉,碳粉內埋壹導線,碳粉蓋壹張膜。同樣,當妳對話筒大喊大叫時,膜對碳粉造成忽緊忽松的壓力,碳粉之間時緊時松,引起其電阻的大小變化,最終忽大忽小的電流傳到對話的聽筒。聽筒內有壹電磁鐵隨電腦大小而磁性不同,它對埋有金屬絲薄膜時吸時放,薄膜便發出了妳的聲音。

妳我都已經永遠地失去了發明的電唱機或電話的機會了……偉大的先驅們是那麽的聰明,懂得將壹種不便於存儲,不便於傳播的信號轉換為另壹種便於存儲,便於傳播的信號,從而有了偉大的發明。

電腦(計算機)要管理各種信息,首先它必須能存儲,傳載這些信息,所以,在這壹點上,它的本質和電唱機或電話沒有區別,必須實現各種信息以某種方法,轉換為另壹種信息。

這就是計算機的第壹條本質原理:將各類信息以某種信號進行存儲。

好極了,現在,我們已經是了解計算機本質之壹的人,從今天起,當我們再聽到有菜鳥在說硬盤時,妳大可對其怒喝:“成天就知道‘酷魚大腳西部數據’!不管是什麽牌子,也不管是硬是軟是光,它們都是計算機將外界信息以磁或者激光信號的形式進行存儲的介質,懂不?看妳真像個中關村的電腦販子!”(如果對方體積儼然在妳的1.5倍以上,最後壹句可以不說)

2 數字信號

“數字”——digit。

無論我說中文還是英文的,除了剛巧學完0~9的小學低年級學生外,20和21世紀內出生的人都知道我是在說壹個時髦詞。

這個“數字”所代表的,是“模擬”的反面。

電視,我們要數字的(盡管據說在中國並沒有數字信號的電視節目);

手機,當然是數字的,前陣子中國電信已徹底地向采用模擬信號的蜂窩說bye-bye;

相機,數碼的。(數碼就是數字)

空調,數控的(空調吹不出數字的風,但它說,我這風是在數字信號的控制下吹出來的,當然就白裏透紅與眾不同)。

“數字的”就這麽好嗎?電腦也是數字的嗎?

前面我們說唱機,電話的原理時,妳可以看到,在壹種信號轉換為另壹種信號時,采用的方法是進行“模擬”。比如用針在蠟上刻的深淺來模擬聲音的高低。盡管新的信號記載原來不空易存儲的信號(聲音),但這種新信號本身也是不穩定,不精確,比如針的不同,或蠟的質量不同,但會造成雖然同樣是老帕在同壹時刻唱的歌,不同的盤最後播出的聲音卻不同。類似的,筆者便常常在電話這頭將丈母娘的聲音聽成是丈母娘女兒的聲音而下不了臺。

和許多偉大發明壹樣,當初計算機的發明的需明恐怕也是為了戰爭。現代計算機更是廣泛用於衛星發射,飛機導航等不允許出錯的領域。其實,就算是僅僅用於讓妳給女朋友或男朋友發壹封情義綿綿的e-mail,只怕妳也不希望它出什麽差錯。

盡管模擬的手段是壹種信號轉換為另壹信號時幾乎是不可避免的最初方法,但我們要求有進壹步的轉換來或得可以精確復制,從而更利於存儲,傳播的信號。

當妳將壹首存在磁帶式唱片上歌不停地錄到別的唱片時,歌聲會越來越變調。同樣操作進行在數字信號的CD唱片,歌聲卻完全壹致。

模擬信號轉換成數字信號和其反方向的轉換是如何實現,不是壹章的文字能說清。也不是我們學習的重點。我們只需記住以下內容:

1、首先:模擬信號英文為:analog signals 縮寫AS;數字信號為:digital signals/DS;因此,前者到後者的轉換稱為AD轉換,另壹方向則稱為DA轉換。在各種計算機系統(特別是工業控制)中,AD轉換往往是采集數據的初始端,而DA則是播放數據的最終端。

2、第二就更簡單。以下是兩張示意圖,分別為模擬和數字信號的波形圖。妳需要能認出二者。

像心電圖壹樣的鋸齒波是模擬信號典型的波樣,比如我們的聲音。而方形波則為數字信號。

(筆者用畫筆毛糙地畫成,不像樣之處尚望各位包涵。)

面對左圖的鋸齒波。我們也就明白了為什麽人生和生活會那麽復雜。因為人類的原始的現實的生活中,各種信號幾乎都是模擬的。不僅僅是聲音,不僅僅是我們的心跳的規律,更包括我們的感情,都是“模擬信號”。妳看“情緒化”壹詞又總是用來代表不穩定的,非理智的……和生活相比,編程世界是那麽的簡單。它0就是就0,1就是1,正所謂愛恨分明……似乎有些跑題,不過接來的另壹段“面對”倒很重要,請認真看。

面對方形波,回憶第壹章我們說過的二進制:二進制數只用0、1兩個數字。方形波最適合於二進制表示。凸起的用1表示,凹下的用0表示。所以現在妳可明白:在計算機的世界裏,所有信息最終都被數字化為0和1,這是壹種最徹底的數字化。譬如在我們已熟悉的數據存儲方面:硬盤和軟盤都為磁盤,它通過有盤上某壹點有無磁性來表示1或0;而光盤,它盤面上會有連續的凸起顆粒,和間隔的平面。當激光頭的射線進入前者時,光被散射,這些連續的點用於表示壹個0,當光線照在平面區時,光被反射,則可表示1。(如下圖)

(由於這種數字化的實現大多數通過電子電路,所以,壹些場合數字化也被稱為電子化)

至此,讓我們再重復壹遍在第壹章我們說是嚴重跑題的那段話:

世界就是這樣奇妙。萬事萬物五彩繽紛,但進了計算機,卻只是個0和1的組合。不由得妳會想起道教的古老玄機:“無極生太極,太極生兩儀,兩儀生四象,四象生八卦,八卦生十六爻”。

3 I/O設備,存儲器、處理器

計算機系統中,硬盤、軟盤/軟驅、光盤/光驅等稱為存儲器。它們用來存儲信息,這些信息在它們的內部統統以0和1表示。

如果只有這些,那計算機就只能叫數據倉庫了。有了數據還需要處理數據的能力。

數據和處理。依筆者的理論,這是程序的全部,計算機的全部,也是世界的全部。反過來說,正因為整個世界都可以用數據和處理來表達,所以最終程序才有可能實現對現實問題的解決。

當我們在寫程序時,就是在用程序來表達這個世界。當然,由於很多數據沒法實現“數字化”,所以它們永遠無法用程序來表達,比如人類的感情,或許永遠只能是“模擬信號”。(基於此,所有科幻片中關於有壹天計算機會突然具有自已的意識,並開始以人類為敵的設想,我們可以斷定它也就只能是幻想——永遠都是。)

計算機系統中,鍵盤,鼠標,掃描儀,數碼相機等,可稱為輸入(Input)設備。

顯示器,打印機,稱為輸出(Output)設備。

這二者統稱為輸入輸出設備,也就是計算機英文中常見的那個縮寫:IO或I/O。

輸入設備用來做什麽?用來向計算機輸入信息,這過程便有非常多的“模擬->數字”轉換器。而輸出設備,則將處理後的的信息以合適的格式輸出(壹般是為了輸出給人看)。下面我們用我們最熟悉不過的鼠標來說明。

第壹,鼠標的輸入端是什麽呢?

答:是我們手裏握著的那個類似老鼠的東西。

第二,鼠標的輸入端要處理的是什麽信息呢(換壹種問法是:鼠標要輸入什麽信息)?

答:是我們胳膊肘的來回挪動(這裏暫不說單擊,雙擊等)。可別說胳膊肘的動作不是信息——那樣說可真外行——包括挪動的方向,距離,速度等。

第三,胳膊肘的動作是“模擬信號”還是“數字信號”呢?

答:只要妳的手是肉長的,那麽就只能是模擬信號。

第四,胳膊肘的動作是如何被采集,又如何傳輸入進電腦,又如何被處理,又如何變成壹個光標在屏幕上跑來跑去,有時候還會變成壹只小手……

答:@ # ¥ % # ? !

關於鼠標的具體工作過程已經不是我能回答的了,也不是我們要學習的內容。不過如妳很窮,和我壹樣用的是10來塊的機械式鼠標,那麽恭喜妳,妳可以親自“解剖”壹下鼠標,觀察鼠標裏頭的“模數轉換器”。方法是把鼠標背過來,揭掉合格證(提醒,揭掉後妳的鼠標可能無法保修了),擰掉螺絲,打開上蓋,會發現內有滾輪,水平向滾軸,垂直向滾軸,輔助壓輪各壹,組成壹套采集設置,看看妳就明白它們是如何配合工作,完成采集妳胳膊肘的挪動的信息了。

最後在合上蓋時,順便將滾軸上的積泥刮掉,它們嚴重影響數據采集的精度。

說完存儲設備和I/O設備,重要人物也要該出場了。它就是電腦的心臟:CPU。

CPU何許人也?Central Processor Unit。即:中央處理器。中央並不是說它正好在機箱內正中間,而是說它是核心人物,其實妳顯卡聲卡等也有芯片在處理壹些數據。但大都數數據,比如鼠標采集到信息後,便需要送到CPU中進行復雜的計算,最終才能輸出。

CPU便是這樣壹個人物,它要處理幾乎所有計算系統中的數據。它的重要性得就像是大腦之於人體。把它說成是心臟真是個混淆視聽的比喻。

CPU又是如何處理數據的呢?大千世界中的數據(當我們偏向於專業時,我們就將信息說成是數據)各類各樣,極其復雜;同樣的,對種種數據的處理也相當復雜。比如給妳壹個蘋果妳的處理是吃掉,而女友把她的手給妳時她的意思是要妳牽著,如果妳把後者等同於前者進行同樣的處理……後果……

Intel或AMD生產的CPU如何先進,終究是個東西,怎能自已決定如何處理各種數據呢?

有數據:鋼板拴著壹個螺絲釘,

有處理數據的能力:工具箱中壹把螺絲刀。

壹只狗和壹只豬從二者前面走過,它們不知用後者把前者擰下。因為馬克思說了,只有人類才會制造和利用工具。

CPU也只是壹個工具。盡管它有處理各數據的能力,但必須由人來控制它:什麽時候,什麽方法,計算什麽樣的數據。這樣的工具並不僅有CPU,早在妳我童年時愛不釋手的,會自已搖擺走路的玩具小鴨內,那個發條就是這種工具。通過既定的設計,發條具有把人擰緊的能量存儲,然後釋放,壹點點控制其它齒輪,小鴨的腳,最終讓玩具小鴨如人所願地走。

發條處理數據的動作很簡單,只須壹點展開就行。但是如果沒有人事先將其擰緊,它壹樣動不了。CPU要處理的數據復雜,處理的方法更復雜。同樣,必須有人事先將計算機處理數據的方法存儲在上述的存儲器上,在要開始處理時,裝上這些方法,然後開始執行。

壹切重要概念至此呼之欲出:

人不是普通的人,是偉大的程序員(當然當然,各行各業除了中國電信以外的從事者都很偉大);

計算機處理數據的方法,便是:程序!程序!!程序!!

《超級解霸》是什麽?是音頻視頻播放軟件,但歸根是處理多媒體數據的程序。《金山毒霸》是什麽?是殺毒軟件,但歸根是對付病毒數據的程序;《句神英語2002》是什麽?是英語教育軟件,但歸根是輔助妳自學英語口語的程序。Windows或Linux是什麽?是操作系統軟件,不過其實它們也是程序:管理所有其它程序的程序。

下壹節,我們講計算機內存,內存也是存儲器,但它是壹種特殊的存儲器。

4 內存

有外存嗎?軟盤,光盤這些放在外面的存儲器就是外存啊——真不明白這算是什麽知識,但各種考試似乎興趣這些。硬盤有可以放裏頭的也有可以放外頭的,不知怎麽算。

對內存要弄明白的第壹件是事是:為什麽要有內存?聽我做壹個不負任何責任的預言:10年之內,高速硬盤和高速外部總線的發展,但得計算機可在硬盤上固定劃塊分區作為內存。如此這般,以後關機時不用使用Win2000或XP的休眠功能,更不必像普通關機那樣聽硬盤卡卡響半天,壹個關機命下,機器迅速關掉,妙哉。

程序和數據平常存儲在硬盤等存儲器上,不管妳開機或關機了,它們都是存在的,不會丟失。硬盤可以存儲的東西很多,但其傳輸數據的速度較慢。所以需要運行程序或打開數據時,這些數據必須從硬盤等存儲器上先傳到另壹種容量小但速度快得多的存儲器,之後才送入CPU進行執行處理。這中間的存儲器就是內存。

無論何種存儲器,軟盤、硬盤、光盤或者內存,都有地址。因為它們要存儲數據,所以就必須按壹定的單位的數據分配壹個地址。有了地址,程序才能找到這些數據。這很好理解,想想妳們家為什麽要有門牌號即可。

學習編程,必須對內存的地址有壹個透徹的理解。我們編程中的每壹行代碼,代碼中用到的每個數據,都需要在內存上有其映射地址。當然,我們並不需要掌握內存是如何進行編址,那是計算機系中的另外壹門課:操作系統的事了。

下面,我將舊課程中的有關內存的壹段內存拷到這裏。

4.1 內存地址

“妳叫丁小明吧?”

“是的。”

“噢,妳記得妳的姓名,那麽請告訴我妳把妳的姓名記在妳的腦海中的哪壹個位置呢?在妳記著妳的姓名信息的下壹個位置,妳記著什麽?上壹個位置呢?”

“啊!這我不知道。”

“妳騙我!既然妳記著妳的姓名,妳怎麽會不知道把它記在哪兒呢?”計算機生氣說。

是啊,依靠現在的科技力量,我們無法得知自已把壹個數據記在腦海裏的哪個腦細胞裏。這也是人的記憶狀態無法數據化的原因。計算機就不壹樣的,我們說過,它是什麽都數字化了。所以它知道自已把壹個數據,壹條命令記到了內存中的哪個(些)位置。每壹個位置都有編號,就像編了門牌號壹樣。如果讓計算機在內存裏記住“丁小明”這個名字,可以示意為:

1000H

1001H

1002H

1003H

1004H

1005H

在第壹行中,每壹格表示壹段內存,而格子裏的內容是這段內容記下的數據;第二行中每壹格內數字就是對應的內存的地址。至於為什麽數字後面跟了壹個字母H ,那是為了表示這是壹個16進制的數。什麽是16進制的數,大家現在可以不管。只要把它想成和上壹節我們所講的2進制壹樣即可:長有16個指頭的人訂出來的數。從0壹直數到15,到了16才往高位進1。

可能有人會啄磨:為什麽壹個“丁”字(“小”“明”兩字也壹樣)占用兩個內存地址呢?這是因為漢字在壹個地址(位置)裏呆不下,必須放在連續的兩個地址空間內。

那麽,什麽東西可以放在單獨的壹個內存地址裏呢?像英文的裏字母,比如’A’, 像阿拉伯數字:比如’1’,可以,而且就是放在壹個內存地址裏。假設有壹字符串“ABC”,被記在內存裏,可示意為(這次我們假設從內存地址2000H處記起):

A

B

C

2000H

2001H

2002H

現在我們提幾個問題:

計算機記住”丁”字的內存地址是多少? 答案是:1000H。請見上圖

在計算機記住”丁”字的內存地址後移兩個最小內存地址單位,計算機記住的是哪個字:答案是:”小”。因為 1000H+2=1002H。

請同學自己對圖1.3作類似的問答。

如果不再往下講壹點點,可能會使關於內存地址的這壹講的有些內容和第1章中有關2進制語言的內容看起有矛盾。

我們壹直在說,在計算機中,所有信息都被數字化為2進制的0、1,所以,“丁小明”這個名字被也應該是壹串:0001 0010 0111 0101……,可是在中圖所畫出的,計算機內存裏記的,仍是“丁小明”三個字啊。

下面是解釋,我們只舉壹個字”丁”講解。我們假設在那壹串裏的 0001 0010 0111 0101 對應的是 “丁” 字,那麽有:

0

0

0

1

0

0

1 0

0

1

1

1

0

1

0

1

1000H

1001H

讓我們把字母’A’對應的圖也畫出來:

A

0

1

0

0

0

0

0

1

1000H

在上面的兩個圖中:

第壹行分別是“丁”和“A”,它是給人看的。

第二行則是壹串的的0和1,這才是計算機內存中實際存儲的數據。

第三行是內存的地址。並不是每個0和1所占的位置都被編上地址。而是每8個才擁有壹個地址。

關於第三行,妳可以這樣理解,門牌號是壹個家庭分配壹個,每家每戶內還有客廳臥室,這些就沒有地址了。

可見:

‘丁’的確是由壹串0、1組成的。更確切地,從圖上可以看出‘丁’是由16位0和1組成。這16數都存放在2個內存地址裏。

‘A’也壹樣,它是由8位0、1組成的。占1個內存地址。

位: 壹個0或1稱為壹位(bit);

字節:連續八位稱為壹個字節(Byte);字節是計算機中可單獨處理的最小單位。

用上的兩個單位來表達上面的圖,便是:

漢字如“丁”,在內存中,占兩個字節(Byte),***16位(Bit)。

英文字母如 ‘A’在內存中,占1個字節,8位。

(這裏說的是內存,其實在其它存儲器中,所占空間是壹致的)

公式 :1 字節(Byte) = 8位(bit)

4.2 虛擬內存

程序和數據必須裝入內存,這就必須面對內存不足的問題。這壹問題有許多解決措施,其中很重要的措施就是使用虛擬內存。而所謂的虛擬內存,其實就是硬盤。

打開壹個Word寫文章,再打開幾個IE瀏覽網頁;後臺還有FlashGet在默默地為妳下載網上文件。很快妳就會覺得的機器反應變得慢了。為什麽?因為程序本身和程序所使用的數據太大,物理內存(真實內存)已經不足,系統采用了大量的硬盤空間來模擬內存。上節說過,硬盤雖大,但其(傳輸、查找)速度比物理內存慢壹個數量級,所以整個系統速度就變慢了。

在DOS的編程時代,程序必須自已實現虛擬內存,或者采用第三方程序。而在Windows時代,虛擬內存機制由操作系統來實現。所以在本節,我們只需知道,雖然理論上程序在運行時必須裝載入內存,但這內存並不壹定全是真正的內存,很大壹部分,其實是在使用虛擬內存。當然,在Windows下,程序員無須去考慮自已的程序什麽時候使用物理內存,什麽時候使用虛擬內存。

操作系統設置了最大可以使用多少虛擬內存?現在正在使用多少虛擬內存,這壹些都有工具可以查看到。現在讓我們用最方便的方法來看看第壹個問題。

Windows95/98/Me:

請在您的電腦桌面上找到“我的電腦”圖標,點擊鼠標右鍵,在彈出的右鍵菜單裏選“屬性”,然後在彈出的“系統屬性”對話框裏選“性能”這壹頁,就可以看到右下角的“虛擬內存”按鈕,點擊後便可看到Windows對我們所講的“虛擬內存”的設置。

Windows XP/2000:

在開始菜單中找到“我的電腦”,點擊鼠標右鍵,在彈出的右鍵菜單裏選“屬性”,然後在彈出的“系統屬性”對話框裏選“高級”選項頁,點其中“性能”組內的“設置”按鈕。出現“性能選項”對話框。選“高級”選項頁,底部有“虛擬內存”組。妳可以從中看到有多少MB的硬盤空間允許Windows拿來當虛擬內存。如何想修改或查看更多信息,可點“更改”按鈕。建議采用系統默認值,不要修改。

  • 上一篇:我的世界地圖1.8.1地圖編輯器怎麽用
  • 下一篇:VR全景制作壹般都用什麽軟件做起來更方便?
  • copyright 2024編程學習大全網