曾经,还在为看不懂的代码而发愁,曾经,还在为想不通的二进制转换而苦恼,而现在,却朝着软件设计师迈进。我们在不经意间,就会发生意想不到的变化。这是进步,也是成长。
在这个过程中,我可以得到很多,也会失去些什么,不过这些经历,是我生命中宝贵的财富。我想记录下来,然后分享给大家,让我们一同进步。
1、背景
正如我们所知道的一样,任何程序在计算机中运行都需要一个运行空间,可是在实存管理技术中,常常会出现以下问题:
1)要求运行的进程所需的内存空间大于系统的内存空间,只有部分进程能够装入内存运行,而其他进程只有留在外存中等待。
2)逻辑地址空间大于存储空间的进程无法在系统中运行
要想解决以上问题,必须引入虚拟存储。也就是,用户的逻辑地址空间可以比主存的绝对地址空间要大。对用户来说,好像计算机系统具有一个容量很大的主存储器,称为“虚拟存储器”。
2、原理
根据程序执行的互斥性和局部性两个特点,我们允许作业装入的时候只装入一部分,另一部分放在磁盘上,当需要的时候再装入到主存,这样以来,在一个小的主存空间就可以运行一个比它大的作业。同时,用户编程的时候也摆脱了一定要编写小于主存容量的作业的限制。
程序在运行时,如果所需要的页(段)已经调入内存,便可以继续执行下去。如果所需要的页(段)不在内存,此时程序应利用操作系统所提供的请求调页(段)功能,将该页(段)调入内存,以使程序能够运行下去。如果此时分配给该程序的内存已全部占用,不能装入新的页(段),则需要利用系统的置换功能,把内存中暂时不用的页(段)调出至磁盘上,腾出足够的内存空间,再将所要装入的页(段)调入内存,使程序能够继续运行下去。
由此可知,我们不必把整个作业放入内存空间,而是封装成页表形式,将其地址放入内存空间。以此来降低内存的负担,提高效率。
3、功能
(1)具有存储设备故障确定及自动触发故障设备接替功能。
(2)具有存储协议的自由转换功能,从而能实现对不同协议下的,异构的存储和服务器环境的支持;
(3)支持SAN存储配置,能实现存储体的集中式管理和存储容量扩充。
(4)能通过TCP/IP协议,在网络上实现对存储器的各种远程同步操作;
(5)可实现数据高速缓存、定时自动备份和恢复等。
4、分类
(1)对称式
对称式虚拟存储的控制交换设备直接存在于服务器和存储设备之间,用运行在虚拟存储控制设备中的管理软件来管理和配置所有的存储设备,组成一个大型的存储池,其中的若干存储设备以一个逻辑分区的形式被系统中所有的服务器访问。
(2)非对称式(通道外虚拟存储)
非对称式结构的虚拟存储系统主要通过软件手段实现虚拟存储控制。其虚拟存储控制器独立于数据传输通道之外,数据和控制信息在传输通道上分离。
虚拟存储控制器不直接参与数据的传输,运行在其上的虚拟存储控制软件对存储设备进行统一管理和配置并形成逻辑存储单元和存储设备映射表,任何服务器在初始化时,均要通过虚拟存储控制器获得存储设备的映射表并实现对虚拟存储单元的访问。
5、请求页式存储
(1)页表机制
纯分页的页表只有两项:页号和物理块。而请求分页存储管理增加了调入功能和置换功能,故需在页表中增加若干项,供程序在换进换出时参考。下面所示是一请求分页系统中的页表:
状态位P:记录该页是否在内存。P=0该页在内存;
P=1该页不在内存。访问字段A:记录该页多长时间没有被访问。
修改位M:记录该页在内存期间是否被修改过。
M=1该页调入内存后被修改过;
M=0该页调入内存后未被修改过。
外存地址:该页在外存上的地址
(2)页表存储管理示意图
(3)内存页面分配策略
平均分配
:将内存中的所有可供分配的物理块,平均分配给各个进程。这是最简单的分配方式,它看起来很公平,但实际上很不公平,因为它没有考虑进程的大小等因素。
按进程大小比例分配 :系统按进程的大小按比例分配物理块。若m为可用物理块总和,S为各进程页面总和,si为第i个进程的页面数,则为第i个进程分配的页面数为:
按进程优先级比例分配 :为照顾重要的、紧迫的进程,使其能够尽快的完成,可以为其分配较多的内存物理块。
(4)页面置换算法
先进先出FIFO(First InFirst Out)算法
该算法是一种最简单的淘汰算法。首先淘汰在主存中驻留时间最长的页面。该算法的依据是,由于每个作业装入是依次进行的,一般来说,页号相邻的页之间逻辑关系最密切,所以最早调入主存的页不再被使用的可能性比最近调入主存的页要大。
该算法容易实现,但算法仅在按线性顺序访问地址空间时才是最理想的,那些在内存中驻留很久的页面却往往是被经常访问的。此外,该算法还有可能产生异常现象即当分配给一进程的页面增多时,缺页中断的次数反而增加。
最近最久不用页表的淘汰LRU算法
LRU(Least Recently Used)算法的基本思想是:如果某一页面被访问了,那么它很可能马上又被访问;反之,如果某一页面很久没有被访问,那么最近也不会再次被访问。因此,该算法为每一个页面设置一个访问字段,用来记录一个页面自上次被访问以来所经历的时间t,当须淘汰一个页面时,选择现有页面中t值最大的,即最近最久未使用的页面予以淘汰。
该算法比FIFO算法性能好,但实现起来比较困难。
最近最少使用页面淘汰算法LFU算法
LFU(Least Frequendy Used)算法即把最近一段时间内,使用得最少的页面淘汰掉。实际上LFU算法可以看作LRU的一种近似算法。
总结:学习了计算机中的虚拟存储,知道了它可以使封装好的逻辑地址来代替物理地址,从而在运行内存中大大节省了空间。也正是因为如此,才产生了虚拟空间,从而提高了计算机的效率。在请求页式存储中,学习了一些常用的分配策略和置换方法,这些都是为了提高内存的利用率,优化系统的性能。在操作系统的学习中还学习了其他的一些知识,以后慢慢跟大家分享。