物理内存和虚拟内存数据分配行为

问题描述 投票:1回答:2

我有兴趣了解计算机如何为物理内存分配变量,而不是为虚拟内存(例如硬盘驱动器)中的文件分配变量,具体取决于计算机如何确定将数据放置在何处。在这两种内存存储类型中似乎几乎都是随机的,但这并不是因为它不能简单地将数据放在已被占用或分配给另一个进程的硬盘驱动器的内存地址或扇区(任何位置)上。当我在旧的W95系统上研究Norton的速度盘(对硬盘驱动器中的文件进行碎片整理的程序)的方式时,从该程序对硬盘驱动器数据(不同数据类型的彩色编码可视化图,例如交换文件)的表示中注意到了始终排在最前面。),由分布在整个硬盘驱动器上的许多文件组成,未使用的区域为空。除了这些区域之外,我还看到了看起来像是数据和空白区域的混合显示出斑点的模式。我想认为这是随机发生的。同样,当我研究用C语言编写的简单程序的内存地址时,我注意到程序的每个版本在更改后重新编译后都显示出不同的段和偏移地址。我希望计算机在重新编译时使用相同的地址。有时将使用相同的地址,而有时则使用不同的地址。同样,我想考虑它对于程序选择的存储位置也是随机的。我认为内存分配或文件写入基于连续可用的第一个可用空间。

所以我的问题是,我想知道普通计算机的逻辑工作原理和方式,它决定以哪种方式针对任意一种位置类型(物理RAM或Dynamic)将数据写入何处?我需要学习计算机科学的哪个领域(如果不是汇编语言的话),可以解释这种几乎是随机的行为?

预先感谢

hardware computer-science
2个回答
0
投票

更广泛直接来自计算机科学的领域将是一个链表。 http://en.wikipedia.org/wiki/Linked_list

想象一下,如果您有一个链表,只是在末尾添加了项目,这些项目可能会线性地存在于内存,磁盘或其他任何地方。但是,当您通过说出项目编号7指向项目编号9消除项目编号8来删除列表中间的某些项目时,就像分配内存,虚拟内存或硬盘驱动器扇区等的内存分配一样,存储碎片的速度有多快与您用于分配下一项的算法有关。

文件系统可以/确实使用链接列表类型方案来跟踪将哪些扇区绑定到单个文件。使用链接列表既快速又容易,但是可以处理碎片。一种较慢的方法是没有碎片,而是不断地复制/移动文件以使它们保持在线性扇区上。

malloc()分配方案和MMU分配方案也属于此类别。基本上,每当您拿东西时,都将其切成分数,并在这些分数前面放一个虚拟接口,以使程序员/用户看上去它们是线性的。 Malloc()(不通过MMU计算虚拟内存)是另一种方法,即分配这些分数的多个线性块以满足分配需求,并具有尝试保持尽可能多的大块可用的alloc / free方案,以防万一,糟糕的malloc系统是其中一半内存可用的系统,但是在没有内存不足错误的情况下可以工作的最大malloc是该内存的一小部分的malloc,也就是说您有一个gig可用的空间,并且只能分配4096个字节。


0
投票

您应查看virtual memory and TLB (translation lookaside buffer)paging

实现虚拟内存和分页并非易事。整个系统的性能取决于它。如果未正确完成,您的系统将显示thrash

今天是凌晨,因此Wikipedia现在必须做:https://en.m.wikipedia.org/wiki/Translation_lookaside_buffer

编辑

您在碎片整理中看到的那些彩色斑点是硬盘上的大块。每个块都有一些指定的大小。根据硬盘的碎片程度,您可能会看到部分硬盘如下所示:

*-*-***-***-*

其中*表示已满,-表示为空

(上面)可以是一个应用程序/文件或多个文件的一部分;我将假定一个文件被拆分成多个文件,以简化我的示例。在每个*的末尾都有一个指向下一个*块所在的下一个位置的指针(称为linked list)。 HDD(或内存)的碎片越多,指向下一块的指针就越多。反过来,这会为下一个指针使用更多的空间,而不是为数据使用空间,因此在读取该数据时会产生更多开销。如果这是磁盘上的文件,并且您的数据没有分组在一起(局部性原则),则将有多个查找(这很慢,因为它们很慢)。当您使用碎片整理时,它会将所有块移动并分组在一起(尽其所能)。

*-*-***-***-*

成为

*********----

操作系统决定分页和虚拟内存寻址(等等)。 TLB是辅助此过程的硬件(缓存)(它将物理内存映射到虚拟内存地址以进行快速查找)。 CPU通过MMU

与TLB通信

[回答您的问题

  • 您应该学习操作系统。
  • 是,将文件放置在HDD上的位置由操作系统决定。如果删除了文件并再次下载,则不能保证将文件放置在相同的位置,很有可能不会。

我在这里提到的所有这些组成部分和原理的不错总结:Click Here。这是一本带有实时操作系统书中幻灯片的幻灯片(如果我没有记错使用的幻灯片的话)

© www.soinside.com 2019 - 2024. All rights reserved.