
linux
文章平均质量分 85
扫地聖
make your heart ...
展开
-
【eventfd使用案例】
evenfd 使用原创 2023-02-27 20:46:16 · 521 阅读 · 0 评论 -
perf工具使用
perf研究总结最近在天数搞一个性能的工具,需要抓callstack 包括用户态和内核的太调用栈,那么就顺便研究了一下perf工具。做了一个简单的总结。perf --help显示具体的命令,每个命令如何使用,再perf cmd --help会显示参考链接参考链接1参考链接2ubuntu安装perf工具Ubuntu:apt install linux-tools-commonperf 原理Perf通过系统调用sys_perf_event_open 陷入到内核中,内核根据perf 提供的信原创 2022-05-07 16:03:34 · 2525 阅读 · 0 评论 -
kernel调度(2)----主调度器和周期性调度器
进程切换的前提条件设置TIF_NEED_RESCHED的时机其实在任务做切换的时候,首先要判读task_struct 中的thread_info中的flag 变量是否设置了TIF_NEED_RESCHED这个标记,如果设置了,才有可能被切换,否则这个线程还会一直运行。下面是thread_info中的变量:那么在什么时候去设置这个标记呢?其实主要在以下时机进行:(1)scheduler_tick 时钟中断函数内设置这里以cfs调度为例,代码流程如下图所示,这里就不做详细的流程介绍了也就是在时钟中原创 2022-01-30 10:01:58 · 2246 阅读 · 0 评论 -
用芯探核读书笔记--第一章启动分析
第一章内核启动分析(1)内核启动的第一入口vmlinux(非压缩内核):arch/mips/kernel/head.S 中的 kernel_entry–>start_kernelvminuz(压缩内核):rch/mips/boot/compressed/head.S 中的 start 标号–>start_kernel(2)第一入口的作用1:具体 CPU 类型相关的初始化;2:设置主核协处理器 0 的初始 Status 寄存器;3,清零.bss 段(未初始化全局数据段,位于__bss原创 2021-11-22 09:29:25 · 1231 阅读 · 0 评论 -
kernel调度(1)----基本知识介绍
调度简介最近在学习linux 内核调度相关的知识,也看了好多文章,内核代码,下面就学习的内容做个梳理,有助于自己的记忆,可能有的地方自己理解不对,希望多多指教。下面就从几个基本概念开始。什么是调度有过点操作系统知识的人都知道,调度的工作主要就是完成操作系统内进程切换的过程,让多个进程多个任务可以轮流的使用cpu的资源。那么在这个过程中涉及到很多调度相关的概念。下面就从这些简单的概念开始调度的对象–线程进程和线程的概念这里就不再详细的说,大家都知道。其实在内核里面,对于调度来说是不分进程还是线程概念原创 2021-11-21 18:16:56 · 2354 阅读 · 1 评论 -
内核报reet ehci 问题分析
问题环境:a:硬件环境:3C5000L 双路服务器b:软件内核版本:linux-4.19.167-next问题现象:系统启动过程中和启动之后,bmc kvm 没有连接的情况下,内核不断的打印usb 1-3: reset high-speed USB device number 2 using ehci-pci如下图所示:连接上以后,就不再报了。问题定位:根据以上现象,查看内核代码得知,这个打印是在函数hub_port_init 内打印出来的,代码如下:追踪函数的调用关系得知,调用关系原创 2021-06-02 11:30:04 · 4131 阅读 · 1 评论 -
linux下usb 驱动
USB博大精深不是一篇文章就能够解释清楚的。想要深入研究USB的话,USB协议(外加Host和OTG协议)是必要的知识,另外,国内有本<<USB那些事>>也写的很好很详细,唯一美中不足的就是写得太详细了反而感觉思路架构不是很清晰了。今天我们来简单地把USB在Linux里的结构框架大致整理下,其中重点解析下USB Core和Hub。0. 预备理论说实话,读USB协议还是蛮痛苦的,它仅仅是一个协议,一个在USB世界里制定的游戏规则,就像法律条文一样,它并不是为了学习者而写的,可读原创 2021-06-02 11:20:03 · 6992 阅读 · 0 评论 -
start_kernel()之setup_arch()函数详解
该函数主要是根据处理器硬件平台具体的机器型号来设置系统。解析Linux系统的命令行,设置0号jin cheng 的内存描述结构init_mm,系统内存管理初始化,统计并注册系统各种资源,以及其他杂项的初始化功能。注意这个函数在具体的硬件平台上是有所差别的,我们这里以ARM平台为例开始讲解。下面是代码:void __init setup_arch(char **cmdline_p){_...原创 2019-02-25 06:41:22 · 1968 阅读 · 0 评论 -
linux下文件字符的替换脚本
#! /bin/sh func_loop(){ ...原创 2018-06-01 15:22:10 · 649 阅读 · 0 评论