按类别查询搜索结果
关于关键词 "LINUX" 的检测结果,共 124086
wuyouqian | 2016-01-05 19:31:02 | 阅读(120) | 评论(0)
前面已经分析了linux内存管理算法(伙伴管理算法)的准备工作。具体的算法初始化则回到start_kernel()函数接着往下走,下一个函数是mm_init():【file:/init/main.c】/* * Set up kernel memory allocators */sta...【阅读全文】
wuyouqian | 2016-01-05 19:30:52 | 阅读(120) | 评论(0)
前面分析了memblock算法、内核页表的建立、内存管理框架的构建,这些都是x86处理的setup_arch()函数里面初始化的,因地制宜,具有明显处理器的特征。而start_kernel()接下来的初始化则是linux通用的内存管理算法框架了。 build_all_zonelists()用来初始化内存分配器使用的存储节点中的管理区链表,是为内存...【阅读全文】
wuyouqian | 2016-01-05 19:30:35 | 阅读(120) | 评论(0)
前面已经分析了内存管理框架的构建实现过程,有部分内容未完全呈现出来,这里主要做个补充。如下图,这是前面已经看到过的linux物理内存管理框架的层次关系。现着重分析一下各个管理结构体的成员功能作用。【file:/include/linux/mmzone.h】typedef struct pglist...【阅读全文】
wuyouqian | 2016-01-05 19:30:25 | 阅读(120) | 评论(0)
虽说前文分析内存管理框架构建的实现,提到了find_zone_movable_pfns_for_nodes(),这里不准备复述什么,仅针对required_movablecore和required_kernelcore做一个补充。以required_movablecore为例,代码中没有很清晰地表明该值从何而来,仅有一处cmdline_parse_movablecore()疑似赋值的实现:...【阅读全文】
wuyouqian | 2016-01-05 19:30:09 | 阅读(120) | 评论(0)
此处接前文,分析free_area_init_nodes()函数最后部分,分析其末尾的循环:    for_each_online_node(nid) {        pg_data_t *pgdat = NODE_DATA(nid);        free_area_init_node(nid, NULL,  &nbs...【阅读全文】
wuyouqian | 2016-01-05 19:29:56 | 阅读(120) | 评论(0)
前面构建内存管理框架,已经将内存管理node节点设置完毕,接下来将是管理区和页面管理的构建。此处代码实现主要在于setup_arch()下的一处钩子:x86_init.paging.pagetable_init()。据前面分析可知x86_init结构体内该钩子实际上挂接的是native_pagetable_init()函数。 native_pagetable_init()...【阅读全文】
wuyouqian | 2016-01-05 19:29:44 | 阅读(120) | 评论(0)
传统的计算机结构中,整个物理内存都是一条线上的,CPU访问整个内存空间所需要的时间都是相同的。这种内存结构被称之为UMA(Uniform Memory Architecture,一致存储结构)。但是随着计算机的发展,一些新型的服务器结构中,尤其是多CPU的情况下,物理内存空间的访问就难以控制所需的时间相同了。在多CPU的环境下,系统只...【阅读全文】
wuyouqian | 2016-01-05 19:29:24 | 阅读(120) | 评论(0)
前面已经分析了内核页表的准备工作以及内核低端内存页表的建立,接着回到init_mem_mapping()中,低端内存页表建立后紧随着还有一个函数early_ioremap_page_table_range_init():【file:/arch/x86/mm/init.c】/* * Build a proper pagetable for the kernel...【阅读全文】
wuyouqian | 2016-01-05 19:29:10 | 阅读(120) | 评论(0)
前面的前奏已经分析介绍了建立内核页表相关变量的设置准备,接下来转入正题分析内核页表的建立。 建立内核页表的关键函数init_mem_mapping():【file:/arch/x86/mm/init.c】void __init init_mem_mapping(void){  &nbs...【阅读全文】
wuyouqian | 2016-01-05 19:28:56 | 阅读(120) | 评论(0)
前面已经分析过了Intel的内存映射和linux的基本使用情况,已知head_32.S仅是建立临时页表,内核还是要建立内核页表,做到全面映射的。下面就基于RAM大于896MB,而小于4GB ,切CONFIG_HIGHMEM配置了高端内存的环境情况进行分析。 建立内核页表前奏,了解两个很关键的变量:max_pfn:最大物理内存页面帧号...【阅读全文】
wuyouqian | 2016-01-05 19:28:30 | 阅读(120) | 评论(0)
结束完memblock算法初始化前的准备工作,回到memblock算法初始化及其算法实现上面。memblock是一个很简单的算法。memblock算法的实现是,它将所有状态都保存在一个全局变量__initdata_memblock中,算法的初始化以及内存的申请释放都是在将内存块的状态做变更。那么从数据结构入手,__initdata_memblock是一个...【阅读全文】
wuyouqian | 2016-01-05 19:28:02 | 阅读(120) | 评论(0)
memblock算法是linux内核初始化阶段的一个内存分配器(它取代了原来的bootmem算法),实现较为简单。负责page allocator初始化之前的内存管理和分配请求。分析memblock算法,可以从几点入手:1、 memblock算法初始化;2、 memblock算法管理内存的申请和释放; memblock算法前的准备:前...【阅读全文】
kodyzhg | 2016-01-05 17:41:32 | 阅读(0) | 评论(0)
scq2099yt | 2016-01-05 17:09:24 | 阅读(2210) | 评论(0)
1.保持        用终端登录远程开发机coding,应该是大多数程序猿年复一年的工作,但悲剧的是终端会你跟美女测试聊天的一瞬间断开了,所幸的是ssh提供了连接保持命令ServerAliveInterval,只需要新建文件~/.ssh/config并输入如下命令即可:        ...【阅读全文】
liuyingjiewjs | 2016-01-05 16:46:31 | 阅读(310) | 评论(0)
Linux内核ARM构架中原子变量的底层实现研究和分析【阅读全文】
wuyouqian | 2016-01-05 16:28:41 | 阅读(90) | 评论(0)
linux下内存的统计和内存泄露类问题的定位【阅读全文】
wuyouqian | 2016-01-05 16:28:26 | 阅读(120) | 评论(0)
在linux2.6.32之前,linux下数据同步是基于pdflush线程机制来实现的,在linux2.6.32以上的版本,内核彻底删掉了pdflush机制,改为了基于per-bdi线程来实现数据同步,与pdflush线程相比,在per-bdi线程机制中,每个后备存储器拥有自己唯一的回写线程,数据同步时需要更少的线程、也不会有多个pdflush对同一个后备存...【阅读全文】
scatz | 2016-01-05 16:27:58 | 阅读(30) | 评论(0)
        dtb文件作用是:使用dtb文件可以减少linux内核版本的数量。同一份linux 内核代码可以在多个板卡上运行,每个板卡可以使用自己的dtb文件。  1,在linux内核启动过程中会解析dtb文件,根据dtb文件中设备列表进行加注各个外设的驱动模块。  2,PC(通常指x86)机在启动...【阅读全文】
wuyouqian | 2016-01-05 16:27:49 | 阅读(120) | 评论(0)
linux内存管理初始化---基于linux2.6.37【阅读全文】
nuaayk | 2016-01-05 16:22:33 | 阅读(350) | 评论(0)
Linux UVC开发【阅读全文】