深入理解記憶體(1):原理簡介

來源:互聯網
上載者:User
文章目錄
  • 為啥windows上的應用軟體都差不多一樣
  • 資料處理和資料顯示
  • 磁碟和記憶體原理

發現編程的很多問題最後整來整去,最後又是歸結到記憶體上面來了.所以決定好好來研究下記憶體.

 

我們知道馮.諾伊曼體繫結構中是把電腦劃分為輸入裝置,輸出裝置,儲存空間,控制器,運算器.

輸入裝置主要是鍵盤,滑鼠,輸出裝置主要是顯示器,印表機

控制器與運算器我們一般全稱為CPU.

儲存空間主要指硬碟與記憶體.

 

為啥windows上的應用軟體都差不多一樣

我們開發軟體時不會直接面對硬體(只有開發作業系統或驅動程式才直接面對硬體),作業系統封裝了硬體的細節資訊,應用軟體只是使用作業系統提供的API去間接的操作硬體.以windows為例,我們發現運行在上面的軟體不管是啥程式設計語言開發的,用起來貌似都差不多.介面上基本上都是那個些控制項,比如些功能表列,工具列,下拉式清單,單選,多選按鈕之類的.幾乎都一個樣.原因很簡單,實際上不管啥程式設計語言,你自己寫的函數或者調用一些類庫,如果要使用那些硬體資源,最後都歸結於去調用windows的API.

所以作業系統是在硬體的基礎上抽象一層,只提供給你一些API,然後各種程式設計語言又在API的基礎上再封裝一層,提供給你一些語言特性和類庫,庫函數給你用.

 

資料處理和資料顯示

看下windows的API(實際上可以簡單的看成一些C語言庫函數),我們發現絕大部分API函數都僅是實現處理資料和顯示資料這兩功能.

API中有很多針對滑鼠和鍵盤的函數,我們可以把這看成是輸入資料(資訊).訊息機制相關的函數就是處理資料. 進程和線程也可以看成在記憶體中處理資料

然後API中視窗,子視窗控制項,菜單,GDI,文字和字型,位元影像那一堆堆的函數可以看成是顯示資料.把資料通過一些好看點的圖形介面顯示出來.

以前很多人都認為程式 = 資料結構 + 演算法,在那會沒太注重使用者體驗,沒太注重GUI時是很恰當.現在應該說程式= 資料處理(資料結構和演算法) + 資料顯示.

 

磁碟和記憶體原理

我們在程式中的資料處理主要是操作磁碟和記憶體,硬碟是磁碟裡面最常用的一種.以前有所謂的磁碟片,也是磁碟的一種,原理和硬碟是一樣的.都是利用磁性物質的特性來儲存資訊.磁碟的原理就是利用電磁轉換,學物理時我們知道電可以使物質帶上磁性,而金屬在磁場運動時切割磁感線時會產生電流.磁碟上有很多微粒的磁粉.當寫通過磁頭寫資料時,磁頭中的電流會導致磁粉極化,改變方向.讀資料時,導體磁頭經過磁粒的地區時會產生電流. 反正大概意思就是這樣.

而記憶體的原理就完全不同,記憶體是晶體管製作的(CPU也是晶體管做的),而晶體管的特性就是我們平時常說的用開關的開和關來表示1,0.通過一些門電路的組合可用來表示數字和實現複雜的邏輯功能.而記憶體主要是用來臨時儲存資料.CPU就是處理一些邏輯關係.

晶體管由於必須得通電,然後用電流的有無狀態來表示資訊,所以只有通電的時候可以儲存資料,電一斷記憶體裡的晶體管狀態就處未知狀態就啥用處也沒了.而磁碟斷電後磁性物質還會一直保持原樣.

我們知道訪問磁碟時就通過磁頭去指到固定的地方然後讀取資料.不過記憶體就不一樣,不需要啥磁頭去讀取資料,它是有資料匯流排串連,我們是通過匯流排去讀取記憶體的資料.

實際上我們平時在程式中說要分配一塊記憶體(比如new 或malloc),或者操作記憶體(讀寫資料),實際上沒有真正的直接去操作記憶體,而只是告訴作業系統我要做這些操作,然後作業系統再給你去直接操作記憶體.同樣我們操作硬碟時,實際上也是作業系統去讀寫硬碟.

在windows中有所謂的虛擬記憶體技術,實際上就是由於我們不會直接操作記憶體才會有這種可能.我們當需要多少記憶體時,比如4G,而實際記憶體才2G,但作業系統卻說可以有4G記憶體配置給你.它是把一部分硬碟也當作記憶體給你分配(至於把多少硬碟空間當作記憶體用這是可以手動設定大小的). 由於CPU讀取資料時只會在記憶體中進行(不是必須非得這樣,因為如果直接讀取硬碟速度會很慢),所以當你使用了虛擬記憶體後資料會在記憶體和硬碟之間來回的交換.

等會再詳細講下虛擬記憶體...

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.