1. 程式人生 > >記憶體單元和記憶體單元地址

記憶體單元和記憶體單元地址

記憶體單元地址
       我們每個人,在不斷的成長,無論何時,都在不斷的學習著,通過書本,通過師傅,通過失敗,我們不斷的總結著,不斷的整理著自己的知識,使其系統化,理論化,以便能解決更多複雜的問題。但是具有這樣條理清晰,結構完整的學識,我們經過了若干年,學習了若干代人的經驗,經過了若干次的實踐,一切的一切都是那麼來之不易。從最初的一點點皮毛接觸(感性認識),到完備知識體系的建立(理性認識),我們再把這些知識傳授給其他人,哪裡是一天兩天可以教會他們的呀。指標是C語言博大精深之處,認識它,其實是在進軍作業系統核心部分;指標是C之所以被稱為中級語言的重要原因之一,它繼承了組合語言的記憶體單元的直接和間接訪問的手段,使我們用高階語言編寫的程式的效率大幅提高。指標的用途和優點是多多的,但是指標對不熟悉系統工作原理,尤其是對儲存器原理不清楚的人,是不容易掌握的,因此我們對指標的講解從記憶體的工作原理講起。 


       在我們的計算機中,主要的記憶體叫做RAM(Random Access Memory),即隨機存取儲存器,在計算機的基礎課中我們就瞭解到,RAM的主要作用是儲存程式程式碼和資料供CPU在需要的時候呼叫。RAM對於系統性能的影響是每個PC使用者都非常清楚的,那麼它是如何實現程式和資料的存取的呢? 

       程式和資料的存取,並不是像堆放山藥蛋那樣簡單,而是更像是超市存包處用箱格子存放物品一樣,不但要放進去,還要能在需要的時候準確的取出來。 

1 2 3 4 5 6 7 。。。。。。。。。。。。。。。。。。。。。。。。。。。9999 
▼▼▼▼▼▼▼                                                                                                                       ▼ 

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 

       上面的示意圖中的小園點代表RAM中的儲物箱,每一個圓點是一個小箱,,每個小箱有一個唯一的編號。計算機術語把一個小箱子稱為一個位元組.RAM就是由許多位元組組成的,如上圖中小圓點組成的細線。這裡每個位元組的編號是數字的,編號從0開始,即第一個位元組的編號是0,依次第2個位元組的編號是1,其後是2,3,4,5,6.............直到最後一個位元組,當整個記憶體共有100個位元組,最後一個位元組的編號就是99;而當我們的記憶體共有10000個位元組時,最後一個位元組的編號就是9999了。一般的,我們稱這個編號為該位元組的地址編號,簡稱地址。 


       上面的內容,貌似原理,你仔細看看,其實很簡單的哩,你把CPU和RAM當作兩個人,CPU是存取包裹的人,RAM是存包處的管理員!具體舉例:設包裹名為50,箱格子的號是2000,如下: 

       如果CPU要想從RAM那裡取(包),而且現在包被存在(箱號)為2000的(箱)中,這時CPU首先需要向RAM提供(箱號)即2000,以便RAM定位待取的(包)50,然後等待若干個時間單位之後,RAM就會根據(箱號)2000定位到(包)50,並把(包)50交給CPU。我們現實生活中的超市存包處,一個箱格子是隻放一個包的,哈,於是取包的過程可以用下圖表示: 

          地址 2000▼           RAMCPU
= = =.......= = = = = = = = = = = =........ = =                                     = = = = = = 
||                                                            ||      <←←<←←2000      ||             || 
||........................50................................||                                     ||             || 
||                                                            ||      50 >→→>→→ >      ||             || 
= = =.......= = = = = = = = = = = =........ = =                                     = = = = = = 
       超市存包處被劃分為許多格子,每個格為最小的單位,一個格存一個包,如果你一個人有3個包,那麼就給你3個格子哦;我們把一個格子稱為一個存包單元。 

       回到計算機中,如果CPU想要從RAM中呼叫的(資料),存放在(地址編號)為2000的(位元組)中,這時CPU它首先需要向RAM提供(地址)即2000,以便RAM定位待存取的(資料)50,然後等待若干個時間單位之後,RAM就會根據(地址)2000定位到(資料)50,並把(資料)50交給CPU。 
       前面我們已經提到,作為記憶體的RAM是以位元組為最小單位的,你的資料如果1個位元組放不下,可以給你2個位元組或更多嘛,如此而已。類似存包處把每個格子稱為存包單元,我們把每個位元組稱為記憶體中資料存取的單元,簡稱為記憶體單元。每個記憶體單元的地址編號,簡稱為記憶體單元地址