0.官网 https://www.kernel.org/doc/html/latest/trace/ftrace.html 1.ftrace是什么 ftrace是linux原生的一个trace工具,最早在2.6.27引入,跟踪能力强大,可以调试和分析诸如延迟、代码路径、性能等。能很好帮助开发者知道内核正在干什么,从而更好的分析系统问题。 1.1Ftrace跟踪工具由性能分析器(profiler)和跟踪器(tracer)两部分组成: 性能分析器:用来提供统计和直方图数据(需要CONFIG_FUNCTION_PROFILER=y)函数性能分析直方图 跟踪器:提供跟踪事件的详情函数跟踪(functi...

  oLu30ap4trcD   2023年11月13日   18   0   0 ftrac函数跟踪tracepoint

1.kprobe是什么? kprobe是一种动态探测技术,不用重新编译内核,在运行系统上插入模块方式,或者基于ftrace方式,动态的添加探测点(实现自己的回调函数),可以探测内核函数的参数和返回值。 kprobes的特点与使用限制:(1)kprobes允许在同一个被探测位置注册多个kprobe; (2)一般情况下,可以探测内核中的任何函数,包括中断处理函数。不过实现kprobes自身的函数不允许被探测,另外还有do_page_fault和notifier_call_chain; (3)对于内敛函数,kprobes无法保证所有实例都注册探测点;由于gcc可能自动将某些函数优化为内联函数,因此有...

  oLu30ap4trcD   2023年11月13日   18   0   0 kprobe探测函数

Linux初始化过程页表建立 Linux初始化过程,会依次建立如下页表映射:1.恒等映射:页表基地址idmap_pg_dir;2.粗粒度内核镜像映射:即上篇博文里的“第二次建立页表映射”,页表基地址init_pg_dir;3.fixmap映射:页表基地址为init_pg_dir,待paging_init之后为swapper_pg_end;4.细粒度内核镜像映射:页表基地址为swapper_pg_dir;5.线性映射:页表基地址为swapper_pg_dir;6.用户空间页表映射:页表基地址task->mm->pgd;上篇已经解析了1和2映射,这篇解析fixmap映射。 fixmap...

  oLu30ap4trcD   2023年11月13日   20   0   0 初始化固定映射

Linux初始化过程页表建立 Linux初始化过程,会依次建立如下页表映射:1.恒等映射:页表基地址idmap_pg_dir;2.粗粒度内核镜像映射:页表基地址init_pg_dir;3.fixmap映射:页表基地址为init_pg_dir,待paging_init之后为swapper_pg_end;4.细粒度内核镜像映射:页表基地址为swapper_pg_dir;5.线性映射:页表基地址为swapper_pg_dir;6.用户空间页表映射:页表基地址task->mm->pgd; 上篇解析fixmap映射,这里来解析主内核页表的创建,包括4.细粒度内核镜像映射和5.线性映射; 创建...

  oLu30ap4trcD   2023年11月13日   22   0   0 线性映射内存管理动态页表

在u-boot中遇到_armboot_start、_bss_start等这些变量,这些伪指令的用法涉及以下知识 1.汇编是“绝对引用”,即引用的就是地址 在start.s中 _TEXT_BASE:  .wordTEXT_BASE/uboot映像在SDRAM中的重定位地址,我设置为0x33e00000/  .globl_armboot_start  _armboot_start:  .word_start/_start是程序入口,链接完毕它的值是0x33e00000=TEXT_BASE/  arm-linux-objdump-Du-bo...

  oLu30ap4trcD   2023年11月02日   30   0   0 数据段linux代码段

链接器Linker:是一个程序,将一个或多个编译器或汇编生成的目标文件,及依赖库,链接为一个可执行文件。 GNULinker采用AT&T链接脚本语言; 链接脚本文件:包含ld程序链接的规则,其决定输出可执行文件的内存布局; LD命令:arm64版本的连接器是aarch64-linux-gnu-ld查看命令参数: aarch64-linux-gnu-ld--help LD命令的参数有很多,常用的如下: $(ARMGNU)-ld-T$(SRC_DIR)/linker.ld-Mapxxx.map-o$(BUILD_DIR)/xxx.elf$(OBJ_FILES) 常...

  oLu30ap4trcD   2023年11月02日   47   0   0 加载LDGNU链接脚本linux

ARM64的汇编器 (1)ARM公司官方的汇编器;(2)GNUAS汇编器:aarch64-linux-gnu-as;(3)gcc采用as作为汇编器,所以汇编码是AT&T格式;(4)AT&T格式:源于贝尔实验室;(5)ARM格式:ARM官方汇编语法; 汇编语法 (1)label:任何以冒号结尾的标识符,都被认为是一个标号;(2)注释:“//”,注释“”,在一行的开始,注释整行;(3)指令、伪指令、寄存器,可以全部大写或者小写,GNU默认风格是小写;(4)Symbol:代表它所在的地址,也可以当作变量或者函数来使用;全局symbol,可以用.global声明;局部symbol,局...

  oLu30ap4trcD   2023年11月02日   49   0   0 数据GNU伪指令AS

ARM64中断处理过程:https://www.daodaodao123.com/?p=146上文总结了ARM64裸机中断处理的详细过程,这里主要总结下linux中断处理相关内容; 0.为什么有中断? 中断,本质上是外设发生了事变,需要异步的通知(经由中断控制器,路由给)CPU;这个过程涉及三部分硬件:外设->中断控制器->CPU 1中断处理过程: 外设事变发生后,发送中断信号给中断控制器,中断控制器经过仲裁,路由给CPU;上图是中断控制器的状态机转换图,一个完整的中断发生过程如下(假设现在有一个触摸屏的外设,配置为高电平触发): 中断控制器默认是inactive状态; 外设有事...

  oLu30ap4trcD   2023年11月02日   37   0   0 软中断进程上下文中断上下文

1.安装vim sudoaptinstallvim 按自己习惯配置 vim/.vimrc setnocompatible setnu filetypeon sethistory=1000 setbackground=dark syntaxon setautoindent setsmartindent settabstop=4 setshiftwidth=4 setshowmatch setguioptions-=T setruler sethls setincsearch setcursorline setfencs=utf-8,ucs-bom,euc-jp,gb18030,gbk,gb23...

  oLu30ap4trcD   2023年11月02日   46   0   0 vimgit补全

首先是引导程序,即bootloader,简单说即bootloader会做如下事情:(1)初始化物理内存;(2)设置设备树;(3)解压缩内核映像,将其加载到内核运行地址(可选);(4)跳转到内核入口地址;下面进入Linux范畴: 链接脚本vmlinux.lds.S 第一个要看的文件,“arch/arm64/kernel/vmlinux.lds.S”,Linux内核的链接脚本。 OUTPUT_ARCH(aarch64)///编译目标文件格式为aarch64 ENTRY(_text)///内核入口地址 Linux内核的内存布局定义 / 内核的内存布局: 包括代码段(.text),只读数据段(....

  oLu30ap4trcD   2023年11月02日   26   0   0 Linux内核页表内核启动代码

进程是独立的资源空间,每个进程都有自己独立的页表; 用户进程创建页表发生在三个时刻:创建进程fork时;缺页异常时;进程切换时; 1.创建进程fork 核心函数 __do_fork() -->copy_process -->dup_mm() dum_mm函数 staticstructmm_structdup_mm(structtask_structtsk, structmm_structoldmm) { structmm_structmm; interr; mm=allocate_mm(); if(!mm) gotofail_nomem; memcpy(...

  oLu30ap4trcD   2023年11月02日   14   0   0 缺页页表

预测模块工作过程: 预测模块根据输入的地图数据,以及传感器融合的数据,生成并输出一些预测数据, 这些预测数据,包含了周围所有其他机动车以及其他移动物体的未来状态。 通常,这些预测数据可以展示为若干可能的运动轨迹。 预测数据还包括每条轨迹的几率大小; 预测技术常用有两种: 1.基于模型法 使用运动数学模型,预测运动轨迹, 2.数据驱动法 依赖于机器学习和案例学习 基于模型方法吸收了有关物理限制的知识(来自道路交通状况等),而机器学习可以根据大量历史数据来学习。 1.数据驱动法 一般分两个阶段: 第一阶段,离线训练阶段,,算法从数据中学习模式; 用轨迹聚合算法 第二阶段,在线预测阶段...

1.线程的负载均衡 对task_struct做负载均衡; 分布式系统中,linux的每个核都自动以劳动为乐,(共产主义社会)。 分别对RT任务和普通线程做负载均衡: RT任务:将n个优先级最高的线程自动分配到n个核; pull_rt_task()push_rt_task() 普通任务: 周期性负载均衡,在时钟tick会检查哪个核空闲,优先使空闲核工作(从负载重的核pull任务,或push任务给空闲核,每个CPU以劳动为乐); idle时负载均衡;某个核进入idle状态,会主动pull任务执行; fork和exec时负载均衡;创建的新进程,会放到最闲的核去跑; 软亲和性(affin...

关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~