内存管理是什么,第1张

内存管理是指软件运行时分配和使用计算机内存资源的技术。它的主要目的是如何高效快速地分配,以及在适当的时候释放和回收内存资源。

内存管理是指软件运行时分配和使用计算机内存资源的技术。它的主要目的是如何高效快速地分配,以及在适当的时候释放和回收内存资源。执行程序,如个人计算机或图灵机中的网络浏览器,在现实世界和计算机存储器之间转换数据进行旅行,然后将数据存储在计算机存储器中(在计算机科学中,程序是一组指令,旅行是计算机的执行程序)。一个程序结构由以下两部分组成:“文本段”,即指令存储,提供CPU使用和执行;“数据段”将数据集存储在程序本身中,例如一个常量字符串。

内存管理是什么,内存管理是什么,第2张

技术介绍

内存可以通过多种介质实现,比如磁带或磁盘,或者阵列容量小的微芯片。自20世纪50年代以来,计算机变得更加复杂,有多种内部存储器。内存管理的任务变得更加复杂,甚至在一台机器上必须同时执行多个进程。

虚拟内存是一种极其实用的内存管理技术创新。它是一个程序(由操作系统调度),持续监控物理内存中的所有代码段和数据段,保证它们在运行中的效率和可靠性。每个用户级进程都分配有一个虚拟内存空。当建立一个进程时,不需要在物理存储设备之间移动数据。数据存储在磁盘的虚拟内存空中,不需要为进程配置主内存空。只有当进程被调用时,它才会被加载到主内存中。

想象一个大程序,执行时被操作系统调用。其操作所需的所有内存数据都存储在磁盘的虚拟内存中,只有需要的部分加载到主内存中进行操作。

主存储器

程序执行时,操作系统将程序的数据段和文本段映射到虚拟内存空,然后在内存中执行程序的指令(参见冯诺依曼架构,在任何情况下,进程执行时都必须存储临时数据,或者更重要的是,它会调用一些函数或子程序,并存储当前函数的状态。最好的数据结构方法是以堆栈的方式存储数据。当我们完成这个函数时,数据会以栈的pop模式取出,栈会在函数的生命周期中动态增长。操作系统提供了文本部分和数据部分之间的区别,而堆栈部分位于行程的顶部。这种方法称为分段结构。

内存管理

内存管理对于编写高效的Windows程序非常重要,因为Windows是一个多任务系统,它的内存管理与单任务DOS有很大的不同。DOS是单任务操作系统。应用程序分配到内存后,如果没有主动释放,系统不会对其进行任何更改。然而Windows不是。它可能有多个应用程序同时共享内存。有时候,为了让一个任务执行得更好,Windows系统可能会移动甚至删除其他任务分配的内存。因此,我们在Windows应用程序中使用内存时,应该遵循Windows内存管理的一些约定,以尽可能提高Windows内存的利用率。

记忆对象

Windows应用程序可以申请分配自己的内存块。内存块是应用程序操作内存的单元,也称为内存对象。在Windows中,内存对象由内存句柄操作。内存对象可以根据分配的范围分为全局内存对象和局部内存对象。根据它们的属性,可以分为固定内存对象、可移动内存对象和可移动内存对象。

固定内存对象,尤其是本地固定内存对象,类似于DOS内存块。一旦它被分配,它将不会被移动或删除,除非应用程序主动释放它。而对于本地固定内存对象,其内存句柄本身就是内存对象的16位近地址,可以直接被应用程序访问,而不是像其他类型的内存对象一样锁定在内存中的固定地址。

可移动内存对象没有固定地址,Windows系统可以随时移动到新地址。可移动内存对象使窗口能够有效利用空闲内存。例如,如果一个可移动内存对象分离了两个空闲内存对象,Windows可以移除该可移动内存对象,将两个空闲内存对象合并成一个大的空闲内存对象,从而实现内存合并和碎片回收。

可移动内存对象类似于可移动内存对象,Windows可以移动。当Windows需要大内存空来满足新任务时,可以将可移动内存对象的长度设置为0,并丢弃内存对象中的数据。

可移动内存对象和可删除内存对象在访问前必须用内存锁定功能锁定,锁定的内存对象不能移动或删除。因此,应用程序应该在使用内存对象后尽快将其解锁。内存需要加锁和解锁,增加了程序员的负担,但也大大提高了Windows内存利用的效率。因此,Windows鼓励使用可移动和可移动内存对象,并要求应用程序在不必要时不要使用固定内存对象。

不同类型的对象在内存堆中的位置不同,固定对象位于堆的底部;可移动物体位于固定物体上方;可删除的对象从堆的顶部分配。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 内存管理是什么

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情