作者privatewind (傷神客)
看板Grad-ProbAsk
標題Re: [理工] [OS] page fault
時間Fri Jun 17 11:56:24 2011
: 三個小題看起來差不多, 容許我只做第一小題
: 題目說有一個process負責處理矩陣的運算, 座落在mem[0-199], 也就是占用一個frame
: 那就剩下三個frame
: 假設, 題目是row-major, 而一個int 占用4個bytes,
: 那麼每50次存取會產生一次page fault, 而第一小題要對矩陣作5000次存取, 所以會產生
: 100次的page fault, 如果再加上把process load進來的那次就是101次page fault
: 這是我的想法, 有錯請大家指正
當我昨天在做這題時,就有個問題: 它給的記憶體的單位和int大小為多少?
關於這問題,因為我們不知道記憶體單位是byte還是 word,而且int的大小
以C99規定,它僅規範了int至少要有多少 byte。所以很明顯的是,我們必須
明確地在答案中給予假設!!
我的假設:
記憶體單位: word(4byte)
int 4byte
再來的是一開始 frame0 為code,這沒什麼問題
讀的順序
a[0][0~99] -> frame1
a[1][0~99] -> frame2
a[2][0~99] -> frame3
接下來 呢??? 要讀a[3][0]時,如果按照他說的FIFO,是必須
代替掉frame0(code),讀完後,又要載入code 所以code->frame1
a[4][0] ->frame2
a[5][0] ->frame3
a[6][0] ->frame0
a[7][0] ->frame1
code ->frame2
a[8][0] ->frame3
換言之,次數為:
50/3=16...
16*4-1=63
63+3=66
ans:66
--
c版友的感覺上,是不是忽略了code替代的部份?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.41.195.21
推 mqazz1:有一題是洪逸解的類似題 不過並沒有太多的解釋 06/17 14:26
→ mqazz1:我之前有問過 在17987篇 06/17 14:26
→ privatewind:那題因為是LRU的關係,所以code所在的page一直不會被 06/17 14:40
→ privatewind:移出。這題是因為FIFO,所以要加入code移出的考量 06/17 14:41
推 christianSK:我當初在想的時候市直接省略code的部分 06/17 20:38
→ christianSK:不過我想把code考慮進來是對的 06/17 20:39
推 mqazz1:謝謝!! 不過這樣2,3題比較有變化的該怎麼解呢.. 06/17 23:23
推 qwer820404:先考慮進入次數 然後有沒有*量有沒有符合在大小範圍內 06/19 15:40
推 bjk:看好幾次終於看懂了~ 06/20 17:42