魅族内核团队

一个有内涵的技术分享平台

Android 中的设计模式 —— 单例模式

设计模式简介当我们讨论设计模式的时候,其实我们在讨论面向对象的设计问题。 软件设计中很多问题都会一次又一次的重复出现,而经过一定的总结之后会有一些优秀的解法沉淀下来,可以用于以后出现的类似问题,我们把这些解法叫做设计模式。 软件的生命周期决定了其设计要尽可能地面对(需求)改变,所以在开发和维护过程中,面临的较大问题,除了解决问题的关键点,另一个就是解决需求变更和扩展所带来的代码结构变化问题。......

Android M 外部存储剖析

这篇文章是建立在你已经对 Android 外部存储的基础知识有一定了解的基础之上,如果之前并不是太了解这个部分,阅读起来可能会比较费劲,可以先阅读参考下面文章:http://blog.csdn.net/zjbpku/article/details/25161131 Android M 外部存储的变化从 Android 6.0 开始,Android 支持移动存储(adoptable sto......

Linux Interrupt

在面试的时候我们常常被问及一个问题:几种中断下半部机制 softirq、tasklet、workqueue 有什么区别?Linux 为什么要设计这几种机制?真正能够回答清楚的人还是少数的。下面我们就详细分析一下这其中的区别。 本文的代码分析基于 Linux kernel 3.18.22 和 arm64 架构,最好的学习方法还是 “RTFSC” 1. Linux 中断arm64 和其他所有......

Linux Workqueue

Workqueue 是内核里面很重要的一个机制,特别是内核驱动,一般的小型任务 (work) 都不会自己起一个线程来处理,而是扔到 Workqueue 中处理。Workqueue 的主要工作就是用进程上下文来处理内核中大量的小任务。 所以 Workqueue 的主要设计思想:一个是并行,多个 work 不要相互阻塞;另外一个是节省资源,多个 work 尽量共享资源 ( 进程、调度、内存 ),......

SELinux 安全策略解析

1、简介SELinux 是 Security-Enhanced Linux 的简称,是美国国家安全局(NSA=The National Security Agency) 和 SCC(Secure Computing Corporation)开发的基于 Linux 的一个强制访问控制安全模块扩展。原先是在 Fluke 上开发的,2000 年以 GNU GPL 协议发布。对于目前可用的 Linu......

BFS 调度器移植体验

IntroductionBFS 全称 Brain Fuck Scheduler. 至于为什么叫这个名字,可以参考 BFS-FAQFAQ. 作者 Con Kolivas 在介绍中表示,BFS 的设计的初衷是带来更好的桌面交互式体验,特别是对于大多数的低规格机器. Android 也曾经评估过 BFS, 测试的结果对用户体验没有明显的改进,因此并没有最终导入. 通过一些第三方机构的测试数据来看,......

Linux 死锁检测模块 Lockdep 简介

死锁概念死锁是指多个进程(线程)因为长久等待已被其他进程占有的的资源而陷入阻塞的一种状态。当等待的资源一直得不到释放,死锁会一直持续下去。死锁一旦发生,程序本身是解决不了的,只能依靠外部力量使得程序恢复运行,例如重启,开门狗复位等。 Linux 提供了检测死锁的机制,主要分为 D 状态死锁和 R 状态死锁。 D 状态死锁 进程等待 I/O 资源无法得到满足,长时间(系统默认配置 120 秒......

Linux Tick 和 Tickless

Tick,即周期性产生的 timer 中断事件,可用于系统时间管理、进程信息统计、低精度 timer 处理等等。这样就会有一个问题,那就是在系统空闲的时候也还是周期性的产生中断,系统会被周期性的唤醒导致功耗的增加,这对于追求低功耗的嵌入式设备来说是很难接受的。为此,内核开发者提出了动态时钟的概念,即在系统空闲阶段停掉周期性的时钟达到节省功耗的目的。内核可以通过配置项 CONFIG_NO_HZ......

Linux Thermal 框架解析

Linux Thermal 是 Linux 系统下温度控制相关的模块,主要用来控制系统运行过程中芯片产生的热量,使芯片温度和设备外壳温度维持在一个安全、舒适的范围。 那下面我们就来一起看看对于温度控制这样一个需求,Linux 内核是怎么实现的。 Thermal 的主要框架要实现一个温度控制的需求,试想一下我们是不是最少要有获取温度的设备和控制温度的设备这两个最基本的东西?当然附带的也会产生一......

Linux 进程中 Stop, Park, Freeze

在调试内核的时候,经常会碰到几个相近的概念:进程 stop、进程 park、进程 freeze。这几个名词看起来都是停止进程,那么他们之间的区别和应用场景在分别是什么呢?下面就来分析一番。 本文的代码分析基于 Linux kernel 3.18.22,最好的学习方法还是 “RTFSC” 1. 进程 stop进程 stop 分成两种:用户进程 stop 和内核进程 stop。 用户进程 s......