首页 > 其他 > 详细

OS-3、4存储管理与虚拟存储技术

时间:2019-11-14 00:48:27      阅读:103      评论:0      收藏:0      [点我收藏+]

OS-4 存储管理

本章介绍了操作系统对内存的管理方法

本章所讨论的是在内存也叫主存层面的存储管理,如下图。

技术分享图片

一、了解重要概念-地址重定位

逻辑地址:逻辑地址是用户编程所用的地址,总是从0单元开始编址。逻辑地址是在编译以后形成的。逻辑地址是指可执行文件中的相对地址。将可执行代码装入内存时,必须通过地址转换将逻辑地址转换成物理地址,这个过程称为地址重定位

1、程序经过编译后,每个目标模块都是从0号单元开始编址,称为该目标模块的相对地址(或逻辑地址)。

2、当链接程序将各个模块链接成一个完整的可执行目标程序时,链接程序顺序依次按各个模块的相对地址构成统一的从0号单元开始编址的逻辑地址空间。

重点!!!!!!!!!!!

关于逻辑地址的理解,逻辑地址在计算机中不是实际存在的一个地址,而是一个程序段链接以后形成的逻辑地址空间,一个指令相对于0单元位置的偏移,CPU执行程序时首先会得到该程序的首地址,剩下的指令都是顺序执行,所以要取的指令地址都是通过逻辑地址相对于0单元的偏移,然后经过MMU(或其他硬件结构)的计算,计算出物理地址,关于这个偏移 CPU内部有专门的计数器进行计数。

3、用户程序和程序员只需知道逻辑地址,而内存管理的具体机制则是完全透明的,它们只有系统编程人员才会涉及。

4、不同进程可以有相同的逻辑地址,因为这些相同的逻辑地址可以映射到主存的不同位置。

5、物理地址空间是指内存中物理单元的集合,它是地址转换的最终地址,进程在运行时执行指令和访问数据都要通过物理地址从主存中存取。当装入程序(Loader)将可执行代码装入内存时,必须通过地址转换将逻辑地址转换成物理地址,这个过程称为地址重定位

二、程序的链接

C语言(高级语言)源文件.c,目标文件.o和可执行文件:

源代码编译以后生成的叫目标代码(机器代码).O文件,但此时还不能运行,缺少的第一个元素是一种叫做启动代码(Start-up code)的东西,此代码相当于您的程序和操作系统之间的接口。

缺少的第二个元素叫做库函数,几乎所有C程序都利用标准库中所包含的例程(称为函数)。例如,前面的concrete.c使用了函数printf()。目标代码文件不包含这一函数的指令。实际代码存储在另一个称为“库”的文件中,库文件中包含许多函数的目标代码。

动态链接是相对于静态链接而言的。

所谓静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分。换句话说,函数和过程的代码就在程序的exe文件中,该文件包含了运行时所需的全部代码。当多个程序都调用相同函数时,内存中就会存在这个函数的多个拷贝,这样就浪费了宝贵的内存资源。而动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息(往往是一些重定位信息)。仅当应用程序被装入内存开始运行时,在Windows的管理下,才在应用程序与相应的DLL之间建立链接关系。当要执行所调用DLL中的函数时,根据链接产生的重定位信息,Windows才转去执行DLL中相应的函数代码。一般情况下,如果一个应用程序使用了动态链接库,Win32系统保证内存中只有DLL的一份复制品

动态链接库的两种链接方法:

(1) 装载时动态链接(Load-time Dynamic Linking):这种用法的前提是在编译之前已经明确知道要调用DLL中的哪几个函数,编译时在目标文件中只保留必要的链接信息,而不含DLL函数的代码;当程序执行时,调用函数的时候利用链接信息加载DLL函数代码并在内存中将其链接入调用程序的执行空间中(全部函数加载进内存),其主要目的是便于代码共享。(动态加载程序,处在加载阶段,主要为了共享代码,共享代码内存)

(2) 运行时动态链接(Run-time Dynamic Linking):这种方式是指在编译之前并不知道将会调用哪些DLL函数,完全是在运行过程中根据需要决定应调用哪个函数,将其加载到内存中(只加载调用的函数进内存),并标识内存地址,其他程序也可以使用该程序,并用LoadLibrary和GetProcAddress动态获得DLL函数的入口地址。(dll在内存中只存在一份,处在运行阶段)

上述的区别主要在于阶段不同,编译器是否知道进程要调用的dll函数。动态加载在编译时知道所调用的函数,而在运行态时则必须不知道。

关于三种链接方式的差别如下:

三者之间的关系就像是机枪,冲锋枪和手枪


机枪在一开始就把所有子弹装好,开枪的时候很快,但也很笨重。


冲锋枪则是将子弹分弹夹存好,轻便了许多,但是会有一段装填时间。


手枪就更加轻便了,但是弹夹容量更小,装填的频率又变高了。

使用运行时动态链接即使DLL不可用的话,进程也能继续运行,然后进程可以通过一个变更方法达到最终目的。例如,如果进程不能找到一个DLL,它可以尝试另外一个或者向用户提示错误。如果用户可以提供丢失的DLL的全路径,进程就可以不管是否在正常的搜索路径中而使用该路径信息。然而如果是载入时链接的话,系统就会终止。

技术分享图片

三、存储管理方式

第一部分:分区存储管理

1)单一连续分配

技术分享图片

 

 

2)固定分区

技术分享图片

技术分享图片

技术分享图片

技术分享图片

 

 

3)可变分区分配

技术分享图片

技术分享图片

技术分享图片

技术分享图片

需要检查相邻区域是否有空闲区,如果有空闲则需要合并。

 

4)可重定位分区

技术分享图片

技术分享图片

 

 

 

第二部分:页式、段式、段页式存储管理

1)分页管理技术

技术分享图片

技术分享图片

技术分享图片

技术分享图片

分页管理技术是将程序分页,然后将内存分为和程序页面大小一样的页框,将程序以页为单位装入内存。

 

2)分段管理技术

技术分享图片

技术分享图片

技术分享图片

技术分享图片

 

 

 

3)段页式管理

技术分享图片

段页式的缺点是:

在一般使用段页式存储管理方式的计算机系统中,都在内存中辟出一块固定的区域存放进程的段表和页表。因此,在段页式管理系统中,要对内存中指令或数据进行一次存取的话,至少需要访问三次以上的内存:

第一次是由段表地址寄存器得段表始址后访问段表,由此取出对应段的页表在内存中的地址。

第二次则是访问页表得到所要访问的物理地址。

第三次才能访问真正需要访问的物理单元。

显然,这将使CPU的执行指令速度大大降低。

 

 

 

 

下面介绍一下为了加快系统速度引入的一个数据结构:快表(TLB)也叫做 联想寄存器。其本质是速度极快的 cache。

技术分享图片

技术分享图片

技术分享图片

 

 

 

此时分页存储管理的CPU的地址转换过程变为,先查快表(并行),如果查到相关页表项(HIT),则直接得到物理块号,

如果没有查到,则需要查页表,并将相关页表项写入TLB。

 

四、页表项的设计

技术分享图片

对于每一个页表项,需要设置相关位来表示该页的状态。

 

 

五、内存管理单元MMU

MMU是Memory Management Unit的缩写,中文名是内存管理单元,有时称作分页内存管理单元(英语:paged memory management unit,缩写为PMMU)。它是一种负责处理中央处理器(CPU)的内存访问请求的计算机硬件。它的功能包括虚拟地址物理地址的转换(即虚拟内存管理)、内存保护、中央处理器高速缓存的控制,在较为简单的计算机体系结构中,负责总线仲裁以及存储体切换(bank switching,尤其是在8位的系统上)。

技术分享图片

 

 

 

OS5-虚拟存储技术

一、虚拟存储技术的概念

技术分享图片

技术分享图片

虚拟页式存储管理:

技术分享图片

在该类管理方式中,可能会出现页错误。

下面介绍存储保护和页错误的概念:

技术分享图片

技术分享图片

技术分享图片

技术分享图片

访问地址越界越权都会产生页错误,此时系统会产生中断,根据操作系统相关处理程序进行处理;发生缺页异常时,也会产生页错误,此时会产生缺页中断,操作系统的缺页中断处理程序会将缺少的页面从虚拟内存调入内存,并根据页框分配情况进行分配(空闲页框或置换)。

 

二、页面置换

1)驻留集概念:系统分配给一个进程的页框的集合就是驻留集。

      清除策略:为了保证内存中有一定的空闲页框,系统会定期收回一些进程中驻留集的页框,具体收回哪些,取决于系统的清除策略。

技术分享图片

技术分享图片

如果希望一些页面不被置换,可以进行页框锁定。

技术分享图片

 

2)页面置换算法:

1、 OPT算法:

技术分享图片

2、 FIFO算法

技术分享图片

3、 时钟算法

技术分享图片

4、LRU算法:

技术分享图片

LRU可以用栈实现(或时间戳)。

 

三、关于其他存储技术

1、交换技术

技术分享图片

技术分享图片

技术分享图片

 

2、内存映射文件

技术分享图片

技术分享图片

 

 

3、写时复制

技术分享图片

 

本章内容重点:

技术分享图片

技术分享图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

OS-3、4存储管理与虚拟存储技术

原文:https://www.cnblogs.com/Clarence99/p/11854385.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!