• 如何剖析一个内核子系统


    1.前言

    本文档主要讲述如何去剖析一个内核子系统的常规方法。

    一般来讲比较全面的分析一个内核子系统,大概包含如下几个部分:

    1) 介绍硬件相关,包含硬件的整体框图,以及硬件框图各个组件的介绍

    2)framework的整体介绍,包括软件框架、模块视图、领域模型、总体流程;

    3)基本组件的属性和API介绍;

    4) 分析主要流程,主要包含各个组件的初始化流程以及顶层组件的调用流程

    2.包含的主要部分

    2.1 硬件部分

    硬件部分的工作机制很大程度上能够折射软件的工作机制,至少为分析软件框架给出参考。在硬件部分一般给出硬件的框图架构,并对框图中相关的实体和接口给出解释,同时对硬件的工作机制加以说明

    2.2 framework整体介绍

    这部分可以通过相关的资料收集完成,包括搜索、内核文档、其它人撰写的博客等等一切可以利用的有用资源,力求展现内核子系统的整体面貌

    • 软件框架

    给出软件的框图架构,并对组成软件框图架构的实体文件及它们之间的关联进行说明,也可以联系硬件框架给出相关的解释

    • 模块视图

    是软件框架的具体化,将软件框架中的各个组成部分替换成组件,并对每个组件的功能进行说明.模块一般与文件对应

    • 领域视图

    也就是类图,描述各个组件之间的关系,包括:关联、继承、组合、聚合等

    • 总体流程

    主要介绍各个组件整体的初始化顺序

    2.3 基本组件的属性和API

    这部分往往是对上一节模块视图和领域视图的详细介绍

    • 介绍各个组件(模块或类)的属性和重要API,此处可以只给出属性和重要API大概的理解和说明,详细的说明可以在主要流程部分加以细化

    2.4 分析主要流程和策略机制

    • 对于主要流程应当首先给出抽象概括性的说明,之后再详细说明调用流程
    • 可以先给出框架部分的初始化流程,再给出组件的相关流程
    • 顶层组件的调用流程会贯穿所有的组件,通过抓住顶层组件的调用流程就可以找到各个组件的调用流程
    • 组件的主要流程涵盖两部分:各个组件的初始化流程+各个组件的调用流程,所有的流程不会出其右
    • 在分析流程的过程中加深对各个组件属性及API的理解,并补全对组件属性和API的说明
    • 在介绍组件调用流程的时候不是对每个组件都统一着墨,而是只以当前介绍的组件为主,对其它组件的行为可以只做抽象描述,等到介绍该组件时再详细分析

    3. 遵循的重要原则

    • 遵循先硬件后软件,先抽象后具体,结构与流程相结合的原则进行分析
  • 相关阅读:
    解剖Nginx·自动脚本篇(7)类型相关脚本系列
    解剖Nginx·自动脚本篇(6)编译器名称变量脚本 auto/cc/name
    解剖Nginx·自动脚本篇(5)编译器相关主脚本
    解剖Nginx·自动脚本篇(4)工具型脚本系列
    解剖Nginx·自动脚本篇(3)源码相关变量脚本 auto/sources
    解剖Nginx·自动脚本篇(2)设置初始变量脚本 auto/init
    解剖Nginx·自动脚本篇(1)解析配置选项脚本 auto/options
    解剖Nginx·模块开发篇(5)解读内置非默认模块 ngx_http_stub_status_module
    jupyter nb + scite 混合搭建成我的最爱IDE
    md语法之行内代码和代码片续集
  • 原文地址:https://www.cnblogs.com/smartjourneys/p/6723071.html
Copyright © 2020-2023  润新知