随着时间的推移,程序不断地更新,规模不断增长,运行的时候可能会发现内存会越来越不够用。所以希望一个容量大,更快,更便宜,数据不易丢失的存储器。

首先想到的就是硬盘,所以在硬盘的基础上建立了覆盖技术,把常用的数据放在内存,不常用的数据放在外存。或者使用交换技术,把最近使用的数据放在内存,把很久没用的内存数据换到外存。现如今,我们在分页分段的基础上建立了虚拟内存技术。

一、覆盖技术

典型的案例是DOS操作系统:

程序需要按照自身的逻辑划分出多个功能上独立的模块把那些不会同时运行的模块共享同一个内存空间(分区),按照时间的先后来执行。这需要一个常驻内存的代码空间,它主要负责管理在某个时间段把哪些数据,函数导入/导出内存。对于不常用的功能,在其他程序执行的时候需要把这功能上的数据放到外存中去,需要的时候再装入内存。

此覆盖技术的缺点就是需要程序员自己去实现各个模块之间的覆盖关系,大大增加了编程难度。另外,模块用调用时间来换取内存空间的节约。其程序的运行时间效率会大大降低。

二、交换技术

典型案例 Unix 操作系统。

考虑由操作系统来帮助程序员完成数据的导入/导出操作。在CPU 和 MMU (内存管理单元)的帮助下,在某个时刻将整个程序的空间导出到外存中。在需要的访问的时候,再把整个程序空间导入到内存中。此技术需要考虑的问题是:

1)什么时候开始交换?

当内存不够用或者内存有不够用的风险时才考虑换出。内存读写和硬盘读写效率相差甚大,可能内存需要在次读程序时还要等硬盘写完才能够换入

2)交换区的大小应为多大合适?

3)程序换入时的重定位

当需要换入的时候,分配到的内存空间可能会不一样,那么程序运行时寻址的问题就需要考虑了?可以考虑页表的动态地址映射。

三、虚拟内存技术

像覆盖技术那样,虚存技术并不会把所有程序都搬到内存中,因而可以运行比空闲内存还要大的程序。但这个分配部分程序的实现不再由程序员完成,而是由操作系统和MMU完成。也像交换技术一样,在某些情况可以以更小的粒度(页)为单位实现内存与外存的交换。

程序的局部性原理:分为时间局部性和空间局部性。所谓时间局部性就是一条指令的一次执行和下次执行,一个数据的一次访问和下次访问都集中在很短的时间内。所谓的空间局部性当前指令的和邻近的指令,当前访问数据的邻近的数据访问,其内存地址都集中在很小的空间中。

虚拟页式内存管理:当用户程序需要把数据调入内存中时,只把部分指令的数据装进内存中。如果正常执行指令的时候发现,数据不在内存中,则会抛出缺页/缺段中断给操作系统请求调页。之后,由操作系统把外存的数据按页搬进内存中,如果程序内存的可用空间不足,那么操作系统会考虑(页面置换算法)把哪些内存数据换出到外存,腾出内存空间。

虚拟内存有大用户空间、部分交换、不连续性的特征。把物理内存和外存相结合,使执行用户程序可以比内存大,换入/换出操作使得程序虚拟内存的分配可能不连续,但是寻址由操作系统完成。

有效存储器访问时间(EAT,Effective Memory Access Time ) =访问内存时间 * 页表命中几率   + 缺页处理时间  *  页表非命中几率。

dirty page  :脏页,正在写磁盘或者等待写磁盘的页

page fault : 缺页异常, 当访问内存时,找不到数据对应的页。

操作系统原理:覆盖技术、交换技术、虚拟内存概要相关推荐

  1. 操作系统原理,物理内存“扩充”技术,内存紧缩,覆盖,交换,虚拟内存思想

    操作系统原理,物理内存"扩充"技术,内存紧缩,覆盖,交换,虚拟内存 当内存空间不足以存放下进程是,需要使用到内存"扩充"技术,但不是真的扩充了内存. 截图来自b ...

  2. 操作系统原理——第五章:虚拟内存

    文章目录 1. 起因 2. 覆盖技术 3. 交换技术 4. 虚存技术 4.1 目标 4.2 程序局部性原理 4.3 基本概念 4.4 基本特征 4.5 虚拟页式内存管理 1. 起因 增长迅速的存储需求 ...

  3. 计算机网络atm功能,现代计算机网络原理4ATM交换技术.ppt

    现代计算机网络原理4ATM交换技术 *SCUT DT&P Labs * 现代计算机网络原理_4 ATM交换技术 1.ATM交换的基本概念 ATM交换:从一条逻辑ATM信道到一条或多条ATM逻辑 ...

  4. 操作系统(三十四)覆盖和交换

    3.3 覆盖和交换 在上一节中我们提到操作系统在内存管理方面的作用,其中有一个作用是内存空间的扩展,实现这一功能的就是覆盖和交换技术. 3.3.1 覆盖 早期的计算机内存很小,经常会出现内存大小不够的 ...

  5. 数据中心网络架构的问题与演进 — 传统路由交换技术与三层网络架构

    戳蓝字"CSDN云计算"关注我们哦! 文章目录 目录传统路由交换技术路由和交换交换技术传统的 2 层交换技术具有路由功能的 3 层交换技术具有网络服务功能的 7 层交换技术路由技术 ...

  6. (王道408考研操作系统)第三章内存管理-第一节3:覆盖与交换

    文章目录 一:覆盖 (1)基本思想 (2)优缺点 二:交换 覆盖与交换技术是在多道程序环境下用来扩充内存的两种方法 一:覆盖 覆盖技术:主要用来解决程序大小超过物理内存总和的问题 (1)基本思想 思想 ...

  7. 计算机数据交换技术发展的顺序,计算机网络数据交换技术的发展探析

    [摘要] 随着经济的快速发展和网络科技的普及,人们也越来越重视计算机网络技术的发展,未来社会离不开计算机网络技术的应用,加快对计算机网络数据交换技术的创新和发展就变得尤为重要,本文主要是对计算机网络数 ...

  8. 互联网协议 — 数据交换技术

    目录 文章目录 目录 数据交换技术 传统的 2 层交换技术 具有路由功能的 3 层交换技术 具有网络服务功能的 7 层交换技术 数据交换技术 交换技术是随着电话通信的发展和使用而出现的通信技术.电话刚 ...

  9. 计算机操作系统原理--Linux实例分析

    本书是结合Linux介绍操作系统的原理的书,是一本理论的书. 本书从计算机硬件的分类来叙述如何高效利用计算机资源,及我们使用的操作系统. 首先计算机硬件资源有CPU.内存.IO设备,其次还有软件资源: ...

  10. 全国计算机四级——操作系统原理笔记

    学习建议:结合书和笔记把知识过一遍 -> 买题库刷试卷 -> 始终学不明白的题目去刷章节题目 -> 背新增试卷题目 关于本笔记:写者参加2022年5月的考试,参考<全国计算机等 ...

最新文章

  1. 什么是CPI指数和GDP
  2. java 让进度条动起来_自定义进度条动起来
  3. java程序设计第一次作业
  4. Android系统中的任意文件读写方法
  5. java aop 切面判断对象是否是一个类的实例
  6. 获取顶级域名与一级域名的python库-tld
  7. Python第二天学习
  8. git基于tag创建分支
  9. matlab的离散求导,高手留步:MATLAB五阶拟合函数,求导后离散化,输出结果是星号...
  10. bzoj3503: [Cqoi2014]和谐矩阵
  11. SpringBoot使用AOP,PointCut表达式详解以及使用
  12. LeetCode 73. Set Matrix Zeroes
  13. 值类型和引用类型小解
  14. 微信小程序--音乐播放器
  15. powerdesigner制作数据字典
  16. 计算机中插入背景图片怎样操作,在word中怎么添加背景图片及文字背景
  17. 链游:不要只争朝夕,要寄望百年
  18. LeetCode刷题攻略
  19. 3d图形设计计算机配置,3d建模电脑配置要求高吗?这样配电脑不多花一分钱
  20. 托福高频真词List07 // 附托福TPO阅读真题

热门文章

  1. 一、点亮LED和流水灯设计
  2. 微信小程序开发中30个常见问题解决方案
  3. Druid连接池配置详解
  4. 计算机英语口语面试自我介绍,面试英语口语自我介绍范文【3篇】
  5. C语言题解 | 去重数组合并数组
  6. php mysql 菜鸟教程_PHP MySQL Select
  7. 态度支付,如何用聚合支付帮助商家赚钱
  8. 雷达感应模组,自动播放讲解仪雷达应用,雷达传感器技术
  9. 基于Java+springboot+SSM的医疗报销系统的设计与实现
  10. js实现简单聊天页面,图片随机名字随机