什么是虚拟内存?

虚拟内存允许执行进程不必完全在内存中。虚拟内存的基本思想是:每个进程拥有独立的地址空间,这个空间被分为大小相等的多个块,称为页(Page),每个页都是一段连续的地址。这些页被映射到物理内存,但并不是所有的页都必须在内存中才能运行程序。当程序引用到一部分在物理内存中的地址空间时,由硬件立刻进行必要的映射;当程序引用到一部分不在物理内存中的地址空间时,由操作系统负责将缺失的部分装入物理内存并重新执行失败的命令。这样,对于进程而言,逻辑上似乎有很大的内存空间,实际上其中一部分对应物理内存上的一块(称为帧,通常页和帧大小相等),还有一些没加载在内存中的对应在硬盘上。
注意,请求分页系统、请求分段系统和请求段页式系统都是针对虚拟内存的,通过请求实现内存与外存的信息置换。

由图5可以看出,虚拟内存实际上可以比物理内存大。当访问虚拟内存时,会访问MMU(内存管理单元)去匹配对应的物理地址(比如图5的0,1,2)。如果虚拟内存的页并不存在于物理内存中(如图5的3,4),会产生缺页中断,从磁盘中取得缺的页放入内存,如果内存已满,还会根据某种算法将磁盘中的页换出。

分页与分段的区别?

  1. 段是信息的逻辑单位,它是根据用户的需要划分的,因此段对用户是可见的 ;页是信息的物理单位,是为了管理主存的方便而划分的,对用户是透明的;
  2. 段的大小不固定,有它所完成的功能决定;页大大小固定,由系统决定;
  3. 段向用户提供二维地址空间;页向用户提供的是一维地址空间;
  4. 段是信息的逻辑单位,便于存储保护和信息的共享,页的保护和共享受到限制。

页面置换算法有哪些?

请求调页,也称按需调页,即对不在内存中的“页”,当进程执行时要用时才调入,否则有可能到程序结束时也不会调入。而内存中给页面留的位置是有限的,在内存中以帧为单位放置页面。为了防止请求调页的过程出现过多的内存页面错误(即需要的页面当前不在内存中,需要从硬盘中读数据,也即需要做页面的替换)而使得程序执行效率下降,我们需要设计一些页面置换算法,页面按照这些算法进行相互替换时,可以尽量达到较低的错误率。常用的页面置换算法如下:

先进先出置换算法(FIFO)
先进先出,即淘汰最早调入的页面。

最佳置换算法(OPT)
选未来最远将使用的页淘汰,是一种最优的方案,可以证明缺页数最小。

最近最久未使用(LRU)算法
即选择最近最久未使用的页面予以淘汰

时钟(Clock)置换算法
时钟置换算法也叫最近未用算法 NRU(Not RecentlyUsed)。该算法为每个页面设置一位访问位,将内存中的所有页面都通过链接指针链成一个循环队列。

颠簸

颠簸本质上是指频繁的页调度行为,具体来讲,进程发生缺页中断,这时,必须置换某一页。然而,其他所有的页都在使用,它置换一个页,但又立刻再次需要这个页。因此,会不断产生缺页中断,导致整个系统的效率急剧下降,这种现象称为颠簸(抖动)。

内存颠簸的解决策略包括:

  • 如果是因为页面替换策略失误,可以修改替换算法来解决这个问题;
  • 如果是因为运行的程序太多,造成程序无法同时将所有频繁访问的页面调入内存,则要降低多道程序的数量;
  • 否则,还剩下两个办法:终止该进程或增加物理内存容量。

局部性原理

(1). 时间上的局部性:最近被访问的页在不久的将来还会被访问;

(2). 空间上的局部性:内存中被访问的页周围的页也很可能被访问。

虚拟内存,分页与分段的区别、页面置换算法,颠簸,局部性原理相关推荐

  1. 操作系统:基于页面置换算法的缓存原理详解(下)

    概述: 在上一篇<操作系统:基于页面置换算法的缓存原理详解(上)>中,我们主要阐述了FIFO.LRU和Clock页面置换算法.接着上一篇说到的,本文也有三个核心算法要讲解.分别是LFU(L ...

  2. 操作系统:基于页面置换算法的缓存原理详解(上)

    概述: 作为一个学计算机的一定听过缓存(注意这里是缓存,不是缓冲).比如我们在登录网页时,网页就可以缓存一些用户信息:比如我们在写界面代码的时候,可能就会遇到界面的绘制是基于一些缓存算法的.所以,了解 ...

  3. 三种页面置换算法(详解)

    地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断.当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间.而 ...

  4. 操作系统中分页、分段、交换空间、页面置换算法等相关概念

    目录 1 分页 2 分段 3 分页和分段的区别 4 交换空间 4.1 虚拟内存 5 页面替换算法 5.1 最佳置换算法(OPT)(理想置换算法) 5.2 先进先出置换算法(FIFO) 5.3 最近最久 ...

  5. 操作系统:第三章 内存管理2 - 详解虚拟内存,页面置换算法,页面分配策略

    本文已收录至 Github(MD-Notes),若博客中有图片打不开,可以来我的 Github 仓库:https://github.com/HanquanHq/MD-Notes,涵盖了互联网大厂面试必 ...

  6. 操作系统-内存管理(快表的地址变换机构,两级页表,虚拟内存的基本概念,基本页式管理下的页表和页面置换算法)

    文章目录 1.快表地址变换机构 2. 两级页表 3. 虚拟内存的基本概念 基本分页存储管理 1.快表地址变换机构 快表,又称联想寄存器(TLB,translation lookaside buffer ...

  7. 操作系统之内存管理:5、虚拟存储技术(请求分页管理、页面置换算法、虚拟内存、地址变换)

    4.虚拟存储技术 虚拟内存 思维导图 传统存储管理方式的缺点 局部性原理 什么是虚拟内存?(功能) 虚拟内存主要特征 如何实现虚拟存储技术 虚拟内存实现1------请求分页管理方式 思维导图 请求分 ...

  8. 分页及其管理、页面置换算法

    1.分页 大部分虚拟内存系统中都使用一种称为分页的技术. 在任何一台计算机上,程序引用了一组内存地址,由程序产生的这些地址称为虚拟地址,他们构成了一个虚拟地址空间. 在没有虚拟内存的计算机上,系统直接 ...

  9. 13 操作系统第三章 内存管理 虚拟内存 请求分页管理方式 页面置换算法 页面分配策略

    文章目录 1 虚拟内存 1.1 传统存储管理方式的特征.缺点 1.2 局部性原理 1.3 虚拟内存主要特征 1.4 如何实现虚拟内存技术 1.5 虚拟内存的基本概念小结 2 请求分页管理方式 2.1 ...

最新文章

  1. android:versionCode 跟 android:versionName
  2. 【SPOJ2666】QTree4【链分治】
  3. React开发(265):ant design InputNumber
  4. Linux软件安装部署文档,MetaQ安装部署文档
  5. python 鸭子类型_Python中的鸭子输入是什么?
  6. 剑指 Offer II 070. 排序数组中只出现一次的数字
  7. 指针用作函数参数、指针型函数和函数指针
  8. 项目工程自动化 - OCLint
  9. 动态代理解决网站字符集编码
  10. Self-paced and auto-weighted multi-view clustering 阅读笔记
  11. 在线流程图和思维导图开发技术详解(三)
  12. WIN_DOS经典大全
  13. mysql下出现Unknown column ‘id‘ in ‘on clause‘的解决方法
  14. 只有浏览器显示找不到服务器dns
  15. 湖盟知识—***、病毒、防火墙
  16. MBA工商管理,管理类联考怎么复习和买哪些复习资料?
  17. VMware ESXi 7.0 U3i macOS Unlocker OEM BIOS (标准版和厂商定制版)
  18. apt install 提示无法解析域名“cn.archive.ubuntu.com”
  19. Windows和Manjaro Linux配置Kate作为Python等文本编辑器
  20. TIA博途如何完全卸载西门子 STEP 7 (TIA Portal) 软件?

热门文章

  1. abb焊接机器人编程全解_ABB机器人的离线编程与仿真之原程序详解!!!——ABB机器人...
  2. python画函数求交点_python3数学建模基础(四)多个函数图像求交点
  3. 凡客诚品为什么要收购初刻? - 知乎
  4. 【小毛驴的絮叨】2019再见,2020你好
  5. 去水印视频软件免费版,免费去水印的视频软件
  6. 慢慢琢磨JVM——恭喜JavaEye重新开张
  7. 数据共享中的隐私保护问题
  8. Sublime Text3中几款比较好看的主题
  9. rtorrent的使用
  10. 清除Windows dllcache的方法