06 2020 档案
摘要:slab系统由slab描述符、slab节点、本地对象缓冲池,共享对象缓冲池,3个slab链表,n个slab,以及众多的slab缓存对象
阅读全文
摘要:Linux内核内存管理的一项重要工作就是如何在频繁申请释放内存的情况下,避免碎片的产生。Linux采用伙伴系统解决外部碎片的问题,采用slab解决内部碎片的问题,在这里我们先讨论外部碎片问题。避免外部碎片的方法有两种:一种是之前介绍过的利用非连续内存的分配;另外一种则是用一种有效的方法来监视内存,保
阅读全文
摘要:大概的简述一下,及cpu读取内存里的东西时,并不会直接去内存去读取,这样会导致读取的数据很慢。cpu会到一级缓存读取所需要的数据,而一级缓存则会去内存里面读取数据,读取的方式是通过缓存行(cache line)的形式来进行读取。当一级缓存内的数据需要置换时,则会将缓存内的数据置换到二级缓存内,然后依
阅读全文
摘要:在linux kernel里,有一个debug选项LOCKUP_DETECTOR。 使能它可以打开kernel中的soft lockup和hard lockup探测。 这两个东西到底有什么用处那? 首先,soft/hard lockup的实现在kernel/watchdog.c中, 主体涉及到了3个
阅读全文
摘要:crash 是目前广泛使用的 linux 内核崩溃转储文件的分析工具,掌握 crash 的使用技巧,对于分析定位内核崩溃的问题,有着非常重要的作用。本文首先介绍了 crash 的基本概念和安装方法,其次详细介绍了如何使用 crash 工具分析内核崩溃转储文件,包括各种常用调试命令的使用方法,最后以几
阅读全文
摘要:前言: 众所周知,Android厂商非常多,各种尺寸的android手机、平板层出不穷。导致了Android生态环境的碎片化现象越来越严重。Google公司为了解决分辨率过多的问题,在Android的开发文档中定义了px、dp、sp,方便开发者适配不同分辨率的Android设备。对于初级程序员来说理
阅读全文
摘要:你应该曾经纠结过是用kmalloc(),还是vmalloc()?现在你不用那么纠结了,因为内核里面现在有个API叫kvmalloc(),可以认为是kmalloc()和vmalloc()的双剑合一。屠龙刀和倚天剑的合体。 内核里面有大量的代码现在都使用了kvmalloc(),譬如: source/ip
阅读全文