精华内容
下载资源
问答
  • Linux内核源码分析代码详解 链接:https://pan.baidu.com/s/1MxbVZAKtDzW_ig1Njvb5Vw 提取码:ho3a 链接无效了的话请加Q群:832218493免费领取! 1、进程管理专题 1.1进程原理 进程生命周期 task_struct结构 进程...

    Linux内核源码分析代码详解

    链接:https://pan.baidu.com/s/1MxbVZAKtDzW_ig1Njvb5Vw
    提取码:ho3a
    链接无效了的话请加Q群:832218493免费领取!

    免费学习地址:https://ke.qq.com/course/417774?flowToken=1017067

    在这里插入图片描述

    本系列文章主要是近期针对Linux进程调度源码进行阅读与分析后的经验总结,分析过程中可能结合部分Linux网络编程的相关知识以便于理解,加深对Linux进程调度的理解和知识分享。

    本系列文章主要结合Linux3.10.1内核版本源代码以及部分Linux2.4内核版本源代码进行分析,主要涉及fork(),vfork(),clone()应用层函数的底层实现原理,schedule调度器的实现以及CFS完全公平调度策略算法的分析。

    1、进程管理专题

    1.1进程原理

    	进程生命周期
    	task_struct结构
    	进程优先级
    	进程系统调用
    

    1.2进程调度机制

    	调度器实现schedule()
    	完全公平调度类CFS
    	实时调度类原理
    	多核模式调度SMP
    

    1.3进程竞争机制

    	RCU机制原理
    	内存优化与屏障
    	大内核锁
    	per_CPU计数器
    

    1.4进程系统调用

    	写时复制原理
    	进程内存布局
    	进程堆栈管理
    	系统调用实现流程
    

    2.内存管理专题

    2.1内存原理

    	(N)UMA模型组织
    	页表原理
    	处理器高速缓存
    	TLB工作原理
    

    2.2物理内存

    	伴伙算法
    	slab/slub/slob分配器
    	内存映射
    	分配器原理
    	不连续页原理
    

    2.3虚拟内存

    	进程内存映射
    	进程堆栈管理
    	用户空间缺页异常
    	内核空间与用户空间
    

    2.4内存系统调用

    	kmalloc/vmaloc
    	BRK
    	内存池机制
    	内存优化
    

    3.设备驱动专题

    3.1设备子系统原理

    	字符设备子系统
    	块设备子系统
    	网络适配器子系统
    	I/O原理
    

    3.2字符设备驱动

    	file_operations原理
    	系统调用流程
    	ioctl流程
    	请求中断
    

    3.3块设备驱动

    	资源管理
    	I/O调度
    	BIO结构原理
    	PCI总线原理
    

    3.4网卡设备驱动

    	net_device/net_device_ops
    	sk_buff原理
    	网卡数据中断
    	网络适配器映射
    

    3.5内核模块架构

    	模块添加与删除
    	自动化与热插拔
    	主从设备号
    	版本控制
    

    4.网络协议专题

    4.1网络系统架构

    	接收缓冲区
    	发送缓冲区
    	netfilter
    	iptables
    

    4.2网络协议栈

    	TCP/UDP
    	TCP控制块
    	IP协议
    	netlink机制
    

    4.3系统API

    	POSIX网络API
    	epoll实现原理
    	socket初始化
    	网络系统参数设置
    

    5.内核组件专题

    5.1时间管理

    	通用时间子系统
    	高分辨率定时器
    	动态时钟结构
    	定时器系统调用实现
    

    6.2系统缓存

    	页缓存实现
    	块缓存实现
    

    7.3数据同步

    	数据同步原理
    	inode同步与拥塞
    	强制回写与完全同步
    

    8.文件系统专题

    8.1虚拟文件系统VFS

    	通用文件模型
    	VSF结构 
    	文件操作系统调用
    	file/inode原理
    

    8.2无存储文件系统

    	proc文件系统
    		文件系统数据结构
    		管理/proc数据项
    		系统控制机制
    	sysfs文件分析
    		sysfs数据结构
    		装载文件系统
    		文件目录 操作
    		向sysfs增加数据
    

    8.3磁盘文件系统

    	Ext2文件系统
    	Ext3文件系统
    	Ext4文件系统
    

    8.4用户态文件系统

    	FUSE使用场景
    	FUSE原理
    	FUSE实现 
    	用户态文件接口实现
    

    9.内核项目实战专题

    1、手把手实现进程间通信
    2、网络适合器实现
    3、无存储文件系统实现
    4、为内核添加自己系统调用
    5、添加进程调度器
    6、用户态文件系统实现
    7、为内核防火墙做贡献之iptables
    8、用slab实现内存池
    9、内核定制化系统
    10、向VFS添加自定义文件系统
    

    10.Linux内核学习参考书籍

    1、《深入理解LINUX内核》 第三版 [美] 博韦等著()
    2、《Linux设备驱动开发详解》 宋宝华 编著
    3、《Linux内核设计与实现》 原书第3版 拉芙 (RobertLove) 著
    4、《深入理解LINUX网络内幕》 [意] Benvenuti 著
    5、《Linux设备驱动程序》 [美] 科波特(Corbet J.) 著
    
    展开全文
  • linux源码解析

    千次阅读 2019-08-18 14:08:47
    关于早期linux源码分析,有兴趣的可以看一下,欢迎交流,欢迎star! https://github.com/theanarkh/read-linux-1.2.13-net-code https://github.com/theanarkh/read-linux-0.11

    关于早期linux源码的分析,有兴趣的可以看一下,欢迎交流,欢迎star!

    https://github.com/theanarkh/read-linux-1.2.13-net-code

    https://github.com/theanarkh/read-linux-0.11

    展开全文
  • 阅读Linux-1.2.13-net-code linux网络源码分析 文章: :
  • Linux内核源码分析代码详解 链接:https://pan.baidu.com/s/1MxbVZAKtDzW_ig1Njvb5Vw 提取码:ho3a 链接无效了的话请加Q群:832218493免费领取! 免费学习地址:https://ke.qq.com/course/417774?flowToken=1017067 ...

    Linux内核源码分析代码详解

    链接:https://pan.baidu.com/s/1MxbVZAKtDzW_ig1Njvb5Vw
    提取码:ho3a
    链接无效了的话请加Q群:832218493免费领取!

    免费学习地址:https://ke.qq.com/course/417774?flowToken=1017067

    在这里插入图片描述

    本系列文章主要是近期针对Linux进程调度源码进行阅读与分析后的经验总结,分析过程中可能结合部分Linux网络编程的相关知识以便于理解,加深对Linux进程调度的理解和知识分享。

    本系列文章主要结合Linux3.10.1内核版本源代码以及部分Linux2.4内核版本源代码进行分析,主要涉及fork(),vfork(),clone()应用层函数的底层实现原理,schedule调度器的实现以及CFS完全公平调度策略算法的分析。

    1、进程管理专题

    1.1进程原理

    	进程生命周期
    	task_struct结构
    	进程优先级
    	进程系统调用
    

    1.2进程调度机制

    	调度器实现schedule()
    	完全公平调度类CFS
    	实时调度类原理
    	多核模式调度SMP
    

    1.3进程竞争机制

    	RCU机制原理
    	内存优化与屏障
    	大内核锁
    	per_CPU计数器
    

    1.4进程系统调用

    	写时复制原理
    	进程内存布局
    	进程堆栈管理
    	系统调用实现流程
    

    2.内存管理专题

    2.1内存原理

    	(N)UMA模型组织
    	页表原理
    	处理器高速缓存
    	TLB工作原理
    

    2.2物理内存

    	伴伙算法
    	slab/slub/slob分配器
    	内存映射
    	分配器原理
    	不连续页原理
    

    2.3虚拟内存

    	进程内存映射
    	进程堆栈管理
    	用户空间缺页异常
    	内核空间与用户空间
    

    2.4内存系统调用

    	kmalloc/vmaloc
    	BRK
    	内存池机制
    	内存优化
    

    3.设备驱动专题

    3.1设备子系统原理

    	字符设备子系统
    	块设备子系统
    	网络适配器子系统
    	I/O原理
    

    3.2字符设备驱动

    	file_operations原理
    	系统调用流程
    	ioctl流程
    	请求中断
    

    3.3块设备驱动

    	资源管理
    	I/O调度
    	BIO结构原理
    	PCI总线原理
    

    3.4网卡设备驱动

    	net_device/net_device_ops
    	sk_buff原理
    	网卡数据中断
    	网络适配器映射
    

    3.5内核模块架构

    	模块添加与删除
    	自动化与热插拔
    	主从设备号
    	版本控制
    

    4.网络协议专题

    4.1网络系统架构

    	接收缓冲区
    	发送缓冲区
    	netfilter
    	iptables
    

    4.2网络协议栈

    	TCP/UDP
    	TCP控制块
    	IP协议
    	netlink机制
    

    4.3系统API

    	POSIX网络API
    	epoll实现原理
    	socket初始化
    	网络系统参数设置
    

    5.内核组件专题

    5.1时间管理

    	通用时间子系统
    	高分辨率定时器
    	动态时钟结构
    	定时器系统调用实现
    

    6.2系统缓存

    	页缓存实现
    	块缓存实现
    

    7.3数据同步

    	数据同步原理
    	inode同步与拥塞
    	强制回写与完全同步
    

    8.文件系统专题

    8.1虚拟文件系统VFS

    	通用文件模型
    	VSF结构 
    	文件操作系统调用
    	file/inode原理
    

    8.2无存储文件系统

    	proc文件系统
    		文件系统数据结构
    		管理/proc数据项
    		系统控制机制
    	sysfs文件分析
    		sysfs数据结构
    		装载文件系统
    		文件目录 操作
    		向sysfs增加数据
    

    8.3磁盘文件系统

    	Ext2文件系统
    	Ext3文件系统
    	Ext4文件系统
    

    8.4用户态文件系统

    	FUSE使用场景
    	FUSE原理
    	FUSE实现 
    	用户态文件接口实现
    

    9.内核项目实战专题

    1、手把手实现进程间通信
    2、网络适合器实现
    3、无存储文件系统实现
    4、为内核添加自己系统调用
    5、添加进程调度器
    6、用户态文件系统实现
    7、为内核防火墙做贡献之iptables
    8、用slab实现内存池
    9、内核定制化系统
    10、向VFS添加自定义文件系统
    

    10.Linux内核学习参考书籍

    1、《深入理解LINUX内核》 第三版 [美] 博韦等著()
    2、《Linux设备驱动开发详解》 宋宝华 编著
    3、《Linux内核设计与实现》 原书第3版 拉芙 (RobertLove) 著
    4、《深入理解LINUX网络内幕》 [意] Benvenuti 著
    5、《Linux设备驱动程序》 [美] 科波特(Corbet J.) 著
    
    展开全文
  • 适用于Linux解析器/proc/net/tcp 。 这是对Ruby端口的尝试。 安装 将此行添加到您的应用程序的Gemfile中: gem 'proc_net-tcp' 然后执行: $ bundle 或将其自己安装为: $ gem install proc_net-tcp 用法 ...
  • Linux内核WIFI驱动详细源码Linux下wifi实现,通过它可以学习无线相关知识,用于实践。
  •  代码实现比较简单,层次结构非常明显,总体框图如下: cgroup core 实现了一套虚拟文件系统cgroup fs,这样用户直接使用mkdir/rmdir等命令来进行资源管控, 而对某种资源的控制,由对应的subsystem来实现。...

    Linux cgroup用于控制进程使用memory,cpu,blk,net等资源,从而达到进程之间资源隔离. 

    代码实现比较简单,层次结构非常明显,总体框图如下:

    cgroup core 实现了一套虚拟文件系统cgroup fs,这样用户直接使用mkdir/rmdir等命令来进行资源管控, 而对某种资源的控制,由对应的subsystem来实现。

    group core负责维护每个cgroup和subystem的生命周期,以及实现通用API接口.

    1. cgroup子系统介绍

    blkio   -- 这个子系统为块设备设定输入/输出限制,比如物理设备(磁盘,固态硬盘,USB 等等)。
    cpu     -- 这个子系统使用调度程序提供对 CPU 的 cgroup 任务访问。
    cpuacct -- 这个子系统自动生成 cgroup 中任务所使用的 CPU 报告。
    cpuset  -- 这个子系统为 cgroup 中的任务分配独立 CPU(在多核系统)和内存节点。
    devices -- 这个子系统可允许或者拒绝 cgroup 中的任务访问设备。

    freezer -- 这个子系统挂起或者恢复 cgroup 中的任务。
    memory  -- 这个子系统设定 cgroup 中任务使用的内存限制,并自动生成由那些任务使用的内存资源报告。
    net_cls -- 这个子系统使用等级识别符(classid)标记网络数据包,可允许 Linux 流量控制程序(tc)识别从具体 cgroup 中生成的数据包。

    1.在 cgroups 中,任务就是系统的一个进程或者线程,cgroup提供线程级的管控.

    2.控制族群(control group)。控制族群就是一组按照某种标准划分的进程。Cgroups 中的资源控制都是以控制族群为单位实现。一个进程可以加入到某个控制族群,也从一个进程组迁移到另一个控制族群。一个进程组的进程可以使用 cgroups 以控制族群为单位分配的资源,同时受到 cgroups 以控制族群为单位设定的限制。

    3.层级(hierarchy)。控制族群可以组织成 hierarchical 的形式,既一颗控制族群树。控制族群树上的子节点控制族群是父节点控制族群的孩子,继承父控制族群的特定的属性。

    • 每次在系统中创建新层级时,该系统中的所有任务都是那个层级的默认 cgroup(我们称之为 root cgroup,此 cgroup 在创建层级时自动创建,后面在该层级中创建的 cgroup 都是此 cgroup 的后代)的初始成员;
    • 一个子系统最多只能附加到一个层级;
    • 一个层级可以附加多个子系统;
    • 一个任务可以是多个 cgroup 的成员,但是这些 cgroup 必须在不同的层级;
    • 系统中的进程(任务)创建子进程(任务)时,该子任务自动成为其父进程所在 cgroup 的成员。然后可根据需要将该子任务移动到不同的 cgroup 中,但开始时它总是继承其父任务的 cgroup。

    4.子系统(subsytem)。一个子系统就是一个资源控制器,比如 cpu 子系统就是控制 cpu 时间分配的一个控制器。子系统必须附加(attach)到一个层级上才能起作用,一个子系统附加到某个层级以后,这个层级上的所有控制族群都受到这个子系统的控制。

    2.数据结构

    cgroup设计到的数据结构如下:

    css_set: 用来建立task与cgroup之间的多对多关系, 因为一个进程可以被多个不同层级的cgroup来管控,
    cg_cgroup_link:用来维护css_set与cgroup 的关系
    cgroup:每次mkdir创建一个目录,就会产生一个cgroup
    cgroup_subsys: 表示一个资源控制子系统,可以看做cgroup_subsys_state基类
    cgroup_subsys_state:可以认为是cgroup_subsys的实例
    css_set_table:hash table,用于快速查找css_set


     

    3. 层级关系

     

    展开全文
  • Linux路由子系统代码量虽说不是很多,但是难度还是有的,最近在分析路由子系统这一块,对它的框架有了基本的了解,如果要想掌握的话估计还得再花点时间阅读代码,先把框架记录下来。路由子系统可以划分为三个子部分,...
  • Linux socket - 源码分析(一)

    千次阅读 2018-08-15 17:10:02
    这篇文章主要分析socket原理和工作流程 参考kernel msm-4.4源码 进程和进程间通信  进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的...
  • 今天给大家分享的是基于最新的Linux 4.0内核学习路线总结,本文由8个专题组成,文末附上学习路线思维导图。 一、进程管理专题 1、进程原理 1.1 进程生命周期 1.2 task_struct结构 1.3 进程优先级 1.4 进程系统...
  • Linux内核源代码分析 Linux内核源代码分析
  • 一.linux内核网络栈代码的准备知识 1. linux内核ipv4网络部分分层结构: BSD socket层: 这一部分处理BSD socket相关操作,每个socket在内核中以struct socket结构体现。这一部分的文件主要有:/...
  • 树莓派Linux内核源码

    2021-08-21 10:29:51
    树莓派Linux内核源码下载 查看树莓派操作版本命令:uname -r 源码下载 一、嵌入式裸机和带操作系统启动过程了解 C51,stm32启动过程: c直接操控底层寄存器实现相关业务,业务流程型的裸机代码 x86,Intel---...
  • Linux内核源码阅读以及工具详解

    千次阅读 2020-02-02 12:08:39
    接上篇Linux内核源码下载方法 这篇总结了如何利用source insight对Linux内核代码进行阅读和学习...而要想深入了解Linux,就需要阅读和分析linux内核的源代码Linux的内核源代码可以从很多途径得到。一般来讲...
  • 目的:为了更好地编写驱动程序,对自己写的程序有更深入的理解,并且自己的...2.sourcesinsight+linx2.X+书(linux内核情景分析) 阅读源码分为纵向阅读和横向阅读。纵向就是跟着内核的执行流程来读,横向就是按照...
  • /arch。arch是architecture的缩写。...是块的意思,在linux中block表示块设备,块设备是以数据块方式接收和发送的数据的设备。譬如说SD卡、iNand、Nand、硬盘等都是块设备。几乎可以认为块设备就是存...
  • 每天十五分钟,熟读一个技术点,水滴石穿,一切只为渴望更优秀的你!————零声学院Linux 内核结构 Linux 是...如何从整 体上把握 Linux 内核的体系结构,对于 Linux 的开发者和分析者都至关重要。 Linux 内核在整...
  • 看一下linux/arch/arm/boot/compressed/Makefile文件中连接脚本是那个 是vmlinux.lds.in。$(obj)的值就是当前目录。 linux/arch/arm/boot/compressed/vmlinux.lds.in 入口为_start,我这个内核和一般的不太一样,...
  • 通过上一节,我们知道了top中的RES是从/proc/pid/statm文件中读取出来的,详细的可以看这篇博客《linux的top命令源码解析:RES指标》,这次我们要弄清楚/proc/pid/statm文件中resident值是怎么计算出来的。...
  • Linux源码目录说明

    2021-01-28 22:52:18
    Linux内核在GPLv2许可证下授权。该许可证授予任何人有权免费去使用、修改、分发和共享源代码和编译代码。然而,没有人可以出售源代码。 CREDITS- 贡献者列表 Kbuild- 这是一个设置一些内核设定的脚本。打个比方,...
  • 为什么 Linux 值得学习?Linux 已经影响到所有人,安卓手机,嵌入式设备,物联网,服务器,虚拟化,容器 这些都离不开 LinuxLinux 是世界最知名的开源项目,为它贡献代码的...
  • 使用VSCode进行linux内核代码阅读和开发现状新的方法安装与配置1.安装VSCode2.安装Remote - SSH插件3.添加远程主机4.安装clangd5.在远程服务器安装bear6.配置clangd7.触发clangd工作效果遇到的问题总结参考链接 现状...
  • linux下基于netsnmp写的trap服务器,纯C代码,可解析出trap发送方的地址及trap消息内容,可直接编译和测试。编译方法为: gcc trap.c -lnetsnmp
  • linux内核源码目录结构

    千次阅读 2018-10-23 10:31:52
    linux内核源码目录结构如下所示: (1)Kbuild Kbuild是Kernel build的意思,就是内核编译的意思,这个文件就是linux内核特有的内核编译体系需要用到的文件。 (2)Makefile 这个是linux内核的总Makefile,...
  • 4.1.12内核已经支持vxlan...之前分析的UDP报文处理中,可以知道如果udp_sock定义了encap_rcv函数,将会把报文交给该函数处理,而不是传统的保存到sock队列,唤醒进程收包。 udp_sock定义的encap_rcv函数是在vxlan_sock
  • linuxkernel源码初步阅读

    万次阅读 多人点赞 2018-07-05 09:50:12
    1.Linux内核源代码中子目录结构 所阅读的内核版本为linux-2.6.12.1,偶数版本为稳定版本。 首先使用tree命令对整个内核文件进行观察如下: 可以发现目录和文件规模相当巨大,难以详尽描述,所以下面仅仅列出...
  • Linux Kernel网络部分代码剖析

    千次阅读 2017-03-28 14:33:08
     在这个系列文章中,我自己将尝试着分析Linux kernel2.6下面的中的网络部分的源代码,主要是TCP/IP部分,只是记录自己的学习经历,如果你感兴趣,不妨说出你的理解。  这是第一部分,主要分析一下 TCP/IP相关...
  • Linux epoll模型详解及源码分析

    万次阅读 多人点赞 2018-06-03 15:50:50
    epoll是当前在Linux下开发大规模并发网络程序的热门选择,epoll在Linux2.6内核中正式引入,和select相似,都是IO多路复用(IO multiplexing)技术。 按照man手册的说法,epoll是为处理大批量句柄而做了改进的poll。...
  • 用户进程:用户应用程序是运行在 Linux 操作系统最高层的一个庞大的软件集合。当一个用户程序 在操作系统之上运行时,它成为操作系统中的一个进程。 系统调用接口:在应用程序中, 可通过系统调用来调用操作系统内核...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 67,607
精华内容 27,042
关键字:

linuxnet代码分析

linux 订阅