操作系统--虚拟内存管理知识详解

Objectives

 描述虚拟内存的好处
 解释请求分页、页面替换算法和页面分配的概念

讨论工作集模型的原理

 背景

背景
虚拟内存 用户逻辑内存与物理内存的分离。
 只有部分程序需要在内存中执行
 因此,逻辑地址空间可以比物理地址空间大得多
 允许多个进程共享地址空间
 允许更高效的流程创建虚拟内存可以通过以下方式实
现:

 请求分页

 请求页面调度
 需求细分
Virtual Memory > Physical Memory
使用虚拟内存的共享库
虚拟地址空间
Shared Library Using Virtual Memory
请求页面调度
 只有在需要的时候才把一页放入内存
 所需的输入/输出更少
 需要更少的内存
 更快的响应
 更多用户
 页面需要 =>访问存储器
 不正当的无效访问=> 中止
 不在内存中的=>添加进来
 惰性交换——除非需要页面,否则不要将页面交换到内
存中
 处理页面的转换器是寻呼机
Transfer of a Paged Memory to Contiguous Disk
Space
有效-无效位
 每个页表条目都与一个有效-无效位相关联

 初始有效–无效位在所有条目上都设置为 I
 页表快照示例: /valid-无效位
 在地址转换期间,如果页表条目中的有效-无效位是 i 页
错误
Page Table When Some Pages Are Not in Main
Memory
页错误
如果有对某个页面的引用,那么首先引用该页面会导致操作系统
陷入页错误

  1. 操作系统查看另一张表来决定:
     无效参考 中止
     只是不在记忆中
  2. 从物理内存中获取空帧
  3. 将页面从磁盘交换到框架中
  4. 重置表格
  5. 设置验证位= v9.15
  6. 重新启动导致页面错误的指令
    Steps in Handling a Page Fault
    v9.17
    Performance of Demand Paging
     Page Fault Rate 0<= p <=1.0
     if p = 0 no page faults
     if p = 1, every reference is a fault
     Effective Access Time (EAT)
    EAT = (1 – p) x memory access

+p (page fault overhead

+swap page out

+swap page in

+restart overhead)
按需分页示例
 内存访问时间= 200 纳秒
 平均页面故障服务时间= 8 毫秒

EAT =(1–p)x
200+p(8 毫秒)
=(1–p)x 200+p x 8,000,000
= 200 + p x 7,999,8009.19
9.20
如果 1000 次访问中有一次导致页面错误,那么 EAT = 8.2 微秒。
这是一个 40 倍的减速!9.21
Process Creation
 Virtual memory allows other benefits
during process creation:

  • 虚拟内存还有其他好处

    在创建流程的过程中:

    ——即写即拷

    -内存映射文件(稍后)

     即写即拷

    写时复制
    写时复制(COW)允许父进程和子进程最初在内存中共享相同的页面
     如果任何一个进程修改了一个共享页面,那么该
    页面才会被复制
     COW 允许更高效的流程创建,因为只复制修改过
    的页面
     空闲页面是从零输出页面池中分配的
    Before Process 1 Modifies Page C
    After Process 1 Modifies Page C
    What happens if there is no free frame?

页面替换——在内存中找到一些页面,但是

不用了,换掉吧

算法

性能-希望一个算法将

导致页面错误的最小数量

相同的页面可能被带入内存多个

页面替换

 通过修改页面错误服务例程以包括页面替换来防
止内存过度分配
 使用修改(脏)位来减少页面传输开销–只有修改过
的页面才会写入磁盘9.29
页面替换完成了逻辑内存和物理内存之间的分离——可以在较小的物理内存上提供较大的虚拟内存9.31
Need For Page Replacement

Basic Page Replacement

  1. 找到所需页面在磁盘上的位置

  2. 找到一个自由的框架:

    -如果有一个自由帧,使用它

    -如果没有自由框架,使用一个页面

    替换算法选择受害者帧

    3.把你想要的页面变成(新)免费的

    框架;更新页面和框架表

    1. 重新启动过程

    Page Replacement
    Page Replacement Example

    Page Replacement Algorithms

    想要最低的页面错误率

    通过运行特定的算法来评估算法

    内存引用字符串(引用字符串)

    并计算页数上的错误

    该字符串

    在我们所有的例子中,引用字符串是

    1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 59.36

    Optimal Page Replacement
    Total number of page faults = 99.42
    最近最少使用(LRU)算法
     计数器实现
    每个页面条目都有一个计数器;每次通过这个条目引用页面时,将时钟复制到计数器中
     当页面需要更改时,查看计数器以确定要更
    改的内容
    LRU 页面替换
    页面错误总数= 129.47
    LRU 算法(续)。
    堆栈实现 以双链接形式保存一堆页码
    引用的页面:
    移动到最上面
    需要改变六个指针
     不搜索替换–替换堆栈的底部页面
    堆栈实现
    LRU Approximation Algorithms
    参考点

    每个页面关联一个位,初始= 0

    当page被引用位设置为1替换为0(如果存在)

    然而,我们不知道订单

    ​ 第二次机会

    需要参考位

    时钟替换

    如果要替换的页面(按时钟顺序)有参考位= 1,则:

    设置引用位0将页面留在内存中

    更换下一页(按时钟顺序),遵循相同的规则 Second-Chance (clock) Page-Replacement Algorithm
    计数算法
     记录每页引用的次数
     LFU 算法:用最小计数替换页面
     MFU Algorithm: based on the argument that the
    page with the smallest count was probably just
    brought in and has yet to be used9.53

    帧的分配

     每个进程需要最少的页数
     示例:IBM 370–6 页处理不锈钢移动指令:
     指令为 6 字节,可能跨越 2 页
     要处理的 2 页
     要处理的 2 页
     两个主要的分配方案
     固定分配9.54
     优先级分配
    固定分配
     平均分配——例如,如果有 100 个帧和 5 个进程,给每个进程 20 个帧。
     比例分配——根据流程的大小进行分配。
    优先级分配
     使用比例分配方案,使用优先级而不是大小
     如果进程 Pi 产生页面错误,
     选择替换它的一个帧
     从优先级较低的进程中选择一个帧进行替换
    Global vs. Local Allocation
     Global replacement – process selects a
    replacement frame from the set of all frames;
    one process can take a frame from another
     Local replacement – each process selects from
    only its own set of allocated frames

    抖动

    rocess does not have “enough” pages, the
    page-fault rate is very high. This leads to:
     low CPU utilization
     operating system thinks that it needs to
    increase the degree of multiprogramming
     another process added to the system
     Thrashing a process is busy swapping pages in
    and out
    Thrashing (Cont.)
    Demand Paging and Thrashing
     Why does demand paging work?
    Locality model
     Process migrates from one locality to another
     Localities may overlap
     Why does thrashing occur?
    size of locality > total memory size9.62
    Locality In A Memory-Reference Pattern9.63
    工作集模型
     工作集窗口 固定数量的页面引用,例如:10,000
    指令9.64
    9.65
    WSSi(进程 Pi 的工作集)=在最近的 中引用的总页数(随时间变化)
     如果 太小,将不会包括整个地区
     如果 太大,将包括几个地方
     如果 将包含整个项目
     D = WSSi 总需求框架
     如果 被痛打一顿
     如果 D > m,则暂停其中一个进程9.66
    Working-set model9.67
    跟踪工作集
     用间隔定时器+一个参考位近似
     例如 ,000
     每 5000 个时间单位后定时器中断
     每页在内存中保留 2 位
     每当定时器中断复制并将所有参考位的值设置为 0 时9.68
    9.69
    如果内存中的一个位=工作集中的 1 个 页面,为什么这不完全准确?
     Improvement = 10 bits and interrupt every 1000 time units9.70
    Page-Fault Frequency Scheme
     Establish “acceptable” page-fault rate
     If actual rate too low, process loses frame
     If actual rate too high, process gains frame9.71
    Working Sets and Page Fault Rates9.72

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑白极客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值