首页 理论教育 存储管理的效率和管理复杂性

存储管理的效率和管理复杂性

时间:2023-11-19 理论教育 版权反馈
【摘要】:存储管理主要是对主存储器中的用户区进行管理。此方法利用存储器的效率高,但就操作系统而言管理复杂。

存储管理的效率和管理复杂性

计算机系统中的存储器可分为两大类:主存储器(简称主存、内存)和辅助存储器(简称辅存、外存)。存储管理是计算机操作系统的主要功能之一,它负责管理计算机系统的内存,最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源。

内存存放准备运行的程序及其数据。在现代计算机系统中,同时运行的程序越来越多,程序代码的规模也越来越大。尽管一般计算机系统的内存容量不断扩大,从原来的256MB或512MB,到现在的4GB或8GB,但合理分配和使用计算机的内存也是十分重要的。

内存的存储空间一般划分为两部分:一部分是系统区,用于存放操作系统、其他系统程序和数据;另一部分是用户区,用于存放用户程序和数据。存储管理主要是对主存储器中的用户区进行管理。存储管理的目的,一方面是要方便用户使用计算机,努力避免内存容量不够的情况出现,避免用户的程序和数据受到破坏;另一方面是提高内存的使用效率,尽量发挥有限容量内存的作用。

1.存储管理的功能

存储管理的主要功能包括内存的分配和回收、地址定位、内存共享与保护和内存容量的扩展。

(1)内存的分配和回收

内存是CPU能直接访问的存储空间,任何程序和数据都必须装入内存才能由CPU执行。存储管理的首要功能是实现内存空间的分配与回收;当用户提出申请分配内存空间的要求时,应能快速响应,并为其分配相应的内存空间;用户使用完毕后,应立即回收其存储空间,以供其他用户使用。

多任务的存在使得内存的分配和回收的难度加大,也是现代操作系统要解决的主要问题之一。为了提高内存利用率,并保证系统正常运行,应按某种策略或算法为各个并发的进程及相关数据分配内存空间,常用的策略和算法有直接分配、静态分配和动态分配等。

·直接分配,直接分配方法是程序员在设计编写程序时,就将未来使用内存的物理地址写在源程序代码中,早期的程序一般使用此方法。这对程序员的要求很高,使用不方便,但就操作系统而言管理非常简单。

·静态分配,静态分配方法是在程序装入内存之前,就将所需内存的全部物理地址一次性申请并一次性确定,存储空间确定后,在程序的整个运行过程中保持不变。整个程序一次性装入,如果此时的内存空间不足,则此程序将不能调入内存,也就不能运行。此方法利用效率低,但就操作系统而言管理简单。

·动态分配,动态分配方法是在程序运行时不把整个程序一次性装入内存,只在需要时才装入需要的部分。已经装入内存的程序的存储位置也是可以变化的,存储空间分配是动态中清、动态确定、动态调整。此方法利用存储器的效率高,但就操作系统而言管理复杂。在现代多程序运行系统中,普遍采用此方式。

(2)地址重定位

地址重定位就是要完成从逻辑地址到物理地址的转换。地址重定位的方法一般有两种:静态重定位和动态重定位。(www.xing528.com)

静态重定位是在用户程序装入内存时,一次性地完成从辑地址到物理地址的转换。这种方式要求使用连续的内存空间。存放的地址在执行过程中不可以改变。即使进程没有处于运行状态,所占用的内存空间也不可以被其他进程使用,此种方法不利于内存资源的有效利用。

动态重定位时在程序执行过程中进行重定位,根据内存的使用状况,动态地进行地址的转换。不使用的程序和数据可以先不作重定位,不装入内存。其结果是同样的内存空间可以被不同进程使用,同一个程序也可以装入到不同的地址空间。动态重定位对于提高内存的使用效率有很大的作用,但是地址映射的过程也会比较复杂。

(3)内存共享与保护

内存共享是指若干个进程都能够访问同一段内存中的信息,可以共享程序代码,也可以共享数据。这样可以节省内存空间,也便于实现进程之间的通信

内存保护是限制内存中的不同程序只能访问属于自己那段内存区以及共享存储区中的信息,不允许越界访问。特别是限制应用程序不能访问系统程序的区域,从而保证系统的安全和进程对内存信息的正确访问。

(4)内存容量的扩展

计算机中物理内存的成本是比较高的,而硬盘的成本要低得多。所以内存管理的另一个主要功能就是借助于外存来扩展内存的容量,使得加载到内存的程序代码和数据的容量可以大大超过物理内存的容量。内存容量的扩展主要是使用虚拟存储技术,也就是将部分硬盘的空间作为内存的空间来使用。

2.虚拟存储技术

虚拟存储技术是利用虚拟内存来扩大计算机内存的容量的存储管理技术。所谓虚拟内存是指操作系统在硬盘上开辟一个存储区来模拟内存,存放已经加载但是暂时不运行的程序代码和数据。

由于系统中有很多进程同时处于运行状态,进程本身需要的内存容量也可能很大,使得总的内存容量的需求非常大,超过计算机上的实际内存容量,必须使用虚拟内存技术来解决这个问题。

采用虚拟存储技术后,一个任务的一部分程序代码和数据存放在内存中,其余的部分存放在虚拟存储器中。操作系统的存储管理模块要随时根据进程执行的进展,将内存中的程序代码和数据转移到虚拟存储器中,同时将虚拟存储器中的程序代码和数据导入内存。在Windows系统中,该技术是通过页面文件的交换来实现的。将当前没有装入计算机内存的程序和数据保存到虚拟存储器的页面文件中,当进程需要时,操作系统将数据从页面文件导入内存供CPU调用;如果内存中的程序代码数据暂时不用,则将它们从内存移至页面文件,保存在虚拟存储器中,使得内存中保持一定的空闲容量,为其他程序使用。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈