一、调研要求在深入理解Linux内核任务调度(中断处理、softirg、tasklet、wq、内核线程等)机制的基础上,分析梳理send和recv过程中TCP/IP协议栈相关的运行任务实体及相互协作的时序分析。编译、部署、运行、测评、原理、源代码分析、跟踪调试等应该包括时序图二、 Linux内核与网络体系结构 在我们了解整个linux系统的网络体系结构之前,我们需要对整个网络体系调用,初始化和交互的位置,同时也是Linux操作系统中最为关键的一部分...
TCP/IP协议栈在Linux内核中的运行时序分析 目录TCP/IP协议栈在Linux内核中的运行时序分析调研要求Linux内核基础简介内核初始化创建0号进程中断门文件系统初始化创建1号进程创建2号进程用户态和内核态的划分系统调用延后中断Softirq(软中断)taskletwq(工作队列)内核线程TCP/IP协议栈socket的基本使用和创建过程应用层接口套接字的创建TCP/IP处理流程应用层传输层IP网络层数据链路层send过程的Linux内核实现传输层分析网络层分析...
一、引言 二、UVC USB Gadge驱动分析 ------> 1、udc层 ------> 2、设备功能层 ------------> 2.1、设备功能层usb功能添加 ------------> 2.2、匹配udc中的端点 ------> 3、Gadget设备层 ------------> 3.1、usb_composite_dev 一、引言 前一章大致分析了USB Gadget驱动的编写流程,这章就来结合UVC驱动,详细分析一下整个框架 二、UVC USB Gadge驱动分析 udc层 之前说过Linux 标准内核里支持各种主流 SOC 的 udc 驱动,这里就来分...
0、调研要求在深入理解Linux内核任务调度(中断处理、softirg、tasklet、wq、内核线程等)机制的基础上,分析梳理send和recv过程中TCP/IP协议栈相关的运行任务实体及相互协作的时序分析。 编译、部署、运行、测评、原理、源代码分析、跟踪调试等 时序图目录 1 Linux内核基础简介1.1 Linux中断处理1.2 softirq、tasklet、work queue 2 TCP/IP协议栈2.1 TCP/IP协议栈简介2.2 Linux网络分层结构2.3 socket 3 跟踪调试内核函数的环境 4...
TCP/IP协议栈在Linux内核中的运行时序分析在深入理解Linux内核任务调度(中断处理、softirg、tasklet、wq、内核线程等)机制的基础上,分析梳理send和recv过程中TCP/IP协议栈相关的运行任务实体及相互协作的时序分析。 编译、部署、运行、测评、原理、源代码分析、跟踪调试等 应该包括时序图此次分析所使用的server/client端代码如下所示: #include <stdio.h> /* perror */ #include <stdlib.h> /* exit */ #include <sys/t...
可选题目三:TCP/IP协议栈在Linux内核中的运行时序分析 在深入理解Linux内核任务调度(中断处理、softirg、tasklet、wq、内核线程等)机制的基础上,分析梳理send和recv过程中TCP/IP协议栈相关的运行任务实体及相互协作的时序分析。 编译、部署、运行、测评、原理、源代码分析、跟踪调试等 应该包括时序 一, 基础概念简介 1.什么是TCP/IP? TCP/IP 也即传输控制协议/网际协议(Transmission Control Protocol / Internet Proto...
1 概述 ? 该博客主要描述Tcp/ip协议栈的发送和接收流程,linux内核版本为2.6.26 ? 全文直接从发送端和接收端两侧分别展开,然后跟踪数据发送和接收流程 2 send发送过程 2.1 应用层 ? 首先通过在client文件中进行send函数调用 if (send(sockfd, "Hello!\n", 7, 0) == -1)perror("send");? send函数在socket.h文件中声明: extern ssize_t send (int __fd, __const void *__buf, size_t __n, int __flags);? 找到send函数在send.c文件中...
源码版本:Linux kernel 1.0 分析字符设备 /dev/mem 的驱动程序 既然是字符设备,万物皆文件,先找 file_operations 结构 struct file_operations mem_fops static struct file_operations mem_fops = {memory_lseek,read_mem,write_mem,NULL, /* mem_readdir */NULL, /* mem_select */NULL, /* mem_ioctl */mmap_mem,NULL, /* no special open code */NULL, /* no special release code */NULL /* fsync */ };支持 read wri...
Linux Kernel信号处理机制源码分析 信号(Signal)是一种比较原始的IPC(Inter-Process Communication,进程间通信)机制。本文主要是进行源码的分析,阅读本文的前提是对Linux的信号机制有所了解。 术语概览信号(Signal) 信号屏蔽/阻塞(Block):一个进程可以选择阻塞/屏蔽一个信号。然后对于其他进程向自己发送的这个信号,就直接忽略。直到不再阻塞,才能接收到新的信号。 经典/不可靠(Regular)信号:编号范围在[1,31]的信...
1. /bin:存放着常用的命令。 我的linux系统 /bin 目录下有5250个命令。 2. /dev:device的缩写,存放设备:硬盘,键盘等。 sda是第一个硬盘,sda1表示第一个硬盘的第一个分区,相当于windows C盘为第一个分区,D盘为第二个分区。 3. /etc:存放系统管理的配置文件及子目录。 图中只有少部分配置文件及子目录。 4. /var:存放系统的日志等常常改动的文件。 log目录下就有系统的日志信息。
背 景Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基说明:Kernel版本:4.14 ARM64处理器 使用工具:Source Insight 3.5, Visio1. 概述本文将分析Linux PCI子系统的框架,主要围绕Linux PCI子系统的初始化以及枚举过程分析; 如果对具体的硬件缺乏了解,建议先阅读上篇文章《Linux PCI驱动框架分析(一)》;话不多说,直接开始。 2. 数据结构PCI体系结构的拓扑关系如图所示,而图中...
linux(ubuntu)和windows下磁盘文件访问问题 一、已知条件二、为什么windows下不能查看linux(ubuntu)的磁盘分区?三、视频查看bug 一、已知条件 ubuntu下是完全可以查看windows下的磁盘分区的 比如下面例子:上面这是我的电脑windows下的磁盘分区 这是我在ubuntu下查看到的磁盘空间,其中第一个分区 computer 为电脑ubuntu分区,其他三个就是对应的windows下的磁盘; 二、为什么windows下不能查看linux(ubuntu)的磁盘分区? 既然...
刚开始接触Android源码的时候,发现在kernel里面多了一种dts文件,因为当初自学Linux时和在第一家公司做物联网模型时都是用的比较老的内核,内核代码还比较混乱,没有采用dts这种方便简洁的格式。后面才知道这是因为Linus的一句”this whole arm thing is a fucking pain in ass“促进改革的,记得Linux早期代码里面板级细节都是在C文件中描述的,代码就显得十分臃肿和混乱。如此优化之后就显得简洁多了,并且也更易于学习、移植。...
在Linux系统经常被用作服务器系统。当服务器内存吃紧的时候,free命令是我们最常使用的内存分析工具。 free使用介绍 free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。在Linux系统监控的工具中,free命令是最经常使用的命令之一。 free命令使用起来非常简单。 # 命令格式 free [参数] # 可选参数 -b 以Byte为单位显示内存使用情况。 -k 以KB为单位显示内存使用情况。 -m 以MB为单位显示...
iostat: 输出CPU的统计信息和所有I/O设备的输入输出(I/O)统计信息。 mpstat: 关于CPU的详细信息(单独输出或者分组输出)。 pidstat: 关于运行中的进程/任务、CPU、内存等的统计信息。 sar: 保存并输出不同系统资源(CPU、内存、IO、网络、内核等。。。)的详细信息。 sadc: 系统活动数据收集器,用于收集sar工具的后端数据。 sa1: 系统收集并存储sadc数据文件的二进制数据,与sadc工具配合使用 sa2: 配合sar工具使用,产生每日的...