如何剖析一个内核子系统
1.前言
本文档主要讲述如何去剖析一个内核子系统的常规方法。
一般来讲比较全面的分析一个内核子系统,大概包含如下几个部分:
1) 介绍硬件相关,包含硬件的整体框图,以及硬件框图各个组件的介绍
2)framework的整体介绍,包括软件框架、模块视图、领域模型、总体流程;
3)基本组件的属性和API介绍;
4) 分析主要流程,主要包含各个组件的初始化流程以及顶层组件的调用流程
2.包含的主要部分
2.1 硬件部分
硬件部分的工作机制很大程度上能够折射软件的工作机制,至少为分析软件框架给出参考。在硬件部分一般给出硬件的框图架构,并对框图中相关的实体和接口给出解释,同时对硬件的工作机制加以说明
2.2 framework整体介绍
这部分可以通过相关的资料收集完成,包括搜索、内核文档、其它人撰写的博客等等一切可以利用的有用资源,力求展现内核子系统的整体面貌
- 软件框架
给出软件的框图架构,并对组成软件框图架构的实体文件及它们之间的关联进行说明,也可以联系硬件框架给出相关的解释
- 模块视图
是软件框架的具体化,将软件框架中的各个组成部分替换成组件,并对每个组件的功能进行说明.模块一般与文件对应
- 领域视图
也就是类图,描述各个组件之间的关系,包括:关联、继承、组合、聚合等
- 总体流程
主要介绍各个组件整体的初始化顺序
2.3 基本组件的属性和API
这部分往往是对上一节模块视图和领域视图的详细介绍
- 介绍各个组件(模块或类)的属性和重要API,此处可以只给出属性和重要API大概的理解和说明,详细的说明可以在主要流程部分加以细化
2.4 分析主要流程和策略机制
- 对于主要流程应当首先给出抽象概括性的说明,之后再详细说明调用流程
- 可以先给出框架部分的初始化流程,再给出组件的相关流程
- 顶层组件的调用流程会贯穿所有的组件,通过抓住顶层组件的调用流程就可以找到各个组件的调用流程
- 组件的主要流程涵盖两部分:各个组件的初始化流程+各个组件的调用流程,所有的流程不会出其右
- 在分析流程的过程中加深对各个组件属性及API的理解,并补全对组件属性和API的说明
- 在介绍组件调用流程的时候不是对每个组件都统一着墨,而是只以当前介绍的组件为主,对其它组件的行为可以只做抽象描述,等到介绍该组件时再详细分析
3. 遵循的重要原则
- 遵循先硬件后软件,先抽象后具体,结构与流程相结合的原则进行分析