博客更新计划
该文档主要阐明后续的博客重点更新方向:
主题 | 进度 | 备注 |
---|---|---|
《二分》 | 规划中 | 二分查找、二分搜索,算法、理论与应用 |
《DFS、BFS》 | 编写中 | 总结DFS、BFS的通用思路,题解举例 |
《动态规划》 | 规划中 | 总结从递归到动态规划、题解 |
wiki & blog
该文档主要阐明后续的博客重点更新方向:
主题 | 进度 | 备注 |
---|---|---|
《二分》 | 规划中 | 二分查找、二分搜索,算法、理论与应用 |
《DFS、BFS》 | 编写中 | 总结DFS、BFS的通用思路,题解举例 |
《动态规划》 | 规划中 | 总结从递归到动态规划、题解 |
Reference
This site is built by Vuepress, Vuepress GitHub
A basic tutorial: zero-to-deploy-build-a-documentation-system-with-vue-and-vuepress
Zon of Python By Tim Peters
translated by weigao chen
本文主要记录常见的 Linux 命令,特别是那些经常遇到但是容易忘记的命令用法。
Binder 内存管理指的是:管理 binder mmap 映射的这块缓冲区。其中有两个关键的数据结构:
binder_alloc:缓冲区分配器,对每个使用 binder 进行 IPC 通信的进程,事先建立一个缓冲区;
binder_buffer: 描述缓冲区的数据结构
本文先对这两个关键的数据结构进行研究,然后再逐一分析使用这些数据结构的相关函数和算法。
本文主要讲述 Binder 流程中的各个阶段,起到一个 Overview 的目的。
本文研究 tick, 在 kernel 的 idle 流程中,会出现对 tick 的调用,用于进行 idle 状态时钟的控制等。由于其机制复杂,代码量大,故将其单独进行研究。
本文主要针对于 idle 流程中涉及到的 tick 进行简单研究。
当出现需要处理的中断时,CPU 将从无操作系统状态恢复到正常运行状态,并执行 tick_nohz_idle_stop_tick
函数来重新启用时钟事件处理器。
tick_nohz_stop_tick
的作用类似。
什么是 RCU 状态?
在Linux内核中,RCU(Read-Copy-Update)是一种读取数据不加锁的机制,它通过使用复制而不是传统的互斥量机制来实现对共享数据结构的并发安全。
也就是说 RCU 是一种同步机制,其可以支持一个写操作和多个读操作同时进行。对比而言,读写锁是一种排他锁,写的同时不允许其他读的操作。
❗本文为了研究清楚 idle, 故针对 idle 流程中的 RCU 进行研究。
🔗 名词解释
进程间通信(IPC) 在系统中非常重要,目前 Android 的 binder 方案已经属于行业内非常优秀的实践案例;但是作为软件从业人员,如果仅仅满足于现有架构或者技术的优势,这是远远不够的。所以本文有几个重要的目的:
对于 binder 具体的分析可以看我的另一篇博文《Research on Binder》,在此对具体的技术细节就不进行赘述,总的来看,binder 的优点包括以下几个:
kernel 侧实现:kernel/linux-5.10/drivers/android/binder.c
native 侧实现:system/libhwbinder
💯💯 本文主要是针对 binder 的理解进行的行为,代码列举和文字之间关联度不高,如果想了解原理但是不想对代码进行走读的,可以跳过代码解析的部分,以免陷入太多的细节。
binder 相比于传统的 IPC 通信拥有比较大的优势:其只需要进行一次拷贝。IPC 通信的原理大致如下: