Ch8_Virtual _Memory

Virtual Memory

重點一

Virtual Memory

  • 主要目的 : 允許 process size > physical memory free space 情況下,程式仍然能執行。
  • 早期 : e.g. 使用 " overlay " 技術 ,是 Programmer 負擔 ( Dynamic loading )
    現代 : O.S. 支援 Virtual Memory ( O.S 負擔 ) → Programmer 無須煩惱
  • 優點
    • [1] : 記憶體的各個小空間皆有機會被利用到,記憶體使用度上升。
    • [2] : 盡可能提高 multiprogramming degree,提升 CPU utiliztion ( Note : Thrashing 除外 )。
    • [3] : 每一次的 I/O transfer time 下降,因為不用將整個程式的所有 page 載入。
      • [註] 然而載入整個程式很耗費 I/O transfer time,因為總傳輸次數變多 ( I/O 次數,I/O time ↑)。

重點二

實現 Virtual Memoory 的技術之一 : Demand Paging 技術

  • Def : Demand Paging 是架構在 Page Memory Management (Paging) 基礎上,採用 lazy swapper 技巧。即程式執行之初不將全部的 pages 載入 memory,僅載 入執行所須的 pages ( i.e. Prepaging ),甚至不載入 pages ( i.e. pure demand paging ),process 即可執行。
    • 若 Process 執行所需之 Page 皆在 Memory ⇒ 正確執行
    • 若 Process 執行,企圖存取 " 不在 Memory 中之 Page " ⇒ 產生 " Page fault " interrupt ⇒ O.S 必須處理,載入 miss page 以利執行
  • 在 Page Table 中多加一個 Valid/Invalid Bit 欄位,用以指示 page 是否在 memory 中。
    • V : 在 Memory
    • I : 不在 Memory
    • O.S : set & change
    • MMU : reference only ( MMU 發出 interrupt )
      image

Copy on Write

[型一] 傳統的 fork() (in Ch4. fork() without copy-on-write)

  • Def : parent 生出 child process 後,child process 佔用與 parent 不同的 memory space 且 child 的 Code section 與 Data section 內容均來自 parent 之 Copy initially
  • 缺點
    • [1] child process 需要被配置 New frames ( memory space )
      • 若 child process 生成數目眾多 ⇒ 很耗 Memory space
    • [2] Copy parent process 之 Code/Data section 內容給 child process 很耗時,而且有時候是不必要的 ( if. child 立刻執行 execlp())
      [型二] fork() with Copy on write 技術
      copy-on-write (
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值