自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(365)
  • 资源 (4)
  • 问答 (1)
  • 收藏
  • 关注

转载 route -n命令——显示系统的网络路由表

下表中第一条路由路径是将所有目的地址通过网关192.168.0.1传输(0.0.0.0表示所有目的地址),该路由的接口是ens33,跃点数为100;U--路由是活动的 H--主机路由 G--网关路由。Genmask:目标网络的网络掩码,”255.255.255.255”为主机,”0.0.0.0”为默认路由。R--恢复动态路由产生的表项 D--由路由的后台程序动态创建。M--由路由的后台程序修改!

2024-02-21 19:49:22 62

转载 linux 内核协议栈发包流程(dev_queue_xmit & qos & NET_TX)

dev_queue_xmit、qos队列 & NET_TX软中断

2023-09-05 10:25:24 500

转载 linux内核协议栈之GRO (Generic Receive Offload)

GRO(Generic Receive Offload)从软件层面实现将多个 TCP/UDP 数据包聚合在一个skb结构,然后作为一个大数据包交付给上层的网络协议栈,以减少上层协议栈处理skb的开销,提高系统接收数据包的性能。

2023-07-17 16:36:11 1506

转载 e1000网卡和DMA

e1000网卡中DMA资源申请以及工作原理

2023-03-01 20:03:45 832 1

转载 对流式DMA和一致性DMA的认识

流式DMA和一致性DMA的区别

2023-03-01 19:30:57 471

原创 linux内核协议栈 之socket传输队列长度sk_wmem_alloc统计

在 socket 的结构体里有一个 sk_wmem_alloc 字段,该字段表示已经提交到 ip 层,但还没有从本机发送出去的 skb 占用空间大小。

2023-01-11 16:54:09 622

转载 linux内核协议栈之网卡发送队列选择

对于多队列的网络设备,real_num_tx_queues大于1,如果网络设备定义了自身的队列选择函数(ixgbe_select_queue),使用此函数;否则,使用netdev_pick_tx选择发送队列。最后,队列选择完成之后,将队列索引保存到skb的成员queue_mapping中。

2023-01-09 19:37:56 1434

转载 ixgbe网卡队列数量设置

网卡实际的多队列配置取决于配置属性

2023-01-09 17:19:52 918

转载 linux内核协议栈 之 TCP自动阻塞CORK控制

当应用程序在使用write或者sendmsg系统调用连续的发送少量数据包时,内核试图将这些小包尽可能的合并在一起发送,以降低总得数据包量。得以实现的前提是,至少有一个同数据流的之前数据包正在Qdisc队列或者网络设备的队列中等待发送。

2023-01-06 15:07:13 338

转载 linux内核协议栈 之 TCP-TSQ

TCP Small Queues的目的是限制每个TCP连接在Qdisc和device队列中的skb数量,以达到降低RTT(Round-Trip Time)和避免 BufferBloat 的目的。

2023-01-06 14:20:11 481

转载 linux内核协议栈 之 GSO逻辑分析

GSO用来扩展之前的TSO,目前已经并入upstream内核。TSO只能支持tcp协议,而GSO可以支持tcpv4, tcpv6, udp等协议。

2023-01-05 16:12:55 1748

转载 TCP Fast Open原理和使用

TFO

2023-01-03 15:29:44 621

转载 KCP 协议源码解析

KCP实现

2022-12-26 15:59:15 607

转载 linux 内核协议栈 NAPI机制与处理流程分析(图解)

结合e1000和iixgb类型的网卡说明NAPI工作原理

2022-10-13 16:11:47 3426 1

转载 ARM WFI和WFE指令

目录1 前言2 WFI和WFE2.1 共同点2.2 不同点3 使用场景3.1 WFI3.2 WFE蜗蜗很早以前就知道有WFI和WFE这两个指令存在,但一直似懂非懂。最近准备研究CPU idle framework,由于WFI是让CPU进入idle状态的一种方法,就下决心把它们弄清楚。WFI(Wait for interrupt)和WFE(Wait for event)是两个让ARM核进入low-power standby模式的指令,由ARM architecture定义,由ARM core实现。听着挺简单,

2022-06-08 10:57:01 1707 1

转载 linux dma机制

目录1 物理地址、虚拟地址和总线地址2 DMA能搬运哪些内存?3 DMA的寻址能力4 两种类型的DMA mapping:一致性DMA映射&流式DMA映射4.1 一致性DMA4.2 流式DMA5 一致性DMA映射API的使用5.1 申请一致性DMA5.2 释放一致性DMA5.3 一致性小块DMA的管理:DMA pool6 流式DMA映射API的使用6.1 DMA的方向6.2 流式DMA相关接口6.2.1 映射一整块内存区域6.2.2 映射sc

2022-05-26 16:39:57 2889

转载 linux并发机制Ⅲ---信号量机制分析

1概述信号量semaphore,是操作系统中一种常用的同步与互斥的机制; 信号量允许多个进程(计数值>1)同时进入临界区; 如果信号量的计数值为1,一次只允许一个进程进入临界区,这种信号量叫二值信号量; 信号量可能会引起进程睡眠,开销较大,适用于保护较长的临界区; 与读写自旋锁类似,linux内核也提供了读写信号量的机制;2信号量2.1 流程分析可以将信号量比喻成一个盒子,初始化时在盒子里放入N把钥匙,钥匙先到先得,当N把钥匙都被拿走完后,再来拿钥匙的人就需要等待了,只有等...

2022-05-19 15:13:57 519

转载 linux并发机制Ⅱ---mutex机制分析

目录1概述2optimistic spinning2.1 MCS锁2.2 osq流程分析2.2.1 osq_lock2.2.2 osq_unlock2.2.3osq_wait_next3mutex3.1 数据结构3.2 加锁流程分析3.2.1 fast-path3.2.2 mid-path3.2.3 slow-path3.3 释放锁流程分析1概述Mutex互斥锁是Linux内核中用于互斥操作的一种同步原语; 互斥锁是一种休眠锁,...

2022-05-18 17:44:46 890

转载 linux并发机制Ⅰ--- spinlock/rwlock/seqlock原理剖析(基于ARM64)

目录1概述2spinlock原理分析2.1spin_lock/spin_unlock2.2spin_lock_irq/spin_lock_bh3rwlock读写锁4seqlock顺序锁1概述吹起并发机制研究的进攻号角了!作为第一篇文章,应该提纲挈领的介绍下并发。什么是并发,并发就是:你有两个儿子,同时抢一个玩具玩,你一巴掌打在你大儿子手上,小儿子拿到了玩具。并发是指多个执行流访问同一个资源,并发引起竞态。来张图吧:图中每一种颜色代表一种竞...

2022-05-18 11:21:58 839

转载 linux进程调度器Ⅰ----名词解释

目录1概述2概念2.1 进程2.2 进程状态2.3 scheduler 调度器2.4 runqueue 运行队列2.5 task_group 任务分组3调度程序3.1 主动调度-schedule()3.2 周期调度 -schedule_tick()3.3 高精度时钟调度 -hrtick()3.4 进程唤醒时调度 -wake_up_process()1概述从这篇文章开始,将开始Linux调度器的系列研究了。本文也会从一些基础的概念及数...

2022-05-05 14:30:32 550

转载 linux进程调度器Ⅱ----CPU负载

目录1 概述2全局CPU平均负载2.1 基础概念2.2 流程2.3 计算方法3运行队列CPU负载4PELT4.1 PELT计算方法4.2 PELT计算调用1 概述CPU负载(cpu load)指的是某个时间点进程对系统产生的压力。来张图来类比下(参考Understanding Linux CPU Load)CPU的运行能力,就如大桥的通行能力,分别有满负荷,非满负荷,超负荷等状态,这几种状态对应不同的cpu load值; 单CPU满负荷运...

2022-05-05 14:09:05 411

转载 linux进程调度器Ⅲ----进程切换

目录1 概述2抢占2.1 用户抢占2.1.1 抢占触发点2.1.2 抢占执行点2.2 内核抢占2.2.1 抢占触发点2.2.2 抢占执行点2.3 preempt_count3上下文切换3.1__schedule()3.2context_switch()1 概述进程切换:内核将CPU上正在运行的进程挂起,选择下一个进程来运行。ARM架构中,CPU上一次只能运行一个任务,内核需要为任务分配运行时间来进行调度,以便同时能处理多个任务请求。如下...

2022-04-28 19:06:33 262

转载 linux进程调度Ⅳ----组调度及带宽控制

目录1概述2task_group2.1 调度关系2.2 权重(shares)3cfs_bandwidth3.1 数据结构3.2 流程分析3.2.1 初始化流程3.2.2 用户设置流程3.2.3throttle限流操作3.2.4 总结1概述组调度(task_group)是使用Linuxcgroup(control group)的cpu子系统来实现的,可以将进程进行分组,按组来分配CPU资源等。比如,看一个实际的例子:A和B两个用户使用同一...

2022-04-28 16:58:04 518

转载 linux进程调度Ⅴ----CFS调度器

目录1概述2数据结构2.1 调度类2.2 rq/cfs_rq/task_struct/task_group/sched_entity3流程分析3.1 runtime与vruntime3.2 CFS调度tick3.3 任务出队入队3.3 任务创建3.4 任务选择1概述Completely Fair Scheduler,完全公平调度器,用于Linux系统中普通进程的调度。 CFS采用了红黑树算法来管理所有的调度实体sched_entity,算法效率为...

2022-04-28 09:55:58 692

转载 linux进程调度Ⅵ----实时调度器

目录1概述2数据结构3流程分析3.1 运行时统计数据3.2 组调度3.3 带宽控制3.4 调度器函数分析3.4.1 pick_next_task_rt3.4.2 enqueue_task_rt/dequeue_task_rt1概述在Linux内核中,实时进程总是比普通进程的优先级要高,实时进程的调度是由Real Time Scheduler(RT调度器)来管理,而普通进程由CFS调度器来管理。实时进程支持的调度策略为:SCHED_FIFO和SCHED...

2022-04-27 20:41:11 905

转载 linux 内存管理

目录1Linux内存管理概述1.1 内存的层次结构1.2 虚拟内存概述1.2.1 虚拟内存基本思想1.2.2 进程虚拟地址空间1.3 内核空间到物理空间的映射1.3.1 内核空间的线性映射1.3.2 内核镜像的物理存储1.4 虚拟内存实现机制2进程用户空间管理2.1 进程用户空间布局2.2 进程用户空间的内核描述2.2.1 概述2.2.2 mm_struct 结构2.2.3 vm_area_struct 结构2.2.4 实例:内核态打印虚存..

2022-04-07 20:01:24 3675

转载 linux CMA 内存分配器(Contiguous Memory Allocator)

目录1 什么是CMA2 CMA配置2.1 cmdline 配置2.2 设备树配置节点2.3 其他CMA区创建3 CMA 初始化cma_init_reserved_mem()4 CMA区域释放给buddy4.1cma_init_reserved_areas()4.2 cma_activate_area()4.3init_cma_reserved_pageblock()【核心】5 CMA的分配6 CMA的释放7 CMA与buddy1 什么是CMA...

2022-04-06 19:30:37 1499

转载 linux内存管理之 ION 内存管理器浅析Ⅰ(system heap)

目录1 什么是ION2 ION中不同 type 的 heap3 ION分配(以system heap为例)3.1 ion_alloc()3.2 ion_system_heap_allocate()3.3 alloc_largest_available()3.4alloc_buffer_page()3.5 ion_page_pool_alloc()3.6 ion_page_pool_remove()3.7 ion_page_pool_alloc_pages()4..

2022-04-06 16:48:57 7455

转载 linux内存管理之 ION 内存管理器浅析Ⅱ(system contig heap)

目录1 system contig heap 与 system heap2 system contig heap创建3 system contig heap内存分配4 system contig heap内存释放1 system contig heap 与 system heap从代码中我们看到system contig heap与system heap同属一个文件中,ion_system_heap.c相同点:它们都是根据用户传递的字节len,转换成order,从buddy中

2022-04-06 16:03:37 695

转载 linux DMA机制实现(e1000资源分配)

目录1 计算机组成原理中的DMA1.1 外设(I/O)和内存之间的数据传送控制3种方式1.2I/O设备与主存信息传送的控制方式(图解)1.3三种方式的CPU工作效率比较2 Linux网络子系统中DMA机制的实现2.1 DMA机制在TCP/IP协议模型中的位置2.2数据链路层上网卡对数据包的处理2.3 源码分析具体网卡(4.19内核)1 计算机组成原理中的DMA1.1 外设(I/O)和内存之间的数据传送控制3种方式以往的I/O设备和主存交换信息都要经过CP...

2022-03-23 10:44:44 1747

转载 ifconfig 命令详解

参数说明-a 显示全部接口信息[root@controller hello]# ifconfig -aenp0s3: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500 inet 192.168.10.202 netmask 255.255.255.0 broadcast 192.168.10.255 inet6 fe80::a00:27ff:febc:4068 prefixl

2022-03-18 17:04:01 6950

转载 linux 内核 高精度定时器(hrtimer)实现机制

目录1 hrtimer 概述2 相关数据结构2.1hrtimer2.2hrtimer_clock_base2.3hrtimer_cpu_base3 高精度定时器相关API3.1 高精度定时器层初始化hrtimers_init3.2 定时器初始化 hrtimer_init3.3 定时器移除remove_hrtimer3.4 定时器激活hrtimer_start_range_ns3.5 定时器的迁移switch_hrtimer_base3.6 查找...

2022-02-18 14:41:50 6742 1

转载 linux 内核 定时器(timer)实现机制

目录1 相关数据结构1.1timer_list1.2timer_base2 定时器工作过程2.1 桶编号计算2.2 通过定时器找到对应的timer_base结构体2.3 定时器的删除2.4 定时器的添加和修改2.5 定时器的迁移2.6 tick 到来的处理(时间轮)3 使用实例1 相关数据结构1.1timer_list定时器层是基于tick层(高精度定时器)之上的,是根据系统jiffies来触发的,精度相对比较低。利用定时器,我们可以设定...

2022-02-16 19:27:41 3685

转载 linux内核调试技术——进程上下文R状态死锁监测(LOCKUP_DETECTOR)

目录1 R转态死锁/死循环检测概述2 lockup detector机制分析3 示例演示3.1 首先确认启用内核配置3.2 然后确认内核调度策略配置3.3 编写演示程序4 总结1 R转态死锁/死循环检测概述前一篇博文介绍了内核监测D状态死锁的hung task机制,本文介绍另一种死锁状态的监测手段——R状态死锁监测。R状态死锁指的是某一任务一直处于TASK_RUNNING态且一直占用着CPU,从而导致其他进程得不到调度而饿死的情况。一般情况下,R状态死锁较可能是由于程序出

2022-02-14 17:25:31 1279

转载 linux内核调试技术——进程D状态死锁检测

目录1 TASK_UNINTERRUPTIBLE 状态概述2 hung task机制分析3 示例演示4 总结1 TASK_UNINTERRUPTIBLE 状态概述Linux的进程存在多种状态,如TASK_RUNNING的运行态、EXIT_DEAD的停止态和TASK_INTERRUPTIBLE的接收信号的等待状态等等(可在include/linux/sched.h中查看)。其中有一种状态等待为TASK_UNINTERRUPTIBLE,称为D状态,该种状态下进程不接收信号,只能通过wak

2022-02-11 19:15:33 2367

转载 linux generic netlink实现机制:通信实例

目录1 demo 概述2 创建内核Demo Genetlink2.1 定义Demo Genetlink3 内核注册Demo Genetlink3 应用层初始化Genetlink套接字4 用户空间和内核空间通信4.1 用户查询Demo Family ID4.2 向内核Demo Family发送消息4.3 内核Demo Family 回发消息4.4 应用层接收内核Demo Family回发消息1 demo 概述示例程序:demo_genetlink_kern.c(

2022-02-11 15:27:27 1538

转载 linux generic netlink实现机制:注册、创建

目录1Generic Netlink 概述2 Generic Netlink相关结构体2.1 Generic Netlink消息头结构:struct genlmsghdr2.2 Generic Netlink Family结构:struct genl_family(内核中完成注册)2.3 Generic Netlink Family命令处理结构:struct genl_ops(内核中完成注册)2.4 Generic Netlink Family内核接收消息结构:struct gen.

2022-02-11 14:30:29 1897

转载 linux netlink实现机制:通信

目录1 netlink 通信数据结构1.1 netlink 消息报头:structnlmsghdr1.2 socket 消息数据包结构:struct msghdr1.3 netlink消息处理宏2 应用层向内核发送netlink消息3内核向应用层发送netlink消息4 应用层接收内核netlink消息1 netlink 通信数据结构1.1 netlink 消息报头:structnlmsghdrstruct nlmsghdr { __u32 nlmsg_l...

2022-02-10 19:57:19 1975

转载 linux netlink实现机制:注册、创建

目录1 netlink 概述2 Netlink子系统初始化3 内核Netlink套接字3.1 内核netlink配置结构:struct netlink_kernel_cfg3.2 netlink属性头:struct nlattr3.3 netlink有效性策略:struct nla_policy3.4 netlink套接字结构:netlink_sock3.5 创建内核netlink套接字4 应用层 Netlink 套接字4.1 套接字地址数据结构 sockaddr_n

2022-02-10 19:09:03 1903

转载 Linux内核协议栈--ipsec收发包流程

1 ipsec收包解封流程流程路径:ip_rcv() --> ip_rcv_finish() --> ip_local_deliver() --> ip_local_deliver_finish()解封侧一定是ip报文的目的端,ip_rcv_finish中查到的路由肯定是本机路由(RTCF_LOCAL),调用 ip_local_deliver 处理。下面是贴的网上的一张图片。ip_local_deliver_finish中 根据上次协议类型,调用对应的处理函数。inet..

2022-01-27 15:57:40 3178

工控培训-基于C语言Modbus通信协议源代码.pdf

modbus协议实现接口

2021-02-27

通过在U盘上装载PE小系统清除PC机administrator用户密码.docx

忘记用户名密码也不要紧的......

2021-02-26

自抗扰控制算法,similink仿真

根据是韩京清教授搭建的MATLAB——simnlink

2015-10-29

matlab破解文件

matlab破解文件包含a,b两个系列,网上有很多破解文件,但是含有不同版本,本文件包含a,b两个系列,均可破解已在2011a和2013b中破解成功。

2015-10-23

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除