如何剖析一个内核子系统

1.前言

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

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

1)framework的整体介绍,包括基础知识、软件框架;

2)软件框架中涉及的组件的属性和API;

3) 分析主要流程,在分析流程的过程中加深对各个组件属性及API的理解

2.包含的主要部分

2.1 framework整体介绍

  • 基础知识

阐述要理解本模块,需要具备的背景知识,如需要理解i2c子系统,则需要对i2c协议有相关的了解。

此部分可以专门单独列为一章阐述

  • 硬件框架

一般给出硬件的框图架构,并对框图中相关的实体和接口给出解释

  • 软件框架

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

2.2 组件的属性和API

  • 介绍各个组件的属性和API

2.3 介绍主要流程

  • 分析主要流程,在分析流程的过程中加深对各个组件属性及API的理解
  • 主要流程可能是从上向下,从下向上,也可能是从中间到两边,可分别加以分析
  • 要注意在介绍整个流程的时候不是对每个组件都统一着墨,而是只以其中一个组件为主

3. 遵循的重要原则

  • 遵循先硬件后软件,先抽象后具体,结构与流程相结合的原则进行分析
时间: 2024-07-28 19:09:40

如何剖析一个内核子系统的相关文章

Linux 内核子系统之内存与进程管理子系统

Linux 内核子系统的组成 由以上7个子系统组成. 一.内存管理子系统 职能: 1.从虚拟地址到物理地址映射的管理. 2.物理内存分配的管理. 地址映射管理 2.1虚拟地址空间分布 在Linux中使用的是虚拟地址,但是在访问硬件的时候使用的是物理地址.比如程序中用malloc函数分配的都是虚拟地址,但是硬件在使用时用的是物理地址,这其中就有一个转化关系. 它所支持的虚拟地址空间是由硬件地址总线宽度决定的,比如32位地址总线支持4GB虚拟内存. 用户空间(0-3G):用户程序. 内核空间(3-4

存储子系统剖析——从存储子系统角度看FCoE模块

        note:在之前的一篇FCoE模块设计和实现的文章,大致讲到了FCoE模块的设计.虽然很清楚地讲了FcoE模块的组成,可是没有站在整个存储子系统的角度来看FCoE,总是有点局限的感觉,然后存储子系统和网络子系统是怎么交互的也没有说清楚,希望在这里这些疑问都能得到解答. 我们知道linux内核是层次设计的设计模式,存储子系统也不例外.下面这张图(来自网络)表示了linux下面存储子系统的层次化模块. e.g.Application 访问文件 根据上图,如果一个用户空间中的应用程序(

第四季-专题6-Linux内核子系统

专题6-Linux内核子系统 第1课-Linux内存管理子系统 1. 内存管理模型 (1)子系统简介 System Call Interface(SCI)系统调用接口 Process Management(PM) Virtual File System(VFS)虚拟文件系统 Memory Management(MM) Network Stack Arch 体系结构相关 Device Drivers(DD) 这七个子系统之间都是有所联系的,我们这阶段学习的是驱动子系统.它和内存管理子系统.进程管理

深入剖析一个完整的事务

oracle029 深入剖析一个完整的事务 2.图解一个事务的操作流程 Undo段的组成:段头.回滚块 事务ID:oracle为每个事务分配事务id select xid,xidusn,xidslot,xidsqn,ubablk,ubafil from v$transaction;// lists the active transactions in the system. null null null null null null insert into t values(1,'zhangsa

从源码剖析一个Spark WordCount Job执行的全过程

原文地址:http://mzorro.me/post/55c85d06e40daa9d022f3cbd WordCount可以说是分布式数据处理框架的”Hello World”,我们可以以它为例来剖析一个Spark Job的执行全过程. 我们要执行的代码为: sc.textFile("hdfs://...").flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_).collect 只有一行,很简单也很经典的代码.这里的c

ENode 2.0 第一个真实案例剖析-一个简易论坛(Forum)

前言 经过不断的坚持和努力,ENode 2.0的第一个真实案例终于出来了.这个案例是一个简易的论坛,开发这个论坛的初衷是为了验证用ENode框架来开发一个真实项目的可行性.关于ENode是什么,本文就不多介绍了,可以参考这篇文章的介绍.本文重点介绍一下ENode是如何帮助我们开发一个基于DDD+CQRS+Event Sourcing架构的应用程序的.这个论坛使用到了ENode, EQueue两个框架,EQueue是一个分布式的消息队列组件,该组件的主体思想是参考阿里的RocketMQ.当我们使用

Linux内核剖析 之 内核同步

主要内容 1.内核请求何时以交错(interleave)的方式执行以及交错程度如何. 2.内核所实现的基本同步机制. 3.通常情况下如何使用内核提供的同步机制. 内核如何为不同的请求服务 哪些服务? ====>>> 为了更好地理解内核是如何执行的,我们把内核看做必须满足两种请求的侍者:一种请求来自顾客,另一种请求来自数量有限的几个不同的老板.对于不同的请求,侍者采用如下的策略: 1.老板提出请求时,如果侍者空闲,则侍者开始为老板服务. 2.如果老板提出请求时侍者正在为顾客服务,那么侍者停

gec2440最简单的一个内核编译 linux2.6.30.4

A 最简单的内核编译: vim 打开 Makefile,修改为: ARCH=arm CROSS_COMPILE=/home/litingting/arm-linux/opt/FriendlyARM/toolschain/4.4.3/bin make s3c2410_defconfig 解释: 因为2410和2440很多地方是一样的,可以用2410的配置文件为基础来配置内核.在内核代码主目录下执行: make s3c2410_defconfig  类似于 cp s3c2410_defconfig

Android 5.0 SEAndroid下如何获得对一个内核节点的访问权限

Android 5.0下,因为采取了SEAndroid/SElinux的安全机制,即使拥有root权限,或者对某内核节点设置为777的权限,仍然无法在JNI层访问. 本文将以用户自定义的内核节点/dev/wf_bt为例,手把手教会读者如何在JNI层获得对该节点的访问权限. 第一步:找到需要访问该内核节点的进程(process),笔者自己这个节点由system_server进程来访问 第二步:打开文件AndroidL/android/external/sepolicy/file_contexts.