AIRobot

AIRobot quick note


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

交换机

发表于 2023-04-24 分类于 network
本文字数: 723 阅读时长 ≈ 1 分钟

在数据中心网络架构中,主要有三种类型的交换机:Spine(脊椎)、Leaf(叶子)和ToR(Top-of-Rack,机架顶部)。这些交换机在数据中心网络中分层布局,形成一个可扩展的、高效的网络系统。

Spine 交换机(脊椎交换机)

Spine 交换机也称为 Backbone 交换机,位于数据中心网络的核心层。它的主要职责是向上连接到核心路由器或防火墙,并向下连接到 Leaf 交换机。Spine 交换机通常具有高端性能和大容量带宽,确保数据中心内部的高速传输。

Leaf 交换机(叶子交换机)

Leaf 交换机位于数据中心网络的汇聚层,主要负责将来自 Spine 交换机的流量分发到不同的 ToR 交换机。它们通常具有丰富的端口,以便与 Spine 交换机和ToR 交换机保持高度连接。Leaf 交换机的成本和性能通常介于 Spine 交换机和ToR 交换机之间。

ToR 交换机(机架顶部交换机)

ToR 交换机位于数据中心网络的接入层,作为服务器和其他网络设备(如存储设备)与数据中心网络的接入点。主要负责将来自服务器的流量转发到 Leaf 交换机。ToR 交换机通常安装在机架顶部,因此被称为“Top-of-Rack”交换机。

总结

Spine-Leaf 架构以及ToR 交换机共同形成了现代数据中心的高效且可扩展的网络。Spine 交换机位于核心层,使得数据能够快速地在网络内部传输;Leaf 交换机连接 Spine 交换机和 ToR 交换机,负责传输数据;ToR 交换机负责将流量从服务器和存储等设备转发到数据中心网络中。因此,在这个架构中,Spine 交换机、Leaf 交换机和 ToR 交换机共同为数据中心提供了一个高性能的网络系统。

缓存优化技巧

发表于 2022-09-16
本文字数: 462 阅读时长 ≈ 1 分钟

为什么要用数据缓存

现代电子计算机系统通常包含处理器和内存。内存通常慢于处理器百倍,因此处理器通常要等待内存的数据传输。
缓存就是为了协调不同速度的问题诞生的。缓存通常可以以很快的速度访问,但是容量通常显著小于被缓存对象。

为什么缓存能够提高速度

缓存命中时,可以直接以缓存访问速度取到数据。
缓存未命中时,处理器会去内存中访问,这种情况不仅没有加速,还浪费了时钟周期。

那么缓存为什么最终能加速?
因为局部性原理:1.时间局部性2.空间局部性.
因为局部性原理的存在可以显著提高缓存命中率,所以缓存能够加速.

时间局部性:如果处理器目前正在访问某个内存地址,就很有可能在不久的将来再次访问这个内存地址

空间局部性:如果处理器目前正在访问某个内存地址,那么它很有可能会在不久的将来访问邻近的内存地址

提高性能的技巧

尽量使用连续空间

频繁访问的变量内存中尽量相邻

使用数据数组代替指针数组

优化对类或结构体数组的访问

有效地访问矩阵中的数据

类或结构体中避免填充

尽量使用小的类型

尽量避免堆分配

尽量用缓存中的数据

避免写内存

适当对齐数据

使用预取

实验

总结

内核新功能特性

发表于 2022-03-03 分类于 system
本文字数: 14k 阅读时长 ≈ 13 分钟

🔰 深挖 Linux 内核的新功能特性,以 io_uring, cgroup, ebpf, llvm 为代表,包含开源项目,代码案例,文章,视频,架构脑图等

所有数据来源于互联网。所谓取之于互联网,用之于互联网。

如果涉及版权侵犯,请邮件至 wchao_isvip@163.com ,我们将第一时间处理。

如果您对我们的项目表示赞同与支持,欢迎您 lssues我们,或者邮件 wchao_isvip@163.com 我们,更加欢迎您 pull requests 加入我们。

感谢您的支持!

🔥 io_uring

—— 2019 年 Linux 5.1 内核首次引入的高性能 异步 I/O 框架,能显著加速 I/O 密集型应用的性能。

文档

  • 官方文档: Efficient I/O with io_uring
  • 其他文档:
    • Improved Storage Performance Using the New Linux Kernel I.O Interface
    • I/O-uring speed the RocksDB & TiKV
    • The Evolution of File Descriptor Monitoring in Linux
    • io_uring-BPF
    • Enabling Financial-Grade Secure Infrastructure with Confidential Computing
    • Boosting Compaction in B-Tree Based Key-Value Store by Exploiting Parallel Reads in Flash SSDs
    • Programming Emerging Storage Interfaces
    • I/O is faster than the OS
    • StefanMetzmacher_sambaxp2021_multichannel_io-uring-rev0-presentation
    • I/O Stack
    • io_uring-徐浩-阿里云

开源项目

  • axboe/liburing: io_uring 库,liburing为设置和拆掉 io_uring 实例,还有一个简化接口不需要(或不想)处理完整内核的应用程序边执行。
  • shuveb/io_uring-by-example: 一个io_uring 示例的库
  • bytedance/monoio: 基于io-uring的Rust异步运行时
  • spacejam/rio: Rust io_uring库,构建在libc上,线程和异步友好,抗误用
  • Iceber/iouring-go: 提供易于使用的异步IO接口io_uring
  • frevib/io_uring-echo-server: io_uring echo server
  • hodgesds/iouring-go: Io_uring支持go
  • dshulyak/uring: 用于io_uring框架的Golang库(无CGO)
  • quininer/ritsu: 一个实验性的基于io-uring的异步运行时。
  • shuveb/loti-examples: 源代码示例程序,从主的io_uring指南
  • xuanyi-fu/xynet: 基于io_uring和c++ 20协程的网络库
  • KuiBaDB/kbio: 一个基于io_uring的异步IO框架
  • shuveb/loti: io_uring教程,例子和参考
  • MarkReedZ/mrloop: C语言使用io_uring的事件循环
  • tchaloupka/during: dlang io_uring包装
  • omegacoleman/arkio: 基于异步IO的内核IO库
  • ciconia/awesome-io_uring: 一个很棒的io_uring资源、库和工具的分类集合。
  • ddeka0/AsyncIO: 一个用于异步套接字服务器的CPP包装器,使用linux最新的io_uring API
  • uroni/fuseuring: 使用io_uring实现一个用户空间Linux fuse服务器
  • yunwei37/co-uring-WebServer: 一个使用io_uring和cpp20协同程序的c++高性能Web服务器
  • romange/helio: 一个基于io_uring Linux接口的现代后端开发框架
  • 3541/short-circuit: Linux高性能web服务器,基于io_uring构建。
  • anolis-os-archive/perf-test-for-io_uring: 一个用于io_uring性能测试的框架。
  • BlazeWasHere/Cnidus: 基于io_uring的C语言web框架。
  • AnSpake/osiris: 一个简单的服务器/客户端,使用io_uring

文章

  • io_uring 高效 IO
  • [译] Linux 异步 I_O 框架 io_uring:基本原理、程序示例与性能压测(2020)
  • 浅析开源项目之io_uring
  • io_uring 系统性整理
  • io_uring(1) – 我们为什么会需要 io_uring
  • io_uring(2)- 从创建必要的文件描述符 fd 开始
  • 下一代异步 IO io_uring 技术解密
  • 小谈io_uring
  • 智汇华云-新时代IO利器-io_uring
  • Linux 5.1 的 io_uring
  • What is io_uring
  • io_uring_setup
  • io_uring_enter
  • io_uring_register
  • The Low-level io_uring Interface
  • Submission Queue Polling
  • Efficient IO with io_uring

视频(提取码:1024)

  • Speeding Up VM’s I_O Sharing Host’s io_uring Queues With Guests by Stefano Garzarella【2020】
  • Asynchronous I_O and coroutines for smooth data streaming - Björn Fahller - NDC TechTown 2021
  • Guilherme Bernal - Reaching 200k req_s on a single core with io_uring - Crystal 1.0 Conference
  • Improved Storage Performance Using the New Linux Kernel I O Interface (SDC 2019)
  • io_uring- BPF controlled I_O - Pavel Begunkov
  • io_uring in QEMU- high-performance disk I_O for Linux
  • Kernel Recipes 2019 - Faster IO through io_uring
  • SDC2021- Samba Multi-Channel_io_uring Status Update
  • Speeding Up VM’s I_O Sharing Host’s io_uring Queues With Guests - Stefano Garzarella, Red Hat
  • USENIX ATC ‘19 - Asynchronous I_O Stack_ A Low-latency Kernel I_O Stack for Ultra-Low Latency SSDs
  • 来自阿里云的 Linux 内核 io_uring 介绍与实践

🔥 cgroup

—— 限制、控制与分离一个进程组的资源(如CPU、内存、磁盘输入输出等)。

文档

  • 官方文档:

    • Control Groups definition, implementation details, examples and API
    • CPU Accounting Controller; account CPU usage for groups of tasks
    • documents the cpusets feature; assign CPUs and Mem to a set of tasks
    • Device Whitelist Controller; description, interface and security
    • checkpointing; rationale to not use signals, interface
    • Memory Resource Controller; implementation details
    • Memory Resource Controller; design, accounting, interface, testing
    • Resource Counter API
  • 其他文档:

    • cgroups介绍
    • CgroupMemcgMaster
    • Resource Management
    • Challenges with the memory resource controller and its performance
    • Ressource Management in Linux with Control Groups
    • System Programming for Linux Containers Control Groups (cgroups)
    • Managing Resources with cgroups
    • 5 years of cgroup v2
    • Linux’s new unified control group system
    • cgroups_intro
    • red_hat_enterprise_linux-6-resource_management_guide-en-us
    • An introduction to Control Groups (cgroups)
    • Using Linux Control Groups and Systemd to Manage CPU Time and Memory
    • An introduction to cgroups and cgroupspy

开源项目

  • containerd/cgroups: 用于创建、管理、检查和销毁cgroup。cgroup上设置的资源格式使用这里找到的OCI运行时规范。
  • mhausenblas/cinf: 一个查看命名空间和cgroups的命令行工具
  • flouthoc/vas-quod: 用Rust编写的一个极小的容器运行时
  • poelzi/ulatencyd: 使用cgroups最小化linux系统延迟的守护进程
  • haosdent/jcgroup: jcgroup是JVM上的cgroup包装器。您可以使用这个库来限制线程的CPU共享、磁盘I/O速度、网络带宽等。
  • kinvolk/traceloop: 使用BPF和可重写的环形缓冲区跟踪cgroup中的系统调用
  • tianon/cgroupfs-mount: 挂载cgroupfs (v1)层次结构的简单(过时)脚本,特别是用于Debian打包的结构化脚本
  • francisbouvier/cgroups: 一个库来管理cgroups Linux内核特性
  • bpowers/mstat: 这个工具运行在Linux上,利用cgroups内核API(也被Docker等容器基础设施使用)来记录一组进程随时间的内存使用情况。

文章

  • Linux cgroups 概述
  • 【译】Control Group v2(cgroupv2 权威指南)(KernelDoc, 2021)
  • How I Used CGroups to Manage System Resources
  • Cgroups控制cpu,内存,io示例
  • Linux Control Groups V1 和 V2 原理和区别
  • Linux资源管理之cgroups简介
  • 彻底搞懂容器技术的基石: cgroup
  • 深入理解 Linux Cgroup 系列(一):基本概念
  • 深入理解 Linux Cgroup 系列(二):玩转 CPU
  • 深入理解 Linux Cgroup 系列(三):内存
  • Cgroup - 从CPU资源隔离说起
  • Cgroup - Linux内存资源管理
  • Cgroup - Linux的IO资源隔离
  • Cgroup - Linux的网络资源隔离
  • 用 cgroups 管理 cpu 资源
  • 用 cgruops 管理进程内存占用
  • 用 cgroups 管理进程磁盘 io

视频

  • Containers_ cgroups, Linux kernel namespaces, ufs, Docker, and intro to Kubernetes pods—提取码: k4hn
  • Understanding and Working with the Cgroups Interface - Michael Anderson, The PTR Group, LLC—提取码: 54vs
  • Linux Container Primitives- cgroups, namespaces, and more!—提取码: cjwd
  • Cgroups, namespaces, and beyond—提取码: at6x
  • Kubernetes On Cgroup v2 - Giuseppe Scrivano, Red Hat—提取码: 552y
  • Cgroup Slab Memory Controller and Time Namespace - DevConf.CZ 2021—提取码: gayh
  • Modern Linux Servers with cgroups - Brandon Philips, CoreOS—提取码: afm1
  • LISA21 - 5 Years of Cgroup v2- The Future of Linux Resource Control—提取码: ygrv
  • Limit CPU usage on Ubuntu with Systemd cgroups—提取码: ktva
  • What’s new in control groups (cgroups) version 2—提取码: w2tz

🔥 ebpf

—— Linux 内核中顶级子模块

文档

  • 官方文档:

    • Linux 内核:https://www.kernel.org/doc/Documentation/networking/filter.txt and https://www.kernel.org/doc/html/latest/bpf/#
    • 开发QA: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/bpf/bpf_devel_QA.rst
    • eBPF-Helpers:https://github.com/iovisor/bpf-docs/blob/master/bpf_helpers.rst/
  • 其他文档:

    • iovisor/bpf-docs: 列出了 eBPF opcode,项目是 iovisor 总结的系列文档、pre。
    • Advanced_BPF_Kernel_Features_for_the_Container_Age_FOSDEM
    • BPF to eBPF
    • Calico-eBPF-Dataplane-CNCF-Webinar-Slides
    • Combining System Visibility and Security Using eBPF
    • DPDK+eBPF
    • Experience and Lessons Learned
    • Fast Packet Processing using eBPF and XDP
    • Kernel Tracing With eBPF
    • Kernel analysis using eBPF
    • Making the Linux TCP stack more extensible with eBPF
    • Performance Analysis Superpowers with Linux eBPF
    • Performance Implications of Packet Filtering with Linux eBPF
    • The Next Linux Superpower eBPF Primer
    • eBPF - From a Programmer’s Perspective
    • eBPF In-kernel Virtual Machine & Cloud Computin
    • eBPF for perfomance analysis and networking
    • eBPF in CPU Scheduler
    • eBPF-based Content and Computation-aware Communication for Real-time Edge Computing

开源项目

  • cilium/cilium: 用于提供、保护和观察容器工作负载之间的网络连接——云原生,并由革命性的内核技术eBPF提供支持,https://cilium.io/
  • BPF Compiler Collection (BCC): BCC -基于bpf的Linux IO分析、联网、监控等工具
  • bpftrace: Linux eBPF的高级跟踪语言
  • Falco: 一种行为活动监视器,旨在检测应用程序中的异常活动。Falco在ebp的帮助下在Linux内核层对系统进行审计。它通过其他输入流(如容器运行时度量和Kubernetes度量)丰富了收集到的数据,并允许持续监视和检测容器、应用程序、主机和网络活动。
  • Katran: 高性能的四层负载均衡器
  • LLVM Compiler: 一个模块化和可重用的编译器和工具链技术的集合。
  • microsoft/ebpf-for-windows: 运行在Windows上的eBPF实现
  • aquasecurity/libbpfgo: 一个用于Linux ebbpf项目的Go库。
  • aquasecurity/tracee: Linux的运行时安全和取证工具。
  • libbpf/libbpf: libbpf是一个基于C/ c++的库,作为上游Linux内核的一部分进行维护。它包含一个eBPF加载器,它接管处理LLVM生成的eBPF ELF文件,以便将其加载到内核中。
  • libbpf/libbpf-rs: Rust生态系统的最小和固执的epf工具
  • foniod/redbpf: Rust库用于构建和运行BPF/eBPF模块
  • aya-rs/aya: 一个用于Rust编程语言的eBPF库,其构建的重点是开发人员的体验和可操作性。
  • cilium/hubble: 使用eBPF的Kubernetes网络、服务和安全可观测性
  • kubearmor/KubeArmor: 一个云本地运行时安全强制系统,它在系统级别限制容器和节点的行为(如进程执行、文件访问和网络操作)。
  • iovisor/kubectl-trace: 使用kubectl在kubernetes集群上调度bpftrace程序
  • iovisor/ply: 一款基于eBPF的Linux动态跟踪软件。

文章

  • 什么是 eBPF
  • eBPF详解
  • BPF 和 eBPF 初探
  • Linux 内核监测技术 eBPF
  • eBPF 如何简化服务网格
  • eBPF 用户空间虚拟机实现相关
  • 基于 eBPF 实现容器运行时安全
  • 深入理解 Cilium 的 eBPF 收发包路径
  • eBPF 概述,第 1 部分:介绍
  • eBPF 概述,第 2 部分:机器和字节码
  • eBPF 概述,第 3 部分:软件开发生态
  • eBPF 概述,第 4 部分:在嵌入式系统运行
  • eBPF 概述,第 5 部分:跟踪用户进程
  • 【译】大规模微服务利器:eBPF + KubernetesKubeCon, 2020

视频

  • Netflix talks about Extended BPF - A new software type—提取码: 83sv
  • containers_ebpf_kernel—提取码: hxkt

🔥 llvm

—— 模块化、可重用的编译器以及工具链技术的集合

文档

  • 官方文档:
    • LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation
    • Introduction to the LLVM Compiler System
    • LLVM语言参考手册
    • LLVM语言参考手册-中文版
    • 入门LLVM核心库
  • 用户指南:
    • 使用CMake构建LLVM: 使用CMake构建系统的主要入门指南的附录。
    • 在ARM平台上构建LLVM指南: 关于在ARM上构建和测试LLVM/Clang的注意事项。
    • 如何使用配置文件引导优化构建Clang和LLVM: 使用PGO构建LLVM/Clang的注意事项。
    • 如何为ARM平台交叉编译compiler-rt Builtins: 关于交叉构建和测试ARM的编译器-rt内置函数的注意事项。
    • 如何使用Clang/LLVM交叉编译Clang/LLVM:关于交叉构建和测试LLVM / Clang的注意事项。
    • 使用Microsoft Visual Studio开始使用LLVM系统:Windows上使用Visual Studio的主要入门指南的附录。
    • LLVM的分析和转换Passes:LLVM中实现的优化和分析列表
    • 当前版本的发布说明:这描述了新功能,已知错误和其他限制。
    • 如何提交LLVM错误报告: 有关正确提交有关您在LLVM系统中遇到的任何错误的信息的说明。
    • sphinx模板快速入门:使用LLVM测试基础结构的参考手册。
    • LLVM测试套件基础结构指南:使用LLVM测试基础结构的参考手册。
    • LLVM测试套件使用指南:描述如何编译和运行测试套件基准测试。
    • 如何构建C,C ++,ObjC和ObjC ++前端:从源代码构建clang前端的说明。
    • LLVM词典:LLVM中使用的首字母缩略词,术语和概念的定义。
    • 如何将构建配置添加到LLVM Buildbot基础结构:有关将新构建器添加到LLVM buildbot master的说明。
    • YAML I/O:使用LLVM的YAML I/O库的参考指南。
    • 前端作者的性能提示:前端作者关于如何生成IR的技巧的集合,LLVM能够有效地优化。
    • Dockerfiles用于构建LLVM的指南:使用随LLVM提供的Dockerfiles的参考。
  • 编程文档:
    • LLVM扩展:LLVM特定的工具和格式扩展LLVM寻求兼容性。
    • CommandLine 2.0库手册:提供有关使用命令行解析库的信息。
    • LLVM编码标准:详细介绍了LLVM编码标准,并提供了有关编写高效C ++代码的有用信息。
    • 如何为类层次结构设置LLVM样式的RTTI:如何让isa<>,dyn_cast<>等可供您的类层次的客户。
    • 扩展LLVM:添加指令,内在函数,类型等:在这里查看如何向LLVM添加指令和内在函数。
    • libFuzzer - 用于覆盖引导的模糊测试的库:用于编写进程中引导模糊器的库
    • 模糊LLVM库和工具:有关编写和使用Fuzzers查找LLVM中的错误的信息.
    • Scudo硬化分配器:一个实现安全加固的malloc()的库。
  • 子系统文档
    • 编写LLVM Passes:有关如何编写LLVM转换和分析的信息
    • 编写LLVM后端:有关如何为机器目标编写LLVM后端的信息
    • LLVM与目标无关的代码生成器:LLVM代码生成器的设计和实现。如果您正在将LLVM重新定位到新架构,设计新的codegen传递或增强现有组件,则非常有用。
    • 机器IR(MIR)格式参考手册:MIR序列化格式的参考手册,用于测试LLVM的代码生成过程。
    • TableGen:描述了TableGen工具,LLVM代码生成器大量使用它。
    • LLVM别名分析基础结构:有关如何编写新别名分析实现或如何使用现有分析的信息。
    • MemorySSA:有关LLVM中的MemorySSA实用程序的信息,以及如何使用它。
    • 使用LLVM进行垃圾收集:接口源语言编译器应该用于编译GC程序。
    • 使用LLVM进行源级别调试:本文档描述了LLVM源代码级调试器背后的设计和理念。
    • LLVM中的自动矢量化:本文档描述了LLVM中矢量化的当前状态
    • LLVM中的异常处理:本文档描述了LLVM中异常处理的设计和实现
    • 如何添加一个受约束的浮点内在函数:在LLVM中添加新的约束数学内在时,提供必要的步骤。
    • LLVM bugpoint工具:设计和使用:自动错误查找器和测试用例减少器描述和使用信息
    • LLVM Bitcode文件格式:这描述了用于LLVM“bc”文件的文件格式和编码。
    • 支持库:本文档描述了LLVM支持库(lib/Support)以及如何使LLVM源代码可移植
    • LLVM链接时间优化:设计和实现:本文档描述了LLVM模块间优化器与链接器及其设计之间的接口
    • LLVM黄金插件:如何在Linux上使用链接时优化来构建程序。
    • 使用GDB调试JIT-ed代码:如何使用GDB调试JITed代码。
    • MCJIT设计与实施:描述了MCJIT执行引擎的内部工作原理
    • LLVM分支权重元数据:提供有关分支预测信息的信息。
    • LLVM块频率术语:提供有关BlockFrequencyInfo 分析过程中使用的术语的信息
    • LLVM中的分段堆栈:本文档描述了分段堆栈以及它们在LLVM中的使用方式
    • LLVM的可选丰富的反汇编输出:本文档介绍了可选的丰富反汇编输出语法
    • 如何使用属性:回答有关新属性基础结构的一些问题。
    • NVPTX后端用户指南:本文档描述了使用NVPTX后端编译GPU内核。
    • AMDGPU后端用户指南:本文档描述了使用AMDGPU后端编译GPU内核。
    • LLVM中的堆栈映射和补丁点:LLVM支持将指令地址映射到值的位置并允许修补代码。
    • 在big endian模式下使用ARM NEON指令:LLVM支持在大端ARM目标上生成NEON指令有点不直观。本文档解释了实施和理由。
    • LLVM代码覆盖映射格式:LLVM代码覆盖映射格式
    • LLVM中的垃圾收集安全点:这描述了一组垃圾收集支持的实验扩展。
    • MergeFunctions Pass,它是如何工作的:描述合并优化的函数。
    • InAlloca属性的设计和使用:inalloca参数属性的描述。
    • FaultMaps和隐式检查:LLVM支持折叠控制流入错误机器指令。
    • 用clang编译CUDA:LLVM对CUDA的支持。
    • LLVM中的协同程序:LLVM中的协同程序.
    • 全局指令选择:这描述了原型指令选择替换GlobalISel
    • XRay仪表:有关如何在LLVM中使用XRay的高级文档。
    • 使用XRay进行调试:如何使用XRay调试应用程序的示例。
    • Microsoft PDB文件格式:Microsoft PDB(程序数据库)文件格式的详细说明。
    • 控制流程验证工具设计文档:控制流完整性验证工具的说明
    • 投机负荷强化:Spectre v1的推测负载强化缓解的描述
    • 堆栈安全分析:本文档描述了局部变量的堆栈安全性分析的设计。

LLVM命令指南

基本命令

命令 说明
llvm-as LLVM汇编器
llvm-dis LLVM反汇编器
opt LLVM优化器
llc LLVM静态编译器
lli LLVM字节码解释器
llvm-link LLVM字节码连接器
llvm-lib LLVM的与lib.exe兼用的库工具
llvm-lipo 用于处理通用二进制文件的LLVM工具
llvm-config 打印LLVM编译选项
llvm-cxxmap Mangled name重映射工具
llvm-diff LLVM 结构”diff”
llvm-cov 发出覆盖信息
llvm-profdata 配置数据工具
llvm-stress 生成随机的.ll文件
llvm-symbolizer 将地址转换为源代码中的位置
llvm-dwarfdump 转储并检验DWARF调试信息
dsymutil 操作存档文件中的DWARF调试符号文件
llvm-mca LLVM机器码分析器
llvm-readobj LLVM目标文件分析器

GNU bintils替代命令

命令 说明
llvm-addr2line addr2line的替代品
llvm-ar LLVM归档器
llvm-cxxfilt LLVM符合名称分析器
llvm-nm 列出LLVM字节码和目标文件中的符号表
llvm-objcopy 目标文件复制和编辑工具
llvm-objdump LLVM目标文件转储器
llvm-ranlib 库存档索引生成工具
llvm-readelf GNU风格的LLVM对象读取器
llvm-size 打印目标文件尺寸信息
llvm-strings 打印目标文件中的字符串
llvm-strip 目标文件去除调试信息工具

调试工具

命令 说明
bugpoint 自动测试用例缩减工具
llvm-extract 从LLVM模块中提取函数
llvm-bcanalyzer LLVM字节码分析器

开发工具

命令 说明
FileCheck 灵活的模式匹配文件验证程序
tblgen 目标描述到C++代码生成器
lit LLVM集成测试仪
llvm-build LLVM项目构建实用程序
llvm-exegesis LLVM机器指令基准
llvm-pdbutil PDB文件取证和诊断
llvm-locstats 计算DWARF调试位置的统计信息

开源项目

  • emscripten-core/emscripten: Emscripten:一个llvm到webassembly的编译器
  • tinygo-org/tinygo: 微控制器、WebAssembly (WASM/WASI)和命令行工具。基于LLVM。
  • numba/numba: 使用LLVM支持NumPy动态Python编译器
  • avast/retdec: RetDec是一个基于LLVM的可重定向机器码反编译器。
  • lifting-bits/mcsema: 将x86、amd64、aarch64、sparc32和sparc64程序二进制代码提升到LLVM位码的框架
  • microsoft/DirectXShaderCompiler: 这个repo托管了DirectX Shader编译器的源代码,它是基于LLVM/Clang的。
  • andreasfertig/cppinsights: c++洞察力——用编译器的眼光看你的源代码
  • google/souper: LLVM IR的超优化器
  • HikariObfuscator/Hikari: LLVM模糊处理
  • dotnet/llilc:这个repo包含LLILC,一个基于LLVM的。net Core编译器。它包括一组跨平台的。net代码生成工具,可以将MSIL字节码编译成LLVM支持的平台。
  • banach-space/llvm-tutor: 用于教学和学习的树外LLVM通行证的集合
  • numba/llvmlite: 用于编写JIT编译器的轻量级LLVM python绑定
  • yrnkrn/zapcc: zapcc是一个基于clang的缓存c++编译器,旨在执行更快的编译
  • go-llvm/llgo: 基于llvm的编译器
  • eliben/llvm-clang-samples: unmaintenance:使用LLVM和Clang编译库和工具的例子

文章

  • LLVM 入门篇
  • LLVM-Clang入门
  • LLVM编译器框架介绍
  • Llvm编译的基本概念和流程
  • 后端技术的重用:LLVM不仅仅让你高效
  • 编译优化|LLVM代码生成技术详解及在数据库中的应用
  • 编译器及底层名词解释

视频

  • How LLVM & Clang work—提取码: 225f
  • 2021 LLVM Dev Mtg “Otter- Tracing & Visualizing OpenMP Programs as DAGs Through LLVM’s OMPT…”—提取码: d2k2
  • 2021 LLVM Dev Mtg “Navigating Exotic SIMD Lands with an LLVM Guide”—提取码: 5v6s
  • 2019 LLVM Developers’ Meeting- E. Christopher & J. Doerfert “Introduction to LLVM”—提取码: 8u6e
  • 2019 LLVM Developers’ Meeting- S. Haastregt & A. Stulova “An overview of Clang ”—提取码: r6ct
  • P. Goldsborough “clang-useful- Building useful tools with LLVM and clang for fun and profit—提取码: xemt
    <!–

🔥 kvm

—— Linux内核中的虚拟化基础设施

文档

  • 官方文档:
  • 其他文档:

开源项目

文章

视频(提取码:1024)

🔥 ceph

—— 存储的未来

文档

  • 官方文档:
  • 其他文档:

开源项目

文章

视频(提取码:1024)

🔥 fuse

—— 用户态文件系统

文档

  • 官方文档:
  • 其他文档:

开源项目

文章

视频(提取码:1024)

–>

🔥 联系专栏

Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈

关注微信公众号【后台服务架构师】——【联系我们】,加小姐姐,获取【每天免费技术直播链接】以及更多Linux 内核源码学习资料!

内核资料

发表于 2022-03-03
本文字数: 15k 阅读时长 ≈ 14 分钟

👍👍👍Linux内核学习资料:200+篇经典内核文章,100+篇内核论文,50+内核项目,500+道内核面试题,80+内核讲解视频



📖经典文章 📚paper 📀大佬视频
🕵面试题 🏗开源项目
🏳️‍🌈知识体系 📕电子书籍 📥源码下载

📢 重磅消息:现已开启【Linux内核学习资料】姊妹篇 ——【最全空降Golang资料补给包(满血战斗)】repo计划,有兴趣的开发者可以去看看哟!!!

📢 前言

在我们学习Linux内核之前,我们首先需要掌握以下几点:

  • 了解Linux内核由哪些组成?
  • 须知Linux内核源码(下载的链接👆👆👆)组织结构?
  • 重点需要学习地知识点有哪些?
  • 最后依据我为大家提供的的学习资料,开启我们的Linux学习之旅。

学习资料

📖 文章

【🏆 强烈推荐阅读】Linux入门学习笔记.pdf


1、浅谈Linux内核之CPU缓存

2、Linux IO 之 IO与网络模型

3、你真的理解Linux中断机制吗

4、Linux内核之系统调用

5、Linux内核之任务空间管理

6、Linux操作系统学习——启动

7、Linux操作系统学习——内核运行

8、Linux操作系统学习——内核初始化

内存管理

1、硬件原理 和 分页管理

2、内存的动态申请和释放

3、进程的内存消耗和泄漏

4、内存与I/O的交换

5、其他工程问题以及调优

6、一文了解,Linux内存管理,malloc、free 实现原理

7、尽情阅读,技术进阶,详解mmap原理

8、浅谈Linux内存管理机制

9、熟读精思,熟读玩味,Linux虚拟内存管理,MMU机制,原来如此也

10、多核心Linux内核路径优化的不二法门之-slab与伙伴系统

11、Linux中的内存管理机制

12、Linux中的内存管理之内存映射

13、Linux中的内存管理之分页


进程管理

1、Linux进程、线程、调度(一)

2、Linux进程、线程、调度(二)

3、Linux进程、线程、调度(三)

4、Linux进程、线程、调度(四)

5、一文带你,彻底了解,零拷贝Zero-Copy技术

6、进程间通信,管道,socket,XSI(System V)

7、Linux进程状态总结

8、进程的核心——task_truct

9、进程、线程的创建和派生

10、任务调度

11、进程间通信之管道

12、进程间通信之信号

13、进程间通信之共享内存和信号量


文件系统

1、Linux 操作系统原理-文件系统(一)

2、Linux 操作系统原理-文件系统(二)

3、Linux文件系统详解

4、磁盘IO那些事

5、Linux IO 之 文件系统的架构

6、Linux IO 之 文件系统的实现

7、Linux IO 之 块I/O流程与I/O调度器

8、Linux操作系统学习之虚拟文件系统

9、Linux操作系统学习之文件系统


网络协议栈

1、Linux内核网络udp数据包发送(一)

2、Linux内核网络udp数据包发送(二)-UDP协议层分析

3、Linux内核网络UDP数据包发送(三)—IP协议层分析

4、Linux操作系统原理—内核网络协议栈

5、Linux网络栈解剖

6、深入分析Linux操作系统对于TCP IP栈的实现原理与具体过程

7、透过现象看本质,从linux源码角度看epoll

8、驾驭Linux内部网络实现——关键数据结构 sk_buff

9、Linux内核之epoll模型

10、Linux网络源代码学习——整体介绍

11、Linux 中的五种IO模型


设备驱动

1、Linux 总线、设备、驱动模型的探究

2、Linux 设备和驱动的相遇

3、Linux操作系统学习之字符设备


🕵 面试题

面试题一

1、什么是Linux?

2、Unix和Linux有什么区别?

3、什么是 Linux 内核?

4、Linux的基本组件是什么?

5、Linux 的体系结构

6、BASH和DOS之间的基本区别是什么?

7、Linux 开机启动过程?

8、Linux系统缺省的运行级别?

9、Linux 使用的进程间通信方式?

10、Linux 有哪些系统日志文件?

11、Linux系统安装多个桌面环境有帮助吗?

12、什么是交换空间?

13、什么是root帐户?

14、什么是LILO?

15、什么是BASH?

16、什么是CLI?

17、什么是GUI?

18、开源的优势是什么?

19、简单 Linux 文件系统?

20、Linux 的目录结构是怎样的?

21、什么是 inode ?

22、什么是硬链接和软链接?

23、RAID 是什么?

24、一台 Linux 系统初始化环境后需要做一些什么安全工作?

25、什么叫 CC 攻击?什么叫 DDOS 攻击?

26、什么是网站数据库注入?

27、Shell 脚本是什么?

28、可以在 Shell 脚本中使用哪些类型的变量?

29、Shell 脚本中 if 语法如何嵌套?

30、Shell 脚本中 case 语句的语法?

31、Shell 脚本中 for 循环语法?

32、Shell 脚本中 while 循环语法?

33、如何使脚本可执行?

34、在 Shell 脚本如何定义函数呢?

35、判断一文件是不是字符设备文件,如果是将其拷贝到 /dev 目录下?

36、添加一个新组为 class1 ,然后添加属于这个组的 30 个用户,用户名的形式为 stdxx ,其中 xx 从 01 到 30 ?

37、写一个 sed 命令,修改 /tmp/input.txt 文件的内容?

38、用户进程间通信主要哪几种方式?

39、通过伙伴系统申请内核内存的函数有哪些?

40、Linux 虚拟文件系统的关键数据结构有哪些?(至少写出四个)

41、对文件或设备的操作函数保存在那个数据结构中?

42、Linux 中的文件包括哪些?

43、创建进程的系统调用有那些?

44、调用 schedule()进行进程切换的方式有几种?

45、Linux 调度程序是根据进程的动态优先级还是静态优先级来调度进程的?

46、进程调度的核心数据结构是哪个?

47、如何加载、卸载一个模块?

48、模块和应用程序分别运行在什么空间?

49、Linux 中的浮点运算由应用程序实现还是内核实现?

50、模块程序能否使用可链接的库函数?

51、TLB 中缓存的是什么内容?

52、Linux 中有哪几种设备?

53、字符设备驱动程序的关键数据结构是哪个?

54、设备驱动程序包括哪些功能函数?

55、如何唯一标识一个设备?

56、Linux 通过什么方式实现系统调用?

57、Linux 软中断和工作队列的作用是什么?

58、Linux开机启动过程?

59、Linux系统缺省的运行级别

60、Linux系统是由那些部分组成?

61、硬链接和软链接有什么区别?

62、如何规划一台Linux主机,步骤是怎样?

63、查看系统当前进程连接数?

64、如何在/usr目录下找出大小超过10MB的文件?

65、添加一条到192.168.3.0/24的路由,网关为192.168.1.254?

66、如何在/var目录下找出90天之内未被访问过的文件?

67、如何在/home目录下找出120天之前被修改过的文件?

68、在整个目录树下查找文件“core”,如发现则无需提示直接删除它们。

69、有一普通用户想在每周日凌晨零点零分定期备份/user/backup到/tmp目录下,该用户应如何做?

70、每周一下午三点将/tmp/logs目录下面的后缀为*.log的所有文件rsync同步到备份服务器192.168.1.100中同样的目录下面,crontab配置项该如何写?

71、找到/tmp/目录下面的所有名称以”s1.jpg”结尾的普通文件,如果其修改日期在一天内,则将其打包到/tmp/back.tar.gz文件中

72、配置mysql服务器的时候,配置了auto_increment_increment=3,请问这里的3意味着什么?

73、详细说明keepalived的故障切换工作原理

74、什么是系统调用?

75、进程和线程的区别?

76、进程有哪几种状态?

77、进程间的通信方式

78、线程间的同步的方式

79、进程的调度算法

80、操作系统的内存管理主要是做什么?

81、常见的几种内存管理机制

82、快表和多级页表

83、分页机制和分段机制的共同点和区别

84、逻辑(虚拟)地址和物理地址

85、CPU 寻址了解吗?为什么需要虚拟地址空间?

86、什么是虚拟内存(Virtual Memory)?

87、局部性原理

88、虚拟存储器

89、虚拟内存的技术实现

90、页面置换算法

面试题二

1、绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令?

2、怎么查看当前进程?怎么执行退出?怎么查看当前路径?

3、怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当前用户 id?查看指定帮助用什么命令?

4、Ls 命令执行什么功能? 可以带哪些参数,有什么区别?

5、建立软链接(快捷方式),以及硬链接的命令。

6、目录创建用什么命令?创建文件用什么命令?复制文件用什么命令?

7、使用哪一个命令可以查看自己文件系统的磁盘空间配额呢?

8、查看文件内容有哪些命令可以使用?

9、随意写文件命令?怎么向屏幕输出带空格的字符串,比如”hello world”?

10、终端是哪个文件夹下的哪个文件?黑洞文件是哪个文件夹下的哪个命令?

11、移动文件用哪个命令?改名用哪个命令?

12、复制文件用哪个命令?如果需要连同文件夹一块复制呢?如果需要有提示功能呢?

13、删除文件用哪个命令?如果需要连目录及目录下文件一块删除呢?删除空文件夹用什么命令?

14、Linux 下命令有哪几种可使用的通配符?分别代表什么含义?

15、用什么命令对一个文件的内容进行统计?(行号、单词数、字节数)

16、Grep 命令有什么用? 如何忽略大小写? 如何查找不含该串的行?

17、Linux 中进程有哪几种状态?在 ps 显示出来的信息中,分别用什么符号表示的?

18、怎么使一个命令在后台运行?

19、利用 ps 怎么显示所有的进程? 怎么利用 ps 查看指定进程的信息?

20、哪个命令专门用来查看后台任务?

21、把后台任务调到前台执行使用什么命令?把停下的后台任务在后台执行起来用什么命令?

22、终止进程用什么命令? 带什么参数?

23、怎么查看系统支持的所有信号?

24、搜索文件用什么命令? 格式是怎么样的?

25、查看当前谁在使用该主机用什么命令? 查找自己所在的终端信息用什么命令?

26、使用什么命令查看用过的命令列表?

27、使用什么命令查看磁盘使用空间? 空闲空间呢?

28、使用什么命令查看网络是否连通?

29、使用什么命令查看 ip 地址及接口信息?

30、查看各类环境变量用什么命令?

31、通过什么命令指定命令提示符?

32、查找命令的可执行文件是去哪查找的? 怎么对其进行设置及添加?

33、通过什么命令查找执行命令?

34、怎么对命令进行取别名?

35、du 和 df 的定义,以及区别?

36、awk 详解?

37、当你需要给命令绑定一个宏或者按键的时候,应该怎么做呢?

38、如果一个linux新手想要知道当前系统支持的所有命令的列表,他需要怎么做?

39、如果你的助手想要打印出当前的目录栈,你会建议他怎么做?

40、你的系统目前有许多正在运行的任务,在不重启机器的条件下,有什么方法可以把所有正在运行的进程移除呢?

41、bash shell 中的hash 命令有什么作用?

42、哪一个bash内置命令能够进行数学运算?

43、怎样一页一页地查看一个大文件的内容呢?

44、数据字典属于哪一个用户的?

45、怎样查看一个linux命令的概要与用法?假设你在/bin目录中偶然看到一个你从没见过的的命令,怎样才能知道它的作用和用法呢?


📀 视频


国外大神

1、Linux Kernel Network Drivers - Classification(Linux内核网络驱动程序)—–百度网盘:qdt5

2、Linux Kernel Development(Linux内核开发)—–百度网盘:vg1u

3、The mind behind Linux(Linux背后的思想)—–百度网盘:zgnu

4、Linux Systems Performance(Linux系统性能)—–百度网盘:9qom

5、Network Driver Interfaces(网络驱动程序接口)—–百度网盘:xpke

6、Selective module compilation in mainline kernel(在主线内核中编译可选模块)—–百度网盘:l56j

7、Linux System Programming 6 Hours Course(Linux系统编程6小时课程)—–百度网盘:hc2d

8、Threads and Thread Handing(线程和线程处理)—–百度网盘:erxm

9、Learning the Linux Kernel with tracing(通过跟踪学习Linux内核)—–百度网盘:066g

10、How to Apply a Patch to the Linux Kernel Stable Tree(如何将补丁应用到Linux内核稳定树)—–百度网盘:955e

11、Linux Kernel Programming(Linux内核编程- atomic_t数据类型-原子变量和api)—–百度网盘:njt0

12、Kernel Recipes 2017 - 性能优化大牛Brendan Gregg —–百度网盘:lrex


国内大佬

1、剖析Linux内核内存管理(一)—–百度网盘:css1

2、剖析linux内核内存管理(二)—–百度网盘:3fxd

3、剖析Linux内核MMU详解—–百度网盘:ees3

4、剖析Linux内核分配页机制—–百度网盘:nnnp

5、剖析Linux内核网络协议栈—–百度网盘:m389

6、剖析Linux内核源码数据同步—–百度网盘:pf2v

7、剖析Linux内核内存分配与回收机制—–百度网盘:hz7k

8、剖析Linux内核锁与IPC机制—–百度网盘:e8ak

9、剖析Linux内核源码框架结构—–百度网盘:6wm9

10、剖析Linux内核进程虚拟内存—–百度网盘:pqr2

11、剖析Linux内核进程调度策略—–百度网盘:ls0s

12、剖析Linux内核源码之地址映射机制—–百度网盘:o5il

13、深度详解Linux内存管理(MM)机制—–百度网盘:p3nr

14、深度剖析Linux内核四大核心框架—–百度网盘:mru1

15、Linux高性能服务器模型选择—–百度网盘:q9gb

16、红黑树在linux内核中的3种场景(红黑树证明,进程管理cfs,内存管理)—–百度网盘:b9r3


📕 电子书籍

《Linux内核完全注释V3.0书签版》

《Linux命令行大全 - 绍茨 (william E.shotts)》

《Linux命令速查手册》

《Linux就该这么学》

《Linux性能优化大师》

《Linux环境编程:从应用到内核》

《Linux集群和自动化运维 余洪春》

《Linux驱动程序开发实例(第2版)》

《Linux高级程序设计(第3版)》

《构建高可用Linux服务器(第4版)》

《深入了解Linux内核》


🏗 内核项目

No. Project Introduction
1 esp8089 ESP8089 WiFi芯片的Linux内核模块驱动程序
2 fibdrv 计算斐波那契数列的Linux内核模块
3 exfat-linux 这个用于Linux内核的exFAT文件系统模块是三星最新的Linux主线的exFAT驱动程序的后端端口。这个项目可以用于日常Linux用户,只需简单地做make && make install。Ubuntu用户可以简单地添加一个PPA并开始使用它,甚至不需要下载代码。这也可以直接插入到现有的Linux内核源代码中,以内联地构建文件系统驱动程序,这对Android内核开发人员应该很有用。
4 ipt-netflow 适用于 Linux 的高性能 NetFlow v5、v9、IPFIX 流数据导出模块核心。创建用于高吞吐量网络中的 linux 路由器。
5 buildKernelAndModules 在NVIDIA Jetson Nano Developer Kit上构建Linux内核和模块
6 kernel-modules-hook 使Arch Linux在内核升级后完全功能
7 rfm12b-linux HopeRF公司生产的RFM12B和RFM69CW数字射频模块的Linux内核驱动程序。它的目标是提供SPI接口的嵌入式Linux板。
8 khttpd khttpd是一个实验性的HTTP服务器,实现为Linux内核模块。服务器默认端口为8081,但是可以使用命令行参数port=?当您准备加载内核模块时。
9 Kernel_Rootkit Kernel_Rootkit是一种特殊类型的恶意软件,它通过修改操作系统内核来向用户和系统管理员隐藏自己的存在。rootkit是一个内核模块——一个动态加载到内核中的库。
10 ktls Linux内核传输层安全模块
11 frdev 一个高效的ip黑/白名单防火墙(作为一个linux内核模块)。
12 HomaModule 一个实现了Homa传输协议的Linux内核模块。
13 PCRE Linux内核模块&PCRE文本搜索引擎
14 acpi_call 一个内核简单模块,允许您通过将方法名称后跟参数写入/proc/ ACPI /call来调用ACPI方法。
13 Linux Modules 这是一个管理Linux内核模块的工具。它是modprobe的一个替代方案,支持列出、添加和删除模块,以及显示模块上的信息。
14 LiME 一个可加载内核模块(LKM),它允许从Linux和基于Linux的设备(如Android)获取易失性内存。这使得LiME独一无二,因为它是Android设备上第一个允许全内存捕获的工具。它还在获取过程中最小化了用户和内核空间进程之间的交互,这使得它能够生成比其他为Linux内存获取而设计的工具更可靠的内存捕获。
15 kplugs KPlugs是一个Linux内核模块,它提供了在Linux内核中动态执行脚本的接口。
16 rapiddisk 一个高级Linux RAM驱动器和缓存内核模块。动态分配RAM作为块设备。使用它们作为独立的磁盘驱动器,甚至将它们映射为缓存节点到较慢的本地磁盘驱动器。
17 forge_socket Linux内核模块,用于从用户空间检查/修改TCP套接字状态
18 CCKiller Linux轻量级CC攻击防御工具脚本
19 libNetGo Linux网络分析工具
20 wgcloud linux运维监控工具,支持系统信息,内存,cpu,温度,磁盘空间及IO,硬盘smart,系统负载,网络流量,进程等监控,API接口,大屏展示,拓扑图,端口监控,docker监控,日志文件监控,数据可视化,webSSH工具,堡垒机(跳板机)
21 hookso hookso是一个Linux动态链接库的注入修改查找工具,用来修改其他进程的动态链接库行为。
22 LinuxPerformanceTools Linux性能监控工具
23 jon jon 是一款Linux系统攻防工具箱,包含扫描,入侵,痕迹清理,木马,网站测试等各种黑客工具。
24 perf-tools 用于Linux ftrace和perf_events(也就是“perf”命令)的各种开发中且不受支持的性能分析工具。ftrace和perf都是核心的Linux跟踪工具,包含在内核源代码中。您的系统可能已经有了ftrace,而perf通常只是一个添加包(参见先决条件)。
25 FlameGraph 火焰图形可视化分析器
26 bcc BCC 是一个用于创建高效内核跟踪和操作程序的工具包,包括几个有用的工具和示例。它利用了扩展 BPF(伯克利数据包过滤器),正式名称为 eBPF,这是首次添加到 Linux 3.15 的新功能。BCC 使用的大部分内容都需要 Linux 4.1 及更高版本。
27 fhe-toolkit-linux IBM Linux的完全同态加密(FHE)工具包被打包为Docker容器,这使得开始和试验完全同态加密技术变得更容易。
28 linux-smart-enumeration 用于渗透测试的Linux枚举工具和具有冗长级别的ctf
29 gpu-monitoring-tools Linux上监视NVIDIA gpu的工具
30 linux-inject 将共享对象注入Linux进程的工具
31 ntttcp-for-linux 一个Linux网络吞吐量多线程基准测试工具
32 linux-pentest Linux穿透测试工具

📚 论文

No. Title Translation(参考) Company
1 《A dataset of feature additions and feature removals from the Linux kernel》 《从Linux内核中添加和删除特性的数据集》 滑铁卢大学
2 《A Novel DDoS Floods Detection and Testing Approaches for Network Traffic based on Linux Techniques》 《基于Linux技术的网络流量DDoS flood检测与测试方法》 大连理工大学软件学院
3 《A Permission Check Analysis Framework for Linux Kernel》 《Linux内核权限检查分析框架》 弗吉尼亚理工学院
4 《An Evaluation of Adaptive Partitioning of Real-Time Workloads on Linux》 《Linux下实时工作负载自适应分区的评估》 Red Hat
5 《Analysis and Study of Security Mechanisms inside Linux Kernel 》 《Linux内核内部安全机制分析与研究》 北京交通大学计算机与信息技术学院
6 《Architecture of the Linux kernel》 《Linux内核的架构》 未知
7 《Automated Patch Backporting in Linux》 《Linux中的自动补丁支持》 新加坡国立大学
8 《Automated Voxel Placement A Linux-based Suite of Tools for Accurate and Reliable Single Voxel Coregistration》 《自动化体素放置基于linux的精确可靠的单体素共配准工具套件》 韦恩州立大学
9 《Automatic Rebootless Kernel Updates》 《自动重启内核更新》 麻省理工学院
10 《Communication on Linux using Socket Programming in ‘C’》 《基于C语言套接字编程的Linux通信》 印度北阿坎德邦现代技术学院计算机科学与信息技术系
11 《Compatibility of Linux Architecture for Diskless Technology System》 《Linux体系结构对无磁盘技术系统的兼容性》 台南科技大学电气工程学院
12 《Concurrency in the Linux kernel》 《Linux内核中的并发性》 伦敦大学
13 《Container-based real-time scheduling in the Linux kernel》 《Linux内核中基于容器的实时调度》 未知
14 《Crash Consistency Test Generation for the Linux Kernel》 《Linux内核的崩溃一致性测试生成》 德克萨斯大学奥斯汀分校
15 《Designing of a Virtual File System》 《虚拟文件系统的设计》 未知
16 《Efficient Formal Verification for the Linux Kernel》 《Linux内核的有效正式验证》 RETIS实验室
17 《Exploiting Uses of Uninitialized Stack Variables in Linux Kernels to Leak Kernel Pointers》 《利用Linux内核中未初始化的堆栈变量泄漏内核指针》 亚利桑那州立大学
18 《Hybrid Fuzzing on the Linux Kernel》 《Linux内核的混合Fuzzing》 俄勒冈州立大学
19 《In-Process Memory Isolation for Modern Linux Systems》 《面向现代Linux系统的进程内内存隔离》 罗格斯大学
20 《Introduction to the Linux kernel challenges and case studies》 《介绍Linux内核的挑战和案例研究》 马德里康普顿斯大学
21 《Kernel Mode Linux Toward an Operating System Protected by a Type Theory》 《面向类型理论保护的操作系统的内核模式Linux》 东京大学
22 《Linux Kernel development》 《Linux内核开发》 怀卡托大学
23 《Linux Kernel Transport Layer Security》 《Linux内核传输层安全》 Facebook
24 《Linux kernel vulnerabilities State-of-the-art defenses and open problems》 《Linux内核漏洞最新的防御和开放问题》 麻省理工学院
25 《Linux Kernel Workshop Hacking the Kernel for Fun and Profit》 《Linux内核研讨会黑客内核的乐趣和利润》 IBM
26 《Linux Network Device Drivers an Overview》 《Linux网络设备驱动程序概述》 印度理工学院
27 《Linux Physical Memory Page Allocation》 《Linux物理内存页分配》 未知
28 《Linux Random Number Generator – A New Approach》 《Linux随机数生成器-一种新的方法》 未知
29 《Machine Learning for Load Balancing in the Linux Kernel》 《Linux内核负载平衡的机器学习》 伊利诺伊大学
30 《Performance of IPv6 Segment Routing in Linux Kernel》 《Linux内核下的IPv6段路由性能》 Cisco
31 《Professional Linux® Kernel Architecture》 《专业的Linux®内核架构》 Wolfgang Mauerer
32 《Research of Performance Linux Kernel File Systems》 《高性能Linux内核文件系统的研究》 乌拉尔国立技术大学
33 《Resource Management for Hardware Accelerated Linux Kernel Network Functions》 《硬件加速Linux内核网络功能的资源管理》 积云网络
34 《Rethinking Compiler Optimizations for the Linux Kernel An Explorative Study》 《重新思考Linux内核的编译器优化——探索性研究》 北京大学电子工程与计算机学院
35 《Securing the Linux Boot Process From Start to Finish》 《从开始到结束保护Linux引导过程》 奥地利波尔顿应用科学大学
36 《Security Applications of Extended BPF Under the Linux Kernel》 《Linux内核下扩展BPF的安全应用》 卡尔顿大学计算机科学学院
37 《Simple and precise static analysis of untrusted Linux kernel extensions》 《简单和精确的静态分析不可信的Linux内核扩展》 VMware
38 《Speeding Up Linux Disk Encryption》 《加快Linux磁盘加密》 未知
39 《Stateless model checking of the Linux kernel’s hierarchical read-copy-update (tree RCU)》 《Linux内核的分层read-copy-update (tree RCU)的无状态模型检查》 雅典国立技术大学
40 《Survey Paper on Adding System Call in Linux Kernel 3.2+ & 3.16》 《关于在Linux内核3.2+ & 3.16中添加系统调用的调查报告》 北阿坎德邦技术大学Shivalik工程学院计算机科学与工程
41 《The benefits and costs of writing a POSIX kernel in a high-level language》 《用高级语言编写POSIX内核的好处和成本》 麻省理工学院
42 《The real-time Linux kernel a Survey on PREEMPT_RT》 《实时Linux内核PREEMPT_RT综述》 米兰理工大学
43 《Trace-Based Analysis of Locking in the Linux Kernel》 《基于跟踪的Linux内核锁定分析》 奥斯纳布吕克大学
44 《Tracing Network Packets in the Linux Kernel using eBPF》 《使用eBPF跟踪Linux内核中的网络包》 圣彼得堡国立大学
45 《TRACING THE WAY OF DATA IN A TCP CONNECTION THROUGH THE LINUX KERNEL》 《通过Linux内核跟踪TCP连接中的数据方式》 加纳马尼理工学院
46 《Understanding Linux Kernel》 《了解Linux内核》 未知
47 《Understanding Linux Malware》 《了解Linux的恶意软件》 Cisco
48 《Using kAFS on Linux for Network Home Directories》 《在Linux上使用kfs用于网络主目录》 密歇根大学
49 《Verification of tree-based hierarchical read-copy update in the Linux kernel》 《Linux内核中基于树的分层读拷贝更新的验证》 牛津大学
50 《XDP test suite for Linux kernel》 《Linux内核的XDP测试套件》 马萨里克大学

📁 Linux内核组成

Linux内核主要由 进程管理、内存管理、设备驱动、文件系统、网络协议栈 外加一个 系统调用。


🗂 源码组织结构


🏳️‍ Linux内核知识体系


内存管理(文章直达 🚲)(论文直达 🚗)(视频直达 🚄)(面试题直达 🛩)(内核项目直达 🚀)

  • 内存原理
    • SMP/NUMA模型组织
    • 页表/页表缓存
    • CPU缓存
    • 内存映射
  • 虚拟内存
    • 伙伴分配器
    • 块分配器
    • 巨型页
    • 页回收
    • 页错误异常处理与反碎片技术
    • 连续内存分配器技术原理
    • 不连续页分配器原理与实现
  • 内存系统调用
    • kmalloc/vmalloc
    • 内存池原理与实现
    • 内存优化与实现

文件系统(文章直达 🚲)(论文直达 🚗)(视频直达 🚄)(面试题直达 🛩)(内核项目直达 🚀)

  • 虚拟文件系统VFS
    • 通用文件模型
    • 数据结构
    • 文件系统调用
    • 挂载文件系统
    • 无存储文件系统
  • 磁盘文件系统
    • Ext2/Ext3/Ext4文件系统
    • 日志JBD2
  • 用户空间系统
    • FUSE原理机制/接口与实现

进程管理(文章直达 🚲)(论文直达 🚗)(视频直达 🚄)(面试题直达 🛩)(内核项目直达 🚀)

  • 进程基础
    • 进程原理及状态
    • 生命周期及系统调用
    • task_struct数据结构
  • 进程调度
    • 调度策略
    • 进程优先级
    • 调度类分析
    • SMP调度

网络协议栈(文章直达 🚲)(论文直达 🚗)(视频直达 🚄)(面试题直达 🛩)(内核项目直达 🚀)

  • 网络基础架构
    • SKB/net_device
    • 网络层分析
    • Linux邻近子系统
    • netlink套接字
    • iptables套接字
    • netfilter框架
    • 内核NIC接口分析
    • mac80211无线子系统
  • 网络协议栈
    • internet控制消息协议(ICMP)
    • 用户数据报协议(UDP)
    • 传输控制协议(TCP)
    • 流控制传输协议(SCTP)
    • 数据报拥塞控制协议(DCCP)
    • IPv4路由选择子系统*
    • 组播/策略/多路径路由选择
    • 接收/发送(IPv4/IPv6)数据报
    • infiniBand栈的架构
  • 系统API调用
    • POSIX网络API调用
    • epoll内核原理与实现
    • 网络系统参数配置

设备驱动(文章直达 🚲)(论文直达 🚗)(视频直达 🚄)(面试题直达 🛩)(内核项目直达 🚀)

  • 设备子系统
    • I/O机制原理
    • 设备模型
    • 字符设备子系统
    • 网络接口卡驱动
  • Linux设备模型
    • LDM
    • 设备模型和sysfs
  • 字符设备驱动
    • 主设备与次设备
    • 设备文件操作
    • 分配与注册字符设备
    • 写文件操作实现
  • 网卡设备驱动
    • 数据结构
    • 设备方法
    • 驱动程序
  • 块设备驱动
    • 资源管理
    • I/O调度
    • BIO结构原理
    • PCI总线原理
  • 蓝牙子系统
    • HCI层/连接
    • L2CAP
    • BNEP
    • 蓝牙数据包接收架构

联系专栏

零声教育,专注于c/c++Linux后台服务器开发架构技术学习提升。

每天晚上8点【免费技术直播】:分享Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习。

关注微信公众号【后台服务架构师】——【联系我们】,获取本repo最全PDF学习文档!

内存管理

发表于 2022-03-03 分类于 system
本文字数: 7.3k 阅读时长 ≈ 7 分钟

💻 总结整理linux内核的内存管理的资料,包含论文,文章,视频,以及应用程序的内存泄露,内存池相关


本repo搜集整理全网Linux内核—内存管理模块相关知识。

所有数据来源于互联网。所谓取之于互联网,用之于互联网。

如果涉及版权侵犯,请邮件至 wchao_isvip@163.com ,我们将第一时间处理。

如果您对我们的项目表示赞同与支持,欢迎您 lssues 我们,或者邮件 wchao_isvip@163.com 我们,更加欢迎您 pull requests 加入我们。

感谢您的支持!

This Repo collects and organizes the whole network Linux kernel – memory management module related knowledge.

All data comes from the Internet. The so-called take from the Internet, use for the Internet.

If copyright infringement is involved, please email wchao_isvip@163.com and we will deal with it as soon as possible.

If you agree to our project and support, welcome lssues, we, or email wchao_isvip@163.com us, More welcome pull requests to join us.

Thank you for your support.

  • 目录
    • @ 文章
    • @ 视频
    • @ 面试题
    • @ 100篇论文
    • @ 内存池相关
    • @ 内存泄露
    • @ 内存管理工具

📜 100篇文章

内存管理(一):硬件原理 和 分页管理

内存管理(二):内存的动态申请和释放

内存管理(三):进程的内存消耗和泄漏

内存管理(四):内存与IO的交换

内存管理(五):其他工程问题以及调优

———内存管理系列文章———

内存管理系列一:启动简介

内存管理系列二:创建启动阶段的页表

内存管理系列三:MMU前CPU初始化及打开MMU

内存管理系列四:setup_arch简介(内存管理初始化)

内存管理系列五:alloc_pages从伙伴系统申请空间简易流程

内存管理系列六:伙伴系统之buffered_rmqueue

内存管理系列七:slub初始化

内存管理系列八:slub创建

内存管理系列九:slub申请内存

内存管理系列十:slub回收

内存管理系列十一:slub销毁

内存管理系列十二:vmalloc内存机制

内存管理系列十三:VMA操作

内存管理系列十四:brk

内存管理系列十五:do_page_fault缺页中断

内存管理系列十六:反向映射RMAP

内存管理系列十七:内存池

内存管理系列十八:内存回收之LRU链表

内存管理系列十九:内存压缩算法

内存管理系列二十:内存压缩算法之数据同步

内存管理系列二十一:内存回收入口

内存管理系列二十二:内存回收核心流程

———-英文文章鉴赏———-

Linux: large-memory management histories

Looking at kmalloc() and the SLUB Memory Allocator

Memory Management in OS: Contiguous, Swapping, Fragmentation

Memory Management in Operating System

Operating System - Memory Management

Virtual Memory in OS: What is, Demand Paging, Advantages

Why Do We Need Virtual Memory

———-分割线———-

Linux 内核(5.4.81)—内存管理模块源码分析

glibc2.23 ptmalloc 原理概述

多核心Linux内核路径优化的不二法门之-slab与伙伴系统

尽情阅读,技术进阶,详解mmap原理

浅谈Linux内存管理机制

Linux中的内存管理机制

C++中内存管理之new、delete

malloc和free的实现原理解析

常用寄存器总结

内存碎片之外部碎片与内部碎片

Linux虚拟内存管理,MMU机制,原来如此

一文了解,Linux内存管理,malloc、free 实现原理

内存管理之内存映射

内存管理之分页

内存管理之内核空间和用户空间

Linux 内存占用分析的几个方法,你知道几个?

深入理解 Linux 内存子系统

深入理解 glibc malloc:内存分配器实现原理

图解 Linux 内存性能优化核心思想

一文让你看懂内存与CPU之间的关系

linux内存管理—详解

一文带你了解,虚拟内存、内存分页、分段、段页式内存管理

深入浅出linux内存管理(一)

深入浅出linux内存管理(二)

为什么linux需要虚拟内存

【总结时刻】物理内存空间管理

【总结时刻】用户态内存映射

【总结时刻】内核态内存映射

虚拟地址空间——MMU

进程的虚拟内存空间

📀 视频

Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈

内存管理 —Slab | 内存映射 | kmalloc | vmalloc | 内核源码 | MM | brk

90分钟了解 Linux内存架构— numa的优势 | slab的实现 | vmalloc的原理

内存分配与回收机制—伙伴算法|slab分析|内存映射|进程虚拟空间|请求调页|写时复制

3种内存泄漏的解决方案–hook|malloc函数|free函数|避免内存泄漏

剖析Linux内核MMU机制—页表原理|高速缓存|TLB工作原理|内存映射|不连续页原理

虚拟内存空间之VMA实战操作

Linux内核内存管理(一)—内存映射|空间管理|ARM32/64页表|slab分配器|malloc

Linux内核内存管理(二)—malloc|mmap|反向映射|缺页中断处理|回收页面|KSM实现|内存漏洞|匿名页面

Linux内核内存管理(三)—Slab机制架构|物理页面|管理区|分配/释放页面

Linux内核之内存页回收—LRU及反向映射?如何异步回收、直接回收?以及回收slab缓存

Linux内核内存管理专题训练营(一)—伙伴系统|slab分配器|vmalloc()|malloc()|TLB|虚拟内存|缺页机制

Linux内核内存管理专题训练营(二)—伙伴系统|slab分配器|vmalloc()|malloc()|TLB|虚拟内存|缺页机制

Linux内核精讲之内存管理—物理内存组织|内核引导|内存映射

Linux物理内存页面分配—kmalloc|slab/slub|页框分配机制

Linux内存问题终极探讨—虚拟内存|内存池|内存泄漏|管理组件

—–西安交通大学内存管理(24讲)提取码1024—–

背景

固定分区分配

连续内存分配

分页

分页硬件和TLB

分段管理

虚拟内存

请求调页

页面置换

页面置换算法

帧分配

颠簸

❓ 面试题

  • 59问:内存管理
    • 如何知道计算机内存布局?内存空间有多少?
    • 何时去探明内存布局?由谁去探明呢?
    • kernel会加载到何处呢?由什么决定它的位置?
    • kernel映像如何隐匿自己的位置?
    • 探知的e820表如何处理?
    • 内存是连续的吗?
    • 处理完毕的e820表如何管理?
    • 启动之时内存如何映射的?
    • 保护模式是怎样的?相比实模式有何特点?
    • 页保护模式是怎样的?
    • 页面映射有何作用?都有什么好处?
    • x86支持的映射模式都有哪些形式?如何分级的?
    • 内核如何处理多样式的页映射?
    • 面对NUMA等复杂内存环境如何处理?
    • 内核页表如何建立?
    • 内核态进程虚拟地址与物理内存的映射关系?
    • 用户态进程虚拟内存与物理内存的关系如何?
    • 内存管理框架如何构造?
    • Kernel内存空间如何划分?
    • 64位地址空间如何划分?
    • 内存分配空间如何实现不可预测性?
    • 物理内存是如何管理的?怎么分配的?
    • Buddy管理算法所处的位置?在什么地方体现?
    • 内存碎片化了怎么办?
    • 如何为驱动应用预留大块连续内存?
    • LRU如何运作?
    • 内存回收是如何运作的?
    • 相同的内存浪费内存空间了?
    • 页面空间监测手段有什么?
    • 如何降低页面分配的可预测性?
    • 如何防范内存泄密?
    • 如何查看Buddy管理算法下的内存类型信息?
    • 小块内存空间如何分配管理?
    • SLUB如何管理内存的?
    • 如何查看slab信息?
    • 如何防范slab空闲链表的攻击?
    • SLUB分配如何防止被预判?
    • kmalloc和kfree如何实现的?
    • kernel的内存泄漏如何定位?
    • kernel有内存检测机制吗?
    • 支离破碎的内存如何得到大块连续内存?
    • 如何查看vmalloc信息?
    • Percpu内存空间如何管理的?
    • 从proc接口还可以看到什么?
    • 容器的内存如何管理?
    • 内核如何防范信息外泄?
    • 物理内存页面耗尽了如何处理?
    • 内核代码段如何进行自我防护?
    • 内核代码段如何防护注入?
    • kernel程序空间能否再压榨?
    • 面向用户态程序,内核提供了哪些内存分配接口?
    • brk接口实现了什么?
    • mmap接口实现了什么?
    • 用户态内存如何管理?
    • glibc对brk和mmap如何使用?
    • 如何查看进程内存映射信息?
    • 如何查看进程内存占用实际情况?
    • 如何查看进程内存片段映射详情?
    • 如何查看进程内存映射汇总信息?

📃 100篇论文

《ARM的虚拟内存管理技术的研究》

《C语言的内存漏洞分析与研究》

《FreeRTOS内存管理方案的分析与改进》

《Linux Memory Management》

《Linux内存管理分析与研究》

《Linux内存管理的设计与实现》

《Linux内核中内存池的实现及应用》

《Linux内核中动态内存检测机制的研究》

《Linux内核伙伴系统分析》

《Linux内核内存池实现研究》

《Linux实时内存的研究与实现》

《Linux操作系统内核分析与研究》

《Memory Management 101: Introduction to Memory Management in Linux》

《Memory Management in Linux》

《Memory Management》

《NUMA架构内多个节点间访存延时平衡的内存分配策略》

《Nginx Slab算法研究》

《TCP_IP协议栈的轻量级多线程实现》

《VC中利用内存映射文件实现进程间通信的方法》

《Virtual Memory Management Techniques in 2.6 Kernel and Challenges》

《Visual C 中利用内存映射文件在进程之间共享数据》

《Linux Physical Memory Page Allocation》

《一个内存分配器的设计和实现》

《一种Linux内存管理机制》

《一种TLB结构优化方法》

《一种优化的伙伴系统存储管理算法设计》

《一种基于虚拟机的动态内存泄露检测方法》

《一种提高Linux内存管理实时性的设计方案》

《一种改进的Linux内存分配机制》

《一种改进的伙伴系统内存管理方法》

《一种跨平台内存池的设计与实现》

《一种高效的池式内存管理器的设计》

《云计算平台中多虚拟机内存协同优化策略研》

《云计算平台中多虚拟机内存协同优化策略研究》

《内存管理机制的高效实现研究》

《分页存储管理系统中内存有效访问时间的计算》

《利用内存映射连续性提高TLB地址覆盖范围的技术评测》

《动态内存分配器研究综述》

《动态存储管理机制的改进及实现》

《基于C 的高效内存池的设计与实现》

《基于C 自定义内存分配器的实现》

《基于Linux内核的动态内存管理机制的实现》

《基于Linux内核页表构建内核隔离空间的研究及实现》

《基于RDMA和NVM的大数据系统一致性协议研究》

《基于RDMA高速网络的高性能分布式系统》

《基于RelayFS的内核态内存泄露的检测和跟踪》

《基于linux用户态可自控缓冲区管理设计与实现》

《基于multimap映射的动态内存分配算法探究》

《基于云计算虚拟化平台的内存管理研究》

《基于内存池的空间数据调度算法》

《多核系统内存管理算法的研究》

《实时系统内存管理方案的设计与实现》

《对linux伙伴系统及其反碎片机制的研究》

《嵌入式实时系统动态内存分配管理器的设计与实现》

《并发数据结构及其在动态内存管理中的应用》

《应用协同的进程组内存管理支撑技术》

《支持高性能IPC的内存管理策略研究》

《有效的C 内存泄露检测方法》

《浅析伙伴系统的分配与回收》

《用户态内存管理关键技术研究》

《申威处理器页表结构Cache的优化研究与实现》

《虚拟化系统中的内存管理优化》

《面向Linux内核空间的内存分配隔离方法的研究与实现》

《页面分配器的研究与实现》

🌌 内存池相关

文章

  • 18张图揭秘高性能Linux服务器内存池技术是如何实现的

  • C++ 实现高性能内存池

  • Nginx 内存池管理

  • 性能优化:高效内存池的设计与实现

    框架

  • userpro/MemoryPool:一个极简内存池实现

  • DavidLiRemini/MemoryPool:简单有效的内存池实现

  • DGuco/shmqueue:基于c++内存池,共享内存和信号量实现高速的进程间通信队列,单进程读单进程写无需加锁,多进程读多进程写用信号量集实现读写锁保证读写安全

  • ycsoft/pool:基于ANSI C开发的内存池和线程池,性能优异

  • hansionz/ConcurrentMemoryPool:一个三级缓存的高并发内存池

  • Fang-create/memory_pool:内存池—-仿nginx实现

  • CandyConfident/HighPerformanceConcurrentServer:基于C++11、部分C++14/17特性的一个高性能并发httpserver,包括日志、线程池、内存池、定时器、网络io、http、数据库连接等模块。

  • crspecter/ydx_slab_util:实现一个内存池,内存管理机制借鉴memcached,使用一系列链表管理不同大小的内存区块。

  • jixuduxing/CommLib:linux常用库,使用boost和标准库编写的常用库,包含线程池、内存池、通信、日志、时间处理、定时器

  • lrsand52m/MemoryPool:基于TLS的高并发内存池

  • [tsreaper/my-allocator](一个简单而较为高效的 C++ Allocator,通过内存池实现):一个简单而较为高效的 C++ Allocator,通过内存池实现

  • lhh0461/simple_mem_pool:简单的C++内存池模块

  • hardrong/concurrent-memory-pool:基于TCmalloc实现的内存池

  • ysluckly/ConcurrentMemoryPool:基于三级缓存架构的高并发内存池

  • qixianghui123/memorypool:基于C++实现内存池技术 memorypool

  • lr-erics/HashIndex:内建内存池的内存索引结构,面向特定场景业务数据,比如在线广告业务数据

  • 1289148370/negix-:移植nginx内存池源码,实现简单的内存池类

  • xjhahah/MemPool:C++项目之内存池技术

  • besmallw/ngx_palloc:ngx源码分析——内存池

  • LumosN/ConcurrentMemoryPool:C++项目 | 高并发内存池

  • Lotu527/MemoryPool:基于C++11实现的内存池

  • YanlinWangWang/Memory-Pool:C++实现的多线程内存池

  • ADreamyj/Cache-Pool:这是一个高并发的内存池项目,其主要解决程序员在申请内存时存在锁竞争以及内存碎片的问题。

🍺 内存泄露

  • 5 useful tools to detect memory leaks with examples
  • 内存泄漏的在线排查

🛠 内存管理工具

Valgrind:Valgrind是一个用于构建动态分析工具的工具框架。有一些Valgrind工具可以自动检测许多内存管理和线程错误,并详细分析你的程序。您还可以使用Valgrind来构建新的工具。
Valgrind发行版目前包括7个产品质量的工具:一个内存错误检测器、两个线程错误检测器、一个缓存和分支预测分析器、一个调用图生成缓存和分支预测分析器,以及两个不同的堆分析器。它还包括一个实验性的SimPoint基本块向量生成器。

AddressSanitizer:Google出品的内存检测工具

内存性能指标

指标-工具映射图

工具-指标映射图

分析思路

分析的基本过程

a. 先用 free 和 top,查看系统整体的内存使用情况。

b. 用vmstat及pidstat查看内存变化情况,确定内存问题类型

c. 详细分析,如内存分配分析、缓存/缓冲区分析、具体进程的内存分析

联系专栏

Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈

关注微信公众号【后台服务架构师】——【联系我们】,获取本repo最全PDF学习文档!

12…26
AIRobot

AIRobot

AIRobot quick note
130 日志
15 分类
23 标签
GitHub E-Mail
Creative Commons
0%
© 2023 AIRobot | 716k | 10:51