北京融安特智能科技营销型网站,汕尾建设局网站首页,百度网站禁止访问怎么解除,四大门户网站是哪些一、引子
之前文章讲解的是系统的虚拟内存#xff0c;本章讲述这些硬件的架构和系统怎样统一管理这些硬件的。
二、物理内存模型
物理内存模型描述了计算机系统中的物理内存如何由操作系统组织和管理。它定义了物理内存如何划分为单元#xff0c;如何寻址这些单元以及如何…一、引子
之前文章讲解的是系统的虚拟内存本章讲述这些硬件的架构和系统怎样统一管理这些硬件的。
二、物理内存模型
物理内存模型描述了计算机系统中的物理内存如何由操作系统组织和管理。它定义了物理内存如何划分为单元如何寻址这些单元以及如何将它们映射到虚拟内存地址。物理内存模型对于确保高效和可靠的内存管理至关重要。 物理内存模型对操作系统管理内存分配、虚拟内存映射和内存访问模式产生重大影响。它会影响内存碎片化、缓存利用率和整体系统性能等因素。
2.1平坦内存模型Flat Memory Model
平坦内存模型也称为线性内存模型是一种简单的内存管理方式在这种模型下整个内存空间被视为一个连续的线性地址空间。每个地址直接对应物理内存中的一个字节没有分段或分页的复杂性。 因为该内存模型的所有内存地址是一个连续的线性地址空间因此Linux内核中使用一个全局数组来管理这些物理内存页并且内核中默认的配置是使用平坦内存模型。在Linux中最小分配的内存是4KB所以即使是平坦内存模型还是按页来管理内存的。 特点 单一地址空间所有程序和数据共享一个统一的地址空间从地址0到最大地址。 无分段和分页没有分段和分页机制所有内存地址都是线性且连续的。 简单性管理和编程简单适用于内存需求较小且操作系统简单的系统。 优点 简单易用由于没有复杂的地址转换机制编程和调试相对简单。 效率高没有地址转换的开销访问内存速度快。 低开销硬件和软件开销较低适合资源有限的系统。 缺点 不灵活不适合内存需求复杂的系统难以进行内存保护和共享。 容易出错程序错误可能会破坏整个系统内存因为没有内存保护机制。 扩展性差难以应对大规模内存需求无法有效利用大内存。
2.2稀疏内存模型Sparse Memory Model
稀疏内存模型也称为非连续内存模型允许内存空间中存在大量未使用的地址区域稀疏地址空间。这种模型广泛用于需要大地址空间但实际使用内存较少的应用场景如大规模数据处理、内存映射文件和某些高级编程语言的运行时系统。 在有多块非连续的物理内存时在使用平坦内存模型的数组来初始化管理内存地址将会造成很大的内存浪费。稀疏内存模型是将物理内存划在宏观层面上分为一块一块的内存集合体每个集合体使用一个节点来管理。内核在宏观上通过管理节点来间接的管理到每一个内存页。每个节点中管理的内存集合体也可以是不连续的内核又将内存集合体分为多个连续内存块。在连续内存块中内核就可以将其视为平坦内存模型来管理。 特点 稀疏地址空间地址空间中大部分区域未使用仅在需要时分配实际的物理内存。 虚拟内存支持通过虚拟内存机制将实际需要的内存区域映射到物理内存其余部分不占用物理内存。 按需分配内存仅在访问时分配减少了不必要的内存占用。 优点 内存利用率高由于仅在需要时分配内存减少了物理内存的浪费。 支持大地址空间可以处理非常大的地址空间而不需要实际分配所有的物理内存。 灵活性适合处理稀疏数据结构和大规模数据集提供更大的灵活性。 缺点 复杂的管理需要操作系统和硬件支持虚拟内存和按需分配增加了系统的复杂性。 可能的性能开销按需分配和地址转换可能带来一定的性能开销特别是在频繁访问新的内存区域时。
2.3补充
2.3.1 物理内存模型关系
平坦内存模型通过全局数组直接管理每一个内存页。
稀疏内存模型通过内存集合体的节点管理内存集合体并且在内存集合体中又分出多个连续内存块。内存块和内存块中间可以不连续。每一个连续内存块都可以视为平坦内存模型。
非连续内存模型是稀疏内存模型的一种简单形式它不允许内存集合体中出现不连续的内存块既将内存集合体视为平坦内存模型。但较新的内核代码已经不在做特殊区分。只是将平坦内存模型和稀疏内存模型使用宏隔开。 如图
2.3.2 物理内存热插拔
从稀疏内存模型管理内存的方式不难看出物理内存是否可以被系统使用就看连续内存块能否管理到相应的内存。只要能让连续内存块管理或者不管理该内存即可实现内存的动态加载或删除。简单来说连续内存块和连续内存块中间本就可以是不连续的只需让没有管理连续内存块的连续内存块节点指向一个内存区域就可以动态加载或让正在管理连续内存块的连续内存块节点指向空就可以动态删除。 需要注意的是因为内核态的虚拟地址空间中有一段直接映射区这块区域是和物理内存地址直接映射的关系这些物理内存是无法被动态删除的。一块内存是否能被动态删除是内核在初始化时就决定的。
三、CPU和物理内存架构
在多处理器系统中内存架构是指多个处理器如何访问和共享内存资源的机制。它对于系统性能和可扩展性至关重要。上面讲了物理内存模型下面要阐述CPU是怎么访问这些物理内存的。
3.1一致性内存访问Uniform Memory AccessUMA
一致性内存访问所有处理器都共享相同的物理内存并且访问内存的速度和延迟是均匀的。这意味着每个处理器访问内存的时间是相同的无论内存地址是什么。 特点 统一内存访问时间所有处理器对内存的访问时间一致。 共享内存架构所有处理器共享相同的物理内存没有本地和远程内存的区别。 对称多处理UMA通常用于对称多处理SMP系统中每个处理器有相同的访问权限和能力。 优点 编程简单由于访问内存的延迟一致程序员不需要考虑不同内存访问速度的问题。 负载均衡可以更容易地实现负载均衡因为所有处理器访问内存的成本相同。 硬件简单相对于非一致性内存访问NUMAUMA的硬件设计相对简单。 缺点 可扩展性差随着处理器数量增加共享内存带宽成为瓶颈系统性能难以线性扩展。 内存争用所有处理器共享同一内存总线容易出现内存争用问题影响系统性能。
3.2非一致性内存访问Non-Uniform Memory AccessNUMA
非一致性内存访问与一致性内存访问UMA相反。在NUMA架构中每个处理器或处理器组有自己的本地内存Local Memory同时也可以访问其他处理器的远程内存Remote Memory。这种架构设计旨在提高大规模多处理器系统的可扩展性和性能。 特点 本地和远程内存每个处理器组或节点有自己的本地内存访问速度比较快同时可以访问其他处理器组的远程内存速度较慢。 分布式内存架构系统内存被分割成多个区域或节点每个节点由处理器组成并拥有一部分物理内存。 非均匀访问时间访问本地内存的延迟比访问远程内存的延迟低因此访问时间不均匀。 优点 提高扩展性NUMA架构可以有效处理大型多处理器系统的内存访问和管理避免了单一内存总线或互连网络的瓶颈。 减少内存争用每个处理器组有自己的本地内存减少了不同处理器之间因访问同一内存而产生的争用。 适应大规模并行工作负载适合需要大量并行计算和高内存带宽的应用场景如科学计算和大数据处理。 缺点 复杂的编程模型NUMA架构需要考虑内存分布和访问延迟的不均匀性编程和优化相对复杂。 高成本相对于UMANUMA系统通常更昂贵因为需要更复杂的硬件互连和内存控制器。 远程访问性能差访问远程内存的延迟较高可能会影响特定类型的应用程序性能。
3.3其他架构
缓存一致性共享内存CC-UMA 每个处理器都有自己的本地缓存但所有处理器共享一个全局一致性视图。这种架构结合了 UMA 和 NUMA 的优点既能提供低延迟的本地访问又能支持大规模扩展。 分布式共享内存DSM 物理内存分布在多个节点上每个节点拥有一部分内存。处理器通过消息传递访问其他节点的内存。这种架构具有高度的可扩展性但编程和调试更加复杂。
随着多处理器系统变得越来越复杂内存架构也将继续发展。未来的趋势包括 混合内存架构 使用不同类型的内存架构来满足不同的需求例如使用 NUMA 架构来满足对高性能的需求使用 DSM 架构来满足对可扩展性的需求。 硬件支持的一致性模型 硬件支持更强的一致性模型以简化编程并提高性能。 新型内存技术 使用新的内存技术例如非易失性内存NVM来提高性能和降低功耗。
本篇大致讲述了硬件的情况可以看出稀疏内存模型就是在平坦内存模型上多加一些管理节点非一致性内存访问的CPU就是一堆一致性内存访问的CPU捏合在一起。下一篇文章将会对内核初始化硬件信息并管理的情况进行阐述。