fanxiaoyu321
码龄13年
关注
提问 私信
  • 博客:491,844
    社区:405
    492,249
    总访问量
  • 171
    原创
  • 126,172
    排名
  • 274
    粉丝
  • 12
    铁粉

个人简介:天道酬勤

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:陕西省
  • 加入CSDN时间: 2012-04-11
博客简介:

九天小哥的专栏

博客描述:
天道酬勤
查看详细资料
  • 原力等级
    当前等级
    4
    当前总分
    769
    当月
    8
个人成就
  • 获得204次点赞
  • 内容获得83次评论
  • 获得0次收藏
  • 代码片获得549次分享
创作历程
  • 3篇
    2024年
  • 5篇
    2023年
  • 7篇
    2022年
  • 15篇
    2021年
  • 31篇
    2020年
  • 59篇
    2019年
  • 42篇
    2018年
  • 4篇
    2017年
  • 3篇
    2015年
  • 5篇
    2014年
  • 4篇
    2013年
成就勋章
TA的专栏
  • Linux Netfilter代码分析
    19篇
  • Linux进程调度
    8篇
  • linux网络设备接口层
    25篇
  • ARM体系结构
    15篇
  • Netlink
    4篇
  • linux网络层
    11篇
  • linux网络UDP层
    6篇
  • linux网络套接字层
    2篇
  • linux路由
    10篇
  • 邻居子系统
    8篇
  • CAN
    3篇
  • Python
    1篇
  • linux wifi驱动
    2篇
  • binder
    5篇
  • linux互斥机制
    2篇
  • Android libc中dns部分源码分析
    10篇
  • Android
    13篇
  • Linux系统编程
    4篇
  • Linux系统管理
    4篇
  • FPGA
    1篇
  • Android Framework
    4篇
  • 3GPP
    1篇
  • linux网络
    30篇
  • Netfilter
    19篇
兴趣领域 设置
  • 服务器
    linux
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Linux RT调度器之负载均衡

​RT调度类的调度策略是:保证TopN(N为系统cpu个数)优先级的任务可以优先获得cpu资源。除了在任务选核时要遵守一定规则外,在其它流程中也注意,我们姑且将这部分逻辑称作RT调度器的负载均衡(这与CFS调度类的负载均衡有很大的不同)。这篇笔记分析了RT调度类负载均衡相关代码的实现,代码使用的是5.10。
原创
发布博客 2024.08.05 ·
1189 阅读 ·
12 点赞 ·
1 评论 ·
31 收藏

Linux RT调度器之任务选核

调度器在任务创建、任务唤醒以及任务执行exec调用时都会为任务重新选择运行的cpu(负载均衡触发的选核不在这里讨论)。调度器框架将选核策略交给具体的调度类实现,框架只实现了一个兜底的策略,在调度类没有选出合适的cpu时由兜底策略为任务选择一个运行cpu。这篇笔记分析了RT调度类是如何为RT任务完成选核的。代码使用的是Linux 5.10。
原创
发布博客 2024.08.03 ·
1217 阅读 ·
17 点赞 ·
1 评论 ·
13 收藏

cpufreq子系统

cpufreq通过sysfs向用户态暴露接口,这些节点部分是为了展示内核的配置,部分节点是可以配置的,通过这些节点可以控制cpufreq的一些行为。cpufreq子系统的核心层,负责管理子系统中的policy、governor和driver组件,是三者的纽带,通过core层,实现了调频策略和调频机制的分离。调频策略,每个CPU都有一个调频策略,规定了该CPU的最大、最小可运行频率等信息。可以独立于core层实现,通过规定的接口和core层交互。
原创
发布博客 2024.01.06 ·
1415 阅读 ·
22 点赞 ·
0 评论 ·
19 收藏

Linux调度域与调度组

这篇笔记重点分析了内核调度域相关的数据结构以及内核用于构建调度域的代码实现,以此来加深对调度域的理解。调度域是调度器进行负载均衡的基础。
原创
发布博客 2023.11.21 ·
905 阅读 ·
2 点赞 ·
0 评论 ·
5 收藏

Linux CPU物理拓扑&CPU capacity

Linux支持非常多的硬件,这些硬件有各种各样的CPU搭配,大到多个NUMA节点组成的大型机,小到只有一个处理器的小型嵌入式设备。内核会在开机时根据硬件配置建立一组数据结构来描述系统的CPU物理拓扑。CPU物理拓扑的一个典型使用者就是调度域。CPU物理拓扑相关的概念也可以见的介绍。此外,一个系统中的CPU架构可以有多种,典型的如ARM的big-LITTLE架构,这些CPU的能力是不一样的,这种设计可以较好的兼顾性能和功耗。Linux内核也需要建立一组数据结构来描述各cpu的能力。
原创
发布博客 2023.11.16 ·
825 阅读 ·
3 点赞 ·
0 评论 ·
5 收藏

Linux组调度

组调度是一个可选的特性,开关为CONFIG_CGROUP_SCHED,开启后,将基于CGroup机制实现一个名为"cpu"的资源控制器,该控制器实现对CPU时间的管理。目前只有RT调度类和CFS调度类支持组调度,它们的开关分别为CONFIG_RT_GROUP_SCHED和CONFIG_FAIR_GROUP_SCHED,要实现完整的组调度功能,这两个宏至少要打开一个。
原创
发布博客 2023.11.12 ·
918 阅读 ·
0 点赞 ·
0 评论 ·
4 收藏

Linux RT调度器之带宽控制

RT调度器的带宽控制核心思想是:限制CPU上可运行的RT任务在内占用CPU的时长不能超过,检测周期和运行门限是RT带宽控制的两个可配置参数。RT调度类的带宽控制默认在cpu运行队列上生效。支持组调度后,可以扩展到任务组的运行队列上生效。这篇笔记记录了RT调度器的带宽控制相关实现,代码使用的5.10。
原创
发布博客 2023.11.12 ·
1158 阅读 ·
1 点赞 ·
0 评论 ·
3 收藏

linux任务优先级

这篇笔记记录了linux任务(指线程而非进程)优先级相关的概念,以及用户态可以用来操作这些优先级的系统调用。
原创
发布博客 2023.10.21 ·
622 阅读 ·
1 点赞 ·
1 评论 ·
4 收藏

GCC链接脚本语法

在操作系统之上编程时我们是不需要关注这部分内容的,因为按照ld默认的行为链接即可,然后所有的事情都交给作系统处理完成。但是在嵌入式开发过程中,特别是移植Bootloader和内核的时候,链接脚本就显得格外的重要了。因为这个时候程序的运行环境都是裸机环境,没有任何的内存管理功能,代码操作的是物理地址,所以就要求我们对程序二进制镜像在链接和运行时的内存布局进行理安排。下面介绍的链接脚本就是干这件事的。详细的链接脚本语法可以参考官方文档《Using as》。链接脚本格式首先,链接脚本就是文本文件。其中
原创
发布博客 2022.04.17 ·
3803 阅读 ·
4 点赞 ·
3 评论 ·
23 收藏

GCC内嵌汇编

这篇笔记录的内容来自GCC手册中关于内嵌汇编的说明。通过asm关键字,可以实现在C/C++代码中插入汇编代码,GCC提供了两种格式的内嵌汇编代码:1)基本asm汇编(无操作数);2)扩展asm汇编(有一个或多个操作数)。推荐使用扩展asm汇编,但也有些场景是必须使用基本asm汇编来完成。基本asm汇编基本asm汇编语法如下:asm [ volatile ] ( AssemblerInstructions )asm是GNU扩展的关键字,如果可以使用__asm__(对编译选项有要求),那么
原创
发布博客 2022.04.17 ·
3420 阅读 ·
4 点赞 ·
0 评论 ·
14 收藏

ARM的异常处理机制

目录异常种类异常中断向量表异常处理进入部分复位异常未定义指令异常SWI软件中断指令预取中止异常中断数据访问中止异常中断IRQ异常FIQ异常离开部分SWI软件中断未定义指令异常中断IRQ和FIR异常中断指令预取中止异常数据访问中止异常异常种类ARM共有如下7种异常模式:复位(RESET):当处理器复位引脚有效时,系统产生复位异常中断。复位异常中断通常在系统加电和系统复位时发生,直接跳转到复位中断向量处执行称为软复位。 未定义的指
原创
发布博客 2022.04.01 ·
5545 阅读 ·
5 点赞 ·
1 评论 ·
62 收藏

Generic Netlink机制

文章目录数据结构genl_familygenl_ops多播组: genl_multicast_groupGeneric Netlink框架Generic Netlink消息消息头部消息API消息的封装消息的解析消息的发送协议初始化family的管理family的注册&去注册family操作集的注册&去注册控制familyfamily查询命令: ctrl_getfamily()消息接收: genl_rcv()genl_rcv_msg()Generic Netlink组播多播组的注册&去
原创
发布博客 2022.03.27 ·
1868 阅读 ·
0 点赞 ·
0 评论 ·
8 收藏

Netlink协议族核心操作

文章目录数据结构传输控制块: netlink_sock套接字操作集: netlink_ops协议族地址: sockaddr_nl创建: netlink_create()__netlink_create()绑定: netlink_bind()netlink_autobind()netlink_insert()连接: netlink_connect()消息发送: netlink_sendmsg()单播发送: netlink_unicast()单播发送给内核: netlink_unicast_kernel()单播
原创
发布博客 2022.03.26 ·
2082 阅读 ·
1 点赞 ·
0 评论 ·
8 收藏

Netlink协议族

文章目录数据结构协议对象: netlink_table协议族初始化Netlink协议管理Netlink协议注册: netlink_kernel_create()Netlink消息消息头消息整体格式相关API消息payload格式相关API消息属性格式相关API内核其它消息API消息的构造消息的解析消息的发送消息属性相关API用户态消息宏这篇笔记记录了Netlink协议族的初始化,并对Netlink消息格式及对应的内核态API进行了详细解释。Netlink用户态编程麻烦的一点是用户态对Neltink消息的处
原创
发布博客 2022.03.26 ·
2394 阅读 ·
3 点赞 ·
0 评论 ·
5 收藏

Netlink组播机制

文章目录数据结构协议对象: netlink_table传输控制块: netlink_sock组播发送控制信息: netlink_broadcast_data协议注册时套接字绑定时netlink_realloc_groups()更新签约信息: netlink_update_subscriptions()更新监听信息: netlink_update_listeners()套接字连接时套接字发送时do_one_broadcast()小结数据结构下面仅罗列了和组播机制相关的数据结构及其字段。协议对象: net
原创
发布博客 2022.03.26 ·
3162 阅读 ·
2 点赞 ·
0 评论 ·
5 收藏

linux网络校验和计算API

文章目录校验和算法IP首部校验和计算APIip_compute_csum()ip_fast_csum()ip_send_check()ip_decrease_ttl()通用校验和计算APIskb_checksum()csum_fold()csum_partial系列csum_block_add/sub()csum_add/sub()skb_checksum_help()csum_tcpudp_magic()校验和算法发送方先把校验和字段置为0,然后对参与校验的数据每16bit进行二进制反码求和,然后将结
原创
发布博客 2021.12.18 ·
1994 阅读 ·
0 点赞 ·
0 评论 ·
9 收藏

套接字缓存区sk_buff

文章目录数据结构缓存区: sk_buffskb指针: sk_buff_data_t协议头指针缓存区队列: sk_buff_headskb共享信息: skb_shared_info片段: skb_frag_t数据组织格式关于数据长度skb的分配alloc_skb()dev_alloc_skb()skb的释放skb_release_all()skb_release_head_state()skb_release_data()数据预留和对齐skb_reserve()skb_push()skb_put()skb_p
原创
发布博客 2021.12.15 ·
2293 阅读 ·
0 点赞 ·
0 评论 ·
7 收藏

邻居子系统之代理功能

文章目录代理条件通用代理机制延时处理请求代理请求入队列: pneigh_enqueue()代理请求处理定时器: neigh_proxy_process()代理类型目的地址代理配置项: pneigh_entry目低地址代理配置项查询: pneigh_lookup()ARP代理arp_process()arp代理启用条件: arp_fwd_proxy()邻居子系统支持代理功能,即主机在收到一个目的地址查询不属于自己地址的ARP请求时,可以代替真正的主机做出响应,这就是邻居代理。代理条件当然,主机不能对任何
原创
发布博客 2021.11.29 ·
1931 阅读 ·
0 点赞 ·
1 评论 ·
3 收藏

邻居子系统之邻居项的回收

文章目录邻居项的销毁: neigh_destroy()垃圾回收同步清理异步清理邻居项的刷新L3地址变化: neigh_ifdown()L2地址变化: neigh_changeaddr()neigh_flush_dev()邻居项删除涉及邻居子系统的垃圾回收机制,所以这里单独分析其代码实现。邻居项删除主要有如下三个原因:邻居子系统感知到该邻居项不可达,将邻居项状态设置成了NUD_FAILED,这种邻居项会有异步垃圾回收机制回收;该邻居项关联的L2地址发生了变化,但是它L3地址不变,这种邻居项需要先进入
原创
发布博客 2021.11.29 ·
769 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

邻居子系统之Netlink接口

文章目录数据结构邻居项Netlink命令消息: ndmsg命令行添加邻居项: neigh_add()删除邻居项: neigh_delete()设置邻居协议参数: neightbl_set()在邻居子系统框架的系统初始化函数neigh_init()中,有看到其向RtNetlink注册了几个事件用于配置邻居项,这篇笔记分析下邻居项的配置过程。数据结构邻居项Netlink命令消息: ndmsgstruct ndmsg{ __u8 ndm_family; __u8 ndm_pad1; __u16
原创
发布博客 2021.11.29 ·
1110 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏
加载更多