Fork me on GitHub
侧边栏

随笔分类 -  Memory Management

上一页 1 ··· 6 7 8 9 10
摘要:1 分页机制 在虚拟内存中,页表是个映射表的概念, 即从进程能理解的线性地址(linear address)映射到存储器上的物理地址(phisical address). 很显然,这个页表是需要常驻内存的东西, 以应对频繁的查询映射需要(实际上,现代支持VM的处理器都有一个叫TLB的硬件级页表缓存部 阅读全文
posted @ 2018-11-25 12:14 yooooooo 阅读(2304) 评论(0) 推荐(0)
摘要:1. 内核空间和用户空间 过去,CPU的地址总线只有32位, 32的地址总线无论是从逻辑上还是从物理上都只能描述4G的地址空间(232=4Gbit),在物理上理论上最多拥有4G内存(除了IO地址空间,实际内存容量小于4G),逻辑空间也只能描述4G的线性地址空间。 为了合理的利用逻辑4G空间,Linu 阅读全文
posted @ 2018-11-25 00:16 yooooooo 阅读(2419) 评论(0) 推荐(2)
摘要:1 Linux如何描述物理内存 Linux把物理内存划分为三个层次来管理 层次| 描述 | 存储节点(Node) | CPU被划分为多个节点(node), 内存则被分簇, 每个CPU对应一个本地物理内存, 即一个CPU node对应一个内存簇bank,即每个内存簇被认为是一个节点 管理区(Zone) 阅读全文
posted @ 2018-11-24 21:53 yooooooo 阅读(3348) 评论(0) 推荐(1)
摘要:1 内存管理域zone 为了支持NUMA模型,也即CPU对不同内存单元的访问时间可能不同,此时系统的物理内存被划分为几个节点(node), 一个node对应一个内存簇bank,即每个内存簇被认为是一个节点 首先, 内存被划分为结点. 每个节点关联到系统中的一个处理器, 内核中表示为 的实例. 系统中 阅读全文
posted @ 2018-11-23 11:58 yooooooo 阅读(7720) 评论(0) 推荐(2)
摘要:1 内存节点node 1.1 为什么要用node来描述内存 这点前面是说的很明白了, NUMA结构下, 每个处理器CPU与一个本地内存直接相连, 而不同处理器之前则通过总线进行进一步的连接, 因此相对于任何一个CPU访问本地内存的速度比访问远程内存的速度要快 Linux适用于各种不同的体系结构, 而 阅读全文
posted @ 2018-11-21 00:45 yooooooo 阅读(2239) 评论(0) 推荐(4)
摘要:1 前景回顾 1.1 UMA和NUMA两种模型 共享存储型多处理机有两种模型 均匀存储器存取(Uniform Memory Access,简称UMA)模型 将可用内存以连续方式组织起来, 非均匀存储器存取(Nonuniform Memory Access,简称NUMA)模型 1.2 UMA模型 传统 阅读全文
posted @ 2018-11-19 23:53 yooooooo 阅读(2496) 评论(0) 推荐(7)
摘要:1. 3种系统架构与2种存储器共享方式 1.1 架构概述 从系统架构来看,目前的商用服务器大体可以分为三类 对称多处理器结构(SMP:Symmetric Multi Processor) 非一致存储访问结构(NUMA:Non Uniform Memory Access) 海量并行处理结构(MPP:M 阅读全文
posted @ 2018-11-18 23:20 yooooooo 阅读(2673) 评论(0) 推荐(1)
摘要:1. CFS如何选择最合适的进程 每个调度器类sched_class都必须提供一个pick_next_task函数用以在就绪队列中选择一个最优的进程来等待调度, 而我们的CFS调度器类中, 选择下一个将要运行的进程由pick_next_task_fair函数来完成 之前我们在将主调度器的时候, 主调 阅读全文
posted @ 2018-11-18 10:19 yooooooo 阅读(2290) 评论(1) 推荐(1)
摘要:得到了我的PC的cache参数如下: L1 Cache : 32KB , 8路组相连,linesize为 64Byte 64个组 L2 Cache:256KB 8路组相连,linesize为 64Byte 512个组 L3 Cache: 3MB 12路组相连,linesize为 64Byte 409 阅读全文
posted @ 2018-10-24 15:42 yooooooo 阅读(1019) 评论(0) 推荐(0)
摘要:存储器是分层次的,离CPU越近的存储器,速度越快,每字节的成本越高,同时容量也因此越小。寄存器速度最快,离CPU最近,成本最高,所以个数容量有限,其次是高速缓存(缓存也是分级,有L1,L2等缓存),再次是主存(普通内存),再次是本地磁盘。 寄存器的速度最快,可以在一个时钟周期内访问,其次是高速缓存, 阅读全文
posted @ 2018-10-15 00:23 yooooooo 阅读(1467) 评论(0) 推荐(0)
摘要:Cache和DMA本身似乎是两个毫不相关的事物。Cache被用作CPU针对内存的缓存利用程序的空间局部性和时间局部性原理,达到较高的命中率,从而避免CPU每次都必须要与相对慢速的内存交互数据来提高数据的访问速率。DMA可以作为内存与外设之间传输数据的方式,在这种传输方式之下,数据并不需要经过CPU中 阅读全文
posted @ 2018-07-18 23:56 yooooooo 阅读(2379) 评论(0) 推荐(1)
摘要:本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 之前说了管理区页框分配器,这里我们简称为页框分配器,在页框分配器中主要是管理物理内存,将物理内存的页框分配给申请者,而且我们知道也可页框大小为4K(也可设置为4M),这时候就会有个问题,如果我只需要1KB大小的内 阅读全文
posted @ 2018-06-30 12:43 yooooooo 阅读(636) 评论(0) 推荐(0)
摘要:内存池(Memery Pool)技术是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存。这样做的一个显著优点是尽量避免了内存碎片,使得内存分配效率得到提升。 不仅在用户态应用程序中被广泛 阅读全文
posted @ 2018-06-29 15:56 yooooooo 阅读(588) 评论(0) 推荐(0)
摘要:作者:Towser 链接:https://www.zhihu.com/question/26190832/answer/32387918 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 不知道为什么这问题突然火了,更新一个一句话总结:cache 是为了弥补高速设备和 阅读全文
posted @ 2018-06-29 09:58 yooooooo 阅读(508) 评论(0) 推荐(0)
摘要:计算机最重要的功能单元之一是Memory。Memory是众多存储单元的集合,为了使CPU准确地找到存储有某个信息的存储单元,必须为这些单元分配一个相互区别的“身份证号”,这个“身份证号”就是地址编码。在嵌入式处理器内,集成了多种类型的Memory,通常,我们称同一类型的Memory为一个Memory 阅读全文
posted @ 2017-12-18 11:09 yooooooo 阅读(4632) 评论(0) 推荐(2)
摘要:转自:https://www.cnblogs.com/huxiao-tee/p/4660352.html 内存映射是一种重要的抽象手段。在内核中大量使用,也可以用于用户应用程序。映射方法可以将任意来源的数据传输到进程的虚拟地址空间中。作为映射目标的地址空间区域,可以像普通内存那样用通常的方法访问。但 阅读全文
posted @ 2017-12-03 13:18 yooooooo 阅读(2838) 评论(1) 推荐(0)
摘要:Linux对于内存的管理涉及到非常多的方面,这篇文章首先从对进程虚拟地址空间的管理说起。(所依据的代码是2.6.32.60) 无论是内核线程还是用户进程,对于内核来说,无非都是task_struct这个数据结构的一个实例而已,task_struct被称为进程描述符(process descripto 阅读全文
posted @ 2017-09-06 14:18 yooooooo 阅读(2846) 评论(0) 推荐(0)
摘要:一、分布位置上的区别: kmalloc()和__get_free_pages()函数申请的内存位于物理内存的映射区域,而且在物理上也是连续的,它们与真实的物理地址只有一个固定的偏移,因此存在简单的线性关系;(3G+896M)(低端内存); vmalloc函数申请的虚拟内存与物理内存之间也没有简单的换 阅读全文
posted @ 2017-09-06 10:59 yooooooo 阅读(6039) 评论(0) 推荐(1)

上一页 1 ··· 6 7 8 9 10