作業系統的記憶體對齊機制學習筆記

王滔發表於2016-04-04

 

 

 

http://blog.csdn.net/lgouc/article/details/8235471

 

http://blog.sina.com.cn/s/blog_67c294ca01012qbu.html

 

 

 資料對齊並不是作業系統記憶體結構的一部分,而是C P U結構的一部分

 

是這麼理解嗎?cpu要讀取記憶體中的資料,以多少為單位進行讀取呢?以4個位元組,還是8個位元組。還是16個位元組為單位來讀取記憶體資料?

目前主要以2個位元組為單位嗎?是的。2個位元組作為對齊單位。

 

以多少個位元組為單位來讀取記憶體的資料,這是cpu的知識。與cpu有關係。

 

資料項只能儲存在地址是資料項大小的整數倍的記憶體位置上。如int型別佔用4個位元組,地址只能在0,4,8等位置上。

也就是說,這個資料的首個地址必須是它的倍數。

 

比如一個資料大小是6個位元組。現在要存入記憶體中去,首個記憶體地址的位置必須是6的倍數,即6*n才行:6,12,18........這樣就可以。

這是結論,有這個限制要求。原因是什麼,減少cpu讀取記憶體的次數。不進行記憶體對齊的話,讀取次數將會增加。

 

 

 

 

 

 

 記憶體對齊的本質:減少cpu讀取記憶體的次數。一次性儘可能多讀取資料進來。是這樣的嗎?

 

 

處理器的記憶體存取邊界是什麼意思?

 

http://www.cnblogs.com/xkfz007/archive/2012/10/08/2715163.html 這篇文章講述了cpu與記憶體之間的關係

 

記憶體對齊是作業系統為了快速訪問記憶體而採取的一種策略,簡單來說,就是為了放置變數的二次訪問。作業系統在訪問記憶體 時,每次讀取一定的長度(這個長度就是作業系統的預設對齊係數,或者是預設對齊係數的整數倍)。如果沒有記憶體對齊時,為了讀取一個變數是,會產生匯流排的二 次訪問。

 

幾個基礎知識:記憶體的每個地址能夠儲存多少資料。1個位元組。

 

cpu的執行指令速度

大部分簡單指令的執行只需要一個時鐘週期,也就是1/3納秒。光在這個時間點也只能走10釐米。

 

由於主存中使用電容來儲存資訊,為了防止因自然 放電而導致的資訊丟失,就需要週期性的重新整理它所儲存的內容,這也帶來額外的等待時間。

 

相關文章