Fork me on GitHub
侧边栏
上一页 1 ··· 91 92 93 94 95 96 97 98 99 ··· 135 下一页
摘要: 前面分析了memblock算法、内核页表的建立、内存管理框架的构建,这些都是x86处理的setup_arch()函数里面初始化的,因地制宜,具有明显处理器的特征。而start_kernel()接下来的初始化则是linux通用的内存管理算法框架了。 build_all_zonelists()用来初始化 阅读全文
posted @ 2019-10-07 10:19 yooooooo 阅读(738) 评论(0) 推荐(0)
摘要: 文件页 内存回收,也就是系统释放掉可以回收的内存,比如缓存和缓冲区,就属于可回收内存。它们在内存管理中,通常被叫做文件页(File backed Page)。大部分文件页,都可以直接回收,以后有需要时,再从磁盘重新读取就可以了。 脏页 那些被应用程序修改过,并且暂时还没写入磁盘的数据(也就是脏页), 阅读全文
posted @ 2019-10-06 23:03 yooooooo 阅读(472) 评论(0) 推荐(0)
摘要: 先说说cpu的cache,和cpu的cache比起来访问主内存是非常慢的,为了加快速度根据本地性原则,cpu在访问主内存的时候会把附近的一块数据都加载到cpu的cache里,之后读写这块数据都是在cache里做的。 linux本来有伙伴系统分配内存页,为了加快单个内存页的分配linux在每个node 阅读全文
posted @ 2019-10-06 23:00 yooooooo 阅读(545) 评论(0) 推荐(0)
摘要: 前面已经分析了内存管理框架的构建实现过程,有部分内容未完全呈现出来,这里主要做个补充。 如下图,这是前面已经看到过的linux物理内存管理框架的层次关系。 现着重分析一下各个管理结构体的成员功能作用。 struct zone node_zones[MAX_NR_ZONES]; ——存放该pg_dat 阅读全文
posted @ 2019-10-06 22:55 yooooooo 阅读(392) 评论(0) 推荐(0)
摘要: 虽说前文分析内存管理框架构建的实现,提到了find_zone_movable_pfns_for_nodes(),但这里不准备复述什么,仅针对required_movablecore和required_kernelcore做一个补充。 以required_movablecore为例,代码中没有很清晰地 阅读全文
posted @ 2019-10-06 22:32 yooooooo 阅读(368) 评论(0) 推荐(0)
摘要: 此处接前文,分析free_area_init_nodes()函数最后部分,分析其末尾的循环: 这里面的关键函数是free_area_init_node(),其入参find_min_pfn_for_node()用于获取node节点中最低的内存页框号。 而free_area_init_node()其实现 阅读全文
posted @ 2019-10-05 17:29 yooooooo 阅读(521) 评论(0) 推荐(0)
摘要: 前面构建内存管理框架,已经将内存管理node节点设置完毕,接下来将是管理区和页面管理的构建。此处代码实现主要在于setup_arch()下的一处钩子:x86_init.paging.pagetable_init()。据前面分析可知x86_init结构体内该钩子实际上挂接的是native_pageta 阅读全文
posted @ 2019-10-05 16:59 yooooooo 阅读(573) 评论(0) 推荐(0)
摘要: 传统的计算机结构中,整个物理内存都是一条线上的,CPU访问整个内存空间所需要的时间都是相同的。这种内存结构被称之为UMA(Uniform Memory Architecture,一致存储结构)。但是随着计算机的发展,一些新型的服务器结构中,尤其是多CPU的情况下,物理内存空间的访问就难以控制所需的时 阅读全文
posted @ 2019-10-04 16:34 yooooooo 阅读(721) 评论(0) 推荐(0)
摘要: 前面已经分析了内核页表的准备工作以及内核低端内存页表的建立,接着回到init_mem_mapping()中,低端内存页表建立后紧随着还有一个函数early_ioremap_page_table_range_init(): 该函数主要是用于建立固定内存映射区的。固定内存映射区是指FIXADDR_STA 阅读全文
posted @ 2019-10-04 11:00 yooooooo 阅读(678) 评论(0) 推荐(0)
摘要: 1. 前言 power supply class为编写供电设备(power supply,后面简称PSY)的驱动提供了统一的框架,功能包括: 1)抽象PSY设备的共性,向用户空间提供统一的API。 2)为底层PSY驱动的编写,提供简单、统一的方式。同时封装并实现公共逻辑,驱动工程师只需把精力集中在和 阅读全文
posted @ 2019-09-30 15:09 yooooooo 阅读(1688) 评论(0) 推荐(3)
上一页 1 ··· 91 92 93 94 95 96 97 98 99 ··· 135 下一页