天天看點

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

<a href="http://blog.csdn.net/lgouc/article/details/8235471">http://blog.csdn.net/lgouc/article/details/8235471</a>

<a href="http://blog.sina.com.cn/s/blog_67c294ca01012qbu.html">http://blog.sina.com.cn/s/blog_67c294ca01012qbu.html</a>

 資料對齊并不是作業系統的記憶體結構的一部分,而是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讀取記憶體的次數。一次性盡可能多讀取資料進來。是這樣的嗎?

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

記憶體對齊是作業系統為了快速通路記憶體而采取的一種政策,簡單來說,就是為了放置變量的二次通路。作業系統在通路記憶體 時,每次讀取一定的長度(這個長度就是作業系統的預設對齊系數,或者是預設對齊系數的整數倍)。如果沒有記憶體對齊時,為了讀取一個變量是,會産生總線的二 次通路。

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

cpu的執行指令速度

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

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