看板 Grad-ProbAsk 關於我們 聯絡資訊
板友好 想請教一下關於Demand paging的page fault問題 恐龍跟洪x筆記說以下為Paging跟Demand paging之差別 使用Paging: process在執行前必須載入所有page到physical memory才能執行 使用Demand Paging: process在執行前不用載入所有page到physical memory 只要載入 部分需要的page即可執行 這邊我ok! 不過後面講到page fault有個邏輯搞不太懂 就是page fault的定義不是process在執行時需要存取不在physical memory 的page才會導致page fault嗎? 但是既然一開始就說process執行前只要載入部份需要的page即可執行 那為了執行所需要的page不是都載入了嗎? 那怎麼會有可能發生page fault? 不知道是翻譯的問題還是什麼原因這個邏輯一直搞不懂 有請板友指教一下~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.0.214.213
mqazz1:我想可能是程式隨著執行時間變長 所需要的page也跟著不同 08/24 20:14
liataian:自問自答一下 剛剛翻了原文 好像是有個介於disk與memory 08/24 20:37
liataian:之間的程式叫pager 當process執行前他會先猜測process可 08/24 20:37
liataian:能會需要哪些page然後只載入那些page 所以之後process在 08/24 20:38
liataian:執行時是有可能發生需要的page不在memory內的情況 也就是 08/24 20:38
liataian:發生page fault 是這樣沒錯嗎@@? 08/24 20:39
kiwidoit:樓上正解 08/24 23:26
kiwidoit:在指令執行的時候也有可能會需要去存取新的page 08/24 23:30
kiwidoit:for data 08/24 23:31
liataian:嗯嗯 結果我自己回答了XD 08/24 23:58
wheels:程式執行之初洪逸有提到兩種作法: 08/25 01:09
wheels:1.pure demand paging: 一開始所有page都不載入,所以一開 08/25 01:10
wheels:始會一直發生page fault直到frame都滿為止才恢復正常 08/25 01:11
wheels:2.prepaging demand paging: 就是你說的一開始先猜測一些 08/25 01:12
wheels:如果猜得很準的話將會比pure好,不過如果猜得很差反而會比 08/25 01:12
wheels:pure還差(因為事先有先搬一些進來) 08/25 01:13
wheels:我們寫的有關page replacement algo. like:OPT, LRU, etc. 08/25 01:13
wheels:都是假設一開始是採取pure的原則喔! 08/25 01:14
liataian:謝謝wheels大! 08/25 23:01
sneak: 執行時是有可能發生需要 https://daxiv.com 09/11 14:29