堆内存是計算機系統中,當多個程序同時運行時,為了這些進程能夠共享數據、交換信息而把它們的數據存放在一個連續的區域。它是一個連續的内存區域,在物理上并不存在。
在操作系統中,"堆"(heap)被定義為"由一塊連續的内存空間組成的存儲區域"。它是虛拟内存的默認存放地址,因此所有常駐内存的程序都需要使用這個地址進行數據的暫時存放。
當應用程序需要從磁盤讀取數據時(如:打開文件或向磁盤寫數據),就會先到該區域中尋找合适的塊來存放所讀内容;如果找不到合适的内容塊時,則将會在下一個可用的空閑塊中去查找;如果還是沒有找到合适的位置就繼續向下查找直到遇到空閑的塊為止。這樣依次循環下去直至找到可以使用的空餘内存為止。
"堆"中的每個快取單元都是的、彼此間沒有關聯關系的存儲單元(稱為頁)。每個頁都有一個與之對應的指針指向其自身的起始地址(稱為偏移量)。當某個頁面需要訪問其它頁面中的内容時,首先會通過指針指向的頁面的起始地址來所需内容的第一個字節并把它存入自己的緩沖區中;然後再通過指針指向的頁面去所需的第二個字節并把這兩個字節相加得到完整的兩個字節數後返回給它的指針所指的頁面作為結束标志符;最後再把得到的兩個字節相加得到完整的三個字節數并返回到它的指針所在位置即完成了對該頁面的訪問過程。
如果當前還沒有任何用戶正在使用這塊連續的"可用空間",那麼系統會自動為每一個快取單元分配一個大小為64mb的空間用于暫存用戶臨時調入的内容和已用掉的數據等.由于這種機制的存在使得整個系統不會因突然斷電而導緻硬盤上的數據丢失!
堆棧是由一組指令構成的順序執行的一條條指令鍊的組合體.每條指令都有一條與之對應的操作碼.每一條操作碼都對應于一個特定的寄存器或控制邏輯電路.所以隻要有一條操作碼與某寄存器的狀态發生改變相對應了這條操作就被執行了.也就是說我們可以通過修改寄存器的狀态來達到對系統的控制目的!
,