iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 24
0

昨天稍微提了一些有關Paging的觀念,今天要繼續來說明Paging。

Paging是屬於fixed-partition的方法,將記憶體以一個不變的大小切成好幾等分。

  • physical memory 切開後的每一塊記憶體空間被稱作frame
  • logical memory 切開後的每一塊記憶體空間稱作page
    當Process被執行後,frame會去對應到任何的page上面,而這些對應的關係會被儲存在page table上面。

Address Translation

然而一個完整的address translation,不只是mapping那麼簡單,基本上CPU在讀取memory的時候是以byte為單位,所以將page切成兩個部分:

  • Page number(p): 由前面幾個bits儲存,指定是第幾個Page。
  • Page offset(d): 在這個Page裡面的第幾個位置(相對位置)。
    用來儲存Page number和Page offset的bit數量都有其意義,Page number的大小定義了整個記憶體被切成多少個Page,而Page offset的大小定義了每一個page有多少空間在裡面,假設今天系統是的page size是4KB,那代表著Page offset使用了12個bit(2^12 = 4096),當我們知道有幾個Page,也知道了Page的大小,就能去計算出出整個Program最大能使用的記憶體空間。

而對應到的frame address計算方式是由 page number先去找到page對應的address去加上page offset。

Frame Size (page size)

Page的size直接影響電腦的效能,不管是logical address或physical都是使用同樣的大小來切,其中有幾個特點

  • 大小一定是二的倍數,可以快速地做一些操作
  • 系統從512byte ~ 16MB都有
  • 大部分的電腦是4KB的

Frame Size不能夠太大,也不能夠太小。如果size太大,internal fragmentation會很大,但如果size過小,Page number就會變大,一但Page number變大則代表Page Table會很長,每一個Program又都需要一個Page Table,會造成空間的浪費,也就代表著讀取資料要拿取的page會變得很多,電腦在記憶體內跳來跳去存取各個page造成效能下降。4KB就像是大家在設計上回歸出來的一個數字,剛好不會太大、又不會太小。


上一篇
Day 23 - Memory allocation
下一篇
Day 25 - Address Translation Implement
系列文
非本科系也能懂和該懂得作業系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言