記憶體的不同用途
根據不同的作業系統,乙個程序可能被分配到不同的記憶體區域去執行。但是不管什麼樣的作業系統、什麼樣的計算機架構,程序使用的記憶體都可以按照功能大致分為以下4個部分:
(1)**區:這個區域儲存著被裝入執行的二進位制機器**,處理器會到這個區域取指並執行。
(2)資料區:用於儲存全域性變數等。
(3)堆區:程序可以在堆區動態地請求一定大小的記憶體,並在用完之後歸還給堆區。動態分配和**是堆區的特點。
(4)棧區:用於動態地儲存函式之間的關係,以保證被呼叫函式在返回時恢復到母函式中繼續執行。
在windows平台下,高階語言寫出的程式經過編譯鏈結,最終會變成pe檔案。當pe檔案被裝載執行後,就成了所謂的程序。
pe檔案**段中包含的二進位制級別的機器**會被裝入記憶體的**區(.text),處理器將到記憶體的這個區域(**區)一條一條地取出指令和運算元,並送入運算邏輯單元進行運算;如果**中請求開闢動態記憶體,則會在記憶體的堆區分配一塊大小合適的區域返回給**區的**使用;當函式呼叫發生時,函式的呼叫關係等資訊會動態地儲存在記憶體的棧區,以供處理器在執行完被呼叫函式的**時,返回母函式。
如果把計算機看成乙個有條不紊的工廠,我們可以得到如下模擬:
< cpu是完成工作的工人。
< 資料區、堆區、棧區等則是用來存放原
原料、半成品、成品等各種東西的場所。
< 存放在**區的指令則告訴cpu要做什麼,怎麼做,到**去領原材料,用什麼工具來做,做完以後把成品放到哪個貨 倉去。
< 值得一提的是,棧除了扮演存放原料、半成品的倉庫之外,它還是車間排程主任的辦公室。
棧與系統棧
從電腦科學的角度來看,棧指的是一種資料結構,是一種先進後出的資料表。棧的最常見操作有兩種:壓棧(push)、彈棧(pop);
用於標識棧的屬性也有兩個:棧頂(top)、棧底(base)。
棧在記憶體中的存放是高位址是棧底(base),低位址是棧頂(top)。
計算機原理
關於 深入理解計算機系統 老趙的這一番話,深深的觸動了我,確實,這本書用怎麼說呢,並不是深入,而是涉及的知識比較廣,但又都是廣大程式猿不得不知道的知識,下面我們就來慢慢品嚐這本書吧。工作之餘,學習學習,總是好的。言歸正傳,接下來,享讀 computer systems a programmer s ...
計算機原理
計算機 實質是資料儲存和資料流動 資料是儲存在磁碟上的,磁碟是由磁顆粒點組成,磁顆粒點可以帶電,帶電是1,不帶電是0,磁碟上有保護膜,不直接與空氣接觸,乙個磁顆粒點就是1bit,1b 8bit,資料傳輸就是傳輸電平 1t 8 9萬億顆粒點 對顆粒點需要管理,機械盤內部有很多光碟,顆粒點在光碟的正反兩...
集合棧計算機
集合棧計算機 題目是這樣的 有乙個專門為了集合運算而設計的 集合棧 計算機。該機器有乙個初始為空的棧,並且支援以下操作 push 空集 入棧 dup 把當前棧頂元素複製乙份後再入棧 union 出棧兩個集合,然後把兩者的並集入棧 intersect 出棧兩個集合,然後把二者的交集入棧 add 出棧兩...