虚拟内存技术

虚拟内存是一个非常重要的概念,涉及到内存相关,先从内存的基础知识学起来~

内存

1. 什么是内存?内存的作用?

背景:

我们的数据、程序都是存放在硬盘中(外存),程序是在CPU中执行,外存是一种非常慢速的设备,CPU又是非常快速的设备,如果CPU需要处理的数据/程序直接从外存中取的话,会有大量的等待时间,等待存取操作的完成,所以引入了内存。

定义:

内存是用于存放数据的硬件,是一种高速的存储设备,程序执行前需要先放到内存中才能被CPU处理。(CPU直接从内存中取数据,这样就可以解决CPU与硬盘间的速度矛盾)

2. 系统中会有多个程序并发执行,多个程序的数据需要同时放到内存中,如何区分各个程序的数据都是放在什么地方呢?

给内存的存储单元编地址。每个地址对应一个存储单元。

3. 逻辑地址 vs 物理地址

物理地址:实际的地址值

逻辑地址:相对地址

编译:由编译程序将用户源代码编译成若干个目标模块(即为把高级语言翻译为机器语言)

在编译过程中使用的都是逻辑地址,当将可执行文件放入到内存中,使用的是物理地址,会进行逻辑地址到物理地址的转换

4. 链接的三种方式

1)静态链接:在程序运行之前,先将各目标模块及他们所需的库函数连接成一个完整的可执行文件(装入模块),之后不再拆开

2)装入时动态链接:将各目标模块装入内存时,边装入边链接的链接方式

3)运行时动态链接:在程序执行中需要该目标模块时,才对它进行链接。其优点是便于修改和更新,便于实现对目标模块的共享

补充知识:

1. 一台手机4G内存,是什么意思?

4G就是指该内存中可以存放4*2^30个字节,如果是按字节编址的话,就是有4*2^30=2^32个存储单元

2. 进程包括三个部分:程序段(存放执行指令)、数据段(存放变量)、PCB(进程控制块)

虚拟内存

操作系统要实现内存的分配与回收,内存空间的扩充。虚拟存储技术是比较先进的内存扩充技术,对内存的利用率和系统的性能都是有一定的提升的。

1. 传统存储管理方式的特征与缺点

作业:用户在一次解决或是一个事务处理过程中要求计算机系统所做的工作的集合,包括用户程序、所需要的数据集控制命令等。

缺点:

  • 一次性:作业必须一次性全部装入内存后才能开始运行。这会造成两个问题:1)作业很大时不能全部装入内存,导致大作业无法运行 2)当大量作业要求运行时,由于内存无法容纳所有作业,因此只有少量作业能运行,导致多道程序并发度下降
  • 驻留性:一旦作业被装入内存,就会一直驻留在内存中,直至作业运行结束。实际上在一个时间段内,只需要访问一小部分数据即可正常运行,导致内存中会驻留大量的、暂时用不到的数据,浪费了宝贵的内存资源。 

可以用虚拟内存技术解决以上问题。

2. 虚拟内存的定义和特征

定义:

将程序中很快用到的部分装入内存,暂时用不到的部分留在外存,就可以让程序开始执行。

在程序执行过程中,当所访问的信息不在内存时,由操作系统负责将所需信息从外存调入内存,然后继续执行程序。

若内存空间不够,由操作系统负责将内存中暂时用不到的信息换出到外存。

在操作系统的管理下,在用户看起来似乎有一个比实际内存大得多的内存,这就是虚拟内存(操作系统虚拟性的一个体现,实际的物理内存大小没有变,只是在逻辑上进行了扩充)

3个主要特征:

1)多次性:无需在作业运行时一次性全部装入内存,而是允许被分成多次调入内存

2)对换性:在作业运行时无需一直常驻内存,而是允许在作业运行过程中,将作业换入、换出

3)虚拟性:从逻辑上扩充了内存的容量,使用户看到的内存容量,远大于实际的容量

注意:

虚拟内存的最大容量是由计算机的地址结构(CPU寻址范围)确定的

虚拟内存的实际容量=min(内存和外存容量之和,CPU寻址范围)

3. 如何实现虚拟内存技术

虚拟内存技术,允许一个作业分多次调入内存。如果采用连续分配方式,会不方便实现。因此,虚拟内存的实现需要建立在离散分配的内存管理方式基础上。

 虚拟内存技术和传统的非连续分配存储管理的主要区别:

在程序执行过程中,当所访问的信息不在内存时,由操作系统负责将所需信息从外存调入内存,然后继续执行程序【操作系统要提供请求调页/请求调段功能】

若内存空间不够,由操作系统负责将内存中暂时用不到的信息换出到外存【操作系统要提供页面置换/段置换的功能】

3_1 请求分页管理方式

3_2 页面置换算法

3_3 页面分配策略

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值