Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory 映射和分配_Memory - Fatal编程技术网

Memory 映射和分配

Memory 映射和分配,memory,Memory,我对术语映射有点困惑,例如,当我们说为数据库映射内存时,它意味着我们在某个内存位置为该数据库分配特定数量的内存 分配内存也是保留内存的同义词吗 我经常遇到这两个术语,它们对我来说并不那么清楚 如果有人能澄清这两个术语,我将非常感激。映射基本上意味着分配。除了在函数的情况下,我们通常需要1对1的映射。如果您定义了一个对象的功能,无论是物理的还是逻辑的,并且定义了它的关系以及它在转换过程中如何变化,那么您就已经映射了它。这可能是一个更好的问题,最好是向软件社区询问。然而,我是一个CS 我想说的是,术

我对术语映射有点困惑,例如,当我们说为数据库映射内存时,它意味着我们在某个内存位置为该数据库分配特定数量的内存

分配内存也是保留内存的同义词吗

我经常遇到这两个术语,它们对我来说并不那么清楚


如果有人能澄清这两个术语,我将非常感激。

映射基本上意味着分配。除了在函数的情况下,我们通常需要1对1的映射。如果您定义了一个对象的功能,无论是物理的还是逻辑的,并且定义了它的关系以及它在转换过程中如何变化,那么您就已经映射了它。

这可能是一个更好的问题,最好是向软件社区询问。然而,我是一个CS

我想说的是,术语的使用并不总是准确无误

一般来说,分配内存是使程序可以使用内存用于活动目的,例如为缓冲区分配内存以保存文件或内存结构

保留记忆通常被用来表示同样的事情。然而,它有时更被动。例如,保留内存以备将来需要,或者防止为不同目的分配过多内存

使用术语“映射”时,通常是指文件。它的意思可能与分配完全相同。或者它意味着更多;映射可能使用虚拟内存管理系统提供的底层机制,其中部分虚拟内存“映射”到文件,而不实际将文件读入物理内存。诀窍是,在访问内存映射文件时,在必要时以“不可见”的方式将被访问的块/页读入进程。这使用了一种称为请求分页的机制。它的好处是,程序可以访问文件,就好像文件都被读入内存一样,但只有实际访问的部分才能从持久存储系统(磁盘、闪存等)中检索出来,如果只需要文件的一小部分,这将是一个巨大的胜利

此外,它简化了程序,可以像整个文件都在内存中一样编写程序。而不是应用程序开发人员试图跟踪文件的哪些部分已加载到内存中,而是操作系统这样做

更好的是,可以要求操作系统跟踪哪些块/页的内容发生了更改,并可以要求操作系统定期将这些内容写回持久性存储。这甚至可以进一步简化应用程序


这在一些数据库中很流行。

这与电子产品无关。@David-我认为关于分配与保留的第一部分与嵌入式开发相关。然而,IMHO“映射”最好迁移到stackoverflow,而不是关闭。这一切可能也与EE有关,因为越来越多的人使用功能更强大的CPU(例如ARM A7/A8)来支持映射;但堆栈溢出似乎比这里更适合。不幸的是,我不知道如何将其移动到这样的位置。对于虚拟内存,映射实际上比这更强大——当文件被映射为读/写时,对内存的任何更改都会立即反映在文件中,就像读取或映射该文件的任何其他进程所看到的那样。因此,在本例中,该文件的作用类似于共享内存的后备存储,您可以使用原子读/修改/写指令在进程之间进行同步。@chrisdd-同意,但这似乎将问题的范围扩大了一点。如果你认为这在问题的背景下是有意义的,我可以补充一下。