码迷,mamicode.com
首页 > 其他好文 > 详细

操作系统:虚拟内存

时间:2020-02-07 01:24:46      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:编程   地址空间   目标   实现   获得   方式   内存技术   内存区域   常驻内存   

  • 覆盖技术
    • 目标
      • 在较小的可用内存中运行较大的程序。常用于多道程序系统,与分区存储管理配合使用。
    • 原理
      • 把程序按照其自身的逻辑结构,划分为若干个功能上相对独立的程序模块,那些不会同时执行的模块共享同一块内存区域,按时间先后来运行。
      • 必要部分(常用功能)的代码和数据常驻内存。---固定区:调入后就不再调出(除非运行结束)。
      • 可选部分(不常用功能)存放在外存中,在需要用到时才装入内存。 ---覆盖区:需要用到时调入内存,用不到时调出内存。
        技术图片
    • 缺点
      • 由程序员声明覆盖结果,费时费力,增加了编程的难度。
      • 覆盖模块,从外存装入内存,实际上是以时间换空间。
  • 交换技术
    • 目标
      • 多道程序在内存中时,让正在运行的程序或需要运行的程序获得更多的资源。
    • 原理
      • 可将暂时不运行的程序送到外存,从而获得空间内存空间。
      • 操作系统把一个进程的整个地址空间的内存保存到外存中(换出),而将外存中的某个进程的地址空间读入到内存中(换入)。换入换出的内容的大小为整个程序的地址空间。
    • 交换时机的确定:只有当内存空间不够或有不够的危险时换出。
    • 换出的进程存放在什么位置:文件区(离散分配方式) + 对换区(连续分配方式)---被换出的进程存放在对换区。
    • 覆盖与交换的区别
      • 覆盖在同一个进程或程序中,交换是在不同进程之间作业的。
      • 交换发生在内存中程序与管理程序或操作系统之间,覆盖发生在运行程序的内部。
  • 虚拟内存技术
    • 目标
      • 像覆盖技术那样,不是把程序的多有内容都放在内存中,因为能够运行比当前空闲内存空间还要大的程序。但做的更好,由操作系统自动来完成,无需程序员的干涉。
      • 像交换技术那样,能够实现进程在内存与外存之间的交换,因而获得更多的空间内存空间。但做的更好,只对进程的部分内容在内存和外存之间进行交换。
        技术图片
    • 程序局部性原理
      • 程序在执行过程中的一个较短时期,所执行的指令地址和指令的操作数地址,分别局限于一定区域。
      • 时间局部性:现在访问的指令、数据在不久后很可能会被再次访问。
      • 空间局部性:现在访问的内存单元周围的内存空间,很可能在不久后会被访问。
    • 基本概念
      • 虚拟内存可以在分页或分段内存管理的基础上实现
        • 在装入程序时,不必将其全部装入到内存,只需将当期需要执行的部分页面或段装入内存中,就可让程序开始执行。
        • 在程序执行过程中,如果发生缺页或缺段,则由处理器通知操作系统将相应的页面或段调入到内存中,然后继续执行程序。
        • 操作系统将内存中暂时不使用的页面或段调出保存在外存上,从而腾出更多空闲内存存放将要装入的程序以及将要调入的页面或段。
    • 基本特征
      • 大的用户空间:通过把物理内存与外存相结合,提供给用户的虚拟内存空间通常大于实际的物理内存。
      • 部分交换:与交换技术相比较,虚拟存储的调入和调出是对部分虚拟地址空间进行的。
      • 不连续的:物理内存分配的不连续,虚拟地址空间使用的不连续。
    • 虚拟页式内存管理
      • 在分页存储管理的基础上,增加请求调页和页面置换功能。
      • 基本思路:
        • 当一个用户程序要调入内存运行时,不是将该程序的所有页面都装入内存,而是只装入部分的页面,就可启动程序运行。
        • 在运行过程中,如果发现运行的程序或访问的数据不在内存中时,则向系统发出缺页中断请求,系统在处理这个中断时,将外存中相应的页面调入内存,使得该程序能够继续运行。
    • 缺页中断
      技术图片

操作系统:虚拟内存

标签:编程   地址空间   目标   实现   获得   方式   内存技术   内存区域   常驻内存   

原文地址:https://www.cnblogs.com/xiaobaizzz/p/12271469.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!