• 操作系统--虚拟存储器


    • 虚拟存储器概述
      •   常规的存储器特征
        •   一次性:是指一次性将作业的所有内容装入到内存中才能开始程序的运行,其中有很多的东西没有用到,严重了浪费了内存,也对内存空间的大小有一定的要求
        •   驻留性:装入内存的程序里面的东西是不会置换出内存的,知道程序运行结束。这也大大的浪费了内存空间。
      •   局部性原理
        •   时间的局部性:程序运行的时候大多数的时候都是多次去执行一个指令,因为有多次的循环操作,导致了时间的局限性
        •   空间的局限性:程序运行的时候cpu可能多次的去访问已经访问过的存储单元,其附近的存储单元也可能被访问,所以cpu访问的内容可能集中在一个范围之内。
        •   综上所述,程序运行并不是一定都要把东西全部装入内存,只是需要分开将那个时段所需要的装入内存即可。
      •   虚拟存储器的工作情况
        •   运行程序没有必要将整个程序装入内存,只是需要当前要运行的少数的页面
        •   如果它所要访问的页面已经调入内存,则可以正常的运行。
        •   若为调入,则发出缺页请求,请求调页功能
        •   若内存已经满了,则实行页面置换功能(页面置换算法来执行)
      •   虚拟存储器的定义和一切
        •   定义:具有请求调页功能和置换功能,能从逻辑上对内存进行扩充。其逻辑容量时内存容量和外存容量之和。
        •   特征
          •   多次性:不需要一次性将程序的所有调入内存,而是允许多次调入内存中,这个就是请求调页功能。
          •   对唤性:页面置换功能。
          •   虚拟性:这个是以请求调页和页面置换为基础实现的。
        •   虚拟存储器的实现都是采用了离散分配方式。 


    • 请求分页存储管理方式
      •   硬件支持
        •   请求页表:这个和分页系统中的页表类似。

          • 页号 物理块号 状态位 访问字段 修改位 外存地址
          • 状态位:指示该页是否调入了内存
          • 访问字段:记录访问次数或者多久没被访问了
          • 修改位:标志页面是否修改过。因为每个页面都在外存有一个备份,所以该页若被修改过则必须将这个页面写回外存,若没有则不用写回。

      •   内存分配
        •   最小物理块数:能够让程序运行的最小的物理块数。
        •   内存分配策略:两种内存分配策略:固定和可变。进行置换时,有两种策略:局部置换和全局置换。
          •   固定分配局部置换:物理块个数固定。当腰进行页面置换的时候,只能从该进程给定的n个页面中选取一个页面进行置换。
          •   可变分配全局置换:开始给定一定的物理块数,在运行时物理块数可加可减。当发生缺页时,可以从os所有的空闲物理块中取出一块分配给该进程或者将所有进程的所有页面中选出一个换出,然后换进一个该进程所需的页面。
          •   可变分配局部置换:类似。

        •   物理块分配算法
          •   平均分配,按比例分配:大的多,小的少(页面的多少)。
      •   页面调入策略
        •   从何处调入页面
          •   外存分为两部分:文件区和对换区。对换区采用连续分配方式,文件区采用离散分配方式。文件区:存放文件。对换区:存换对换页面。
          •   系统拥有足够的对换区的大小,直接将所有的对换页面存放进去,然后调用。
          •   系统缺少足够的对换区空间。不会修改的文件直接从文件区调用,换出时,不必换出,以后再用,直接从文件区调用。被修改的部分从对换区调用,换出时也是换出到对换区。


    • 页面置换算法
      •   抖动:刚被换出的页面很快又要被访问,需要将它重新调用,此时又需要调出一页,而此刚被调出的页面很快又被访问,又需将它调入,如此频繁的切换页面以致一个进程在运行中把大部分时间花费在页面置换的工作上了。
      •   页面置换算法:http://www.cnblogs.com/dolphin0520/p/3749259.html

    • 抖动与工作集
      •   抖动的预防方法
        •   采取局部置换策略
        •   把工作集算法融入到处理机调度中去
        •   选择暂停的进程
  • 相关阅读:
    第27章 结构型模式大PK
    第26章 创建型模式大PK
    Linux下C/C++代码调用PHP代码(转)
    php 5.2.17 升级到5.3.29
    PHP安全之register_globals (转)
    注意字符串的strlen与sizeof的差别
    嵌入式串口传送汉字乱码
    字符设备驱动模块与测试代码编写(转)
    字符设备之register_chrdev与register_chrdev_region(转)
    I2C子系统驱动框架及应用 (转)
  • 原文地址:https://www.cnblogs.com/Kobe10/p/5675433.html
Copyright © 2020-2023  润新知