【构建调试Linux内核网络代码的环境MenuOS系统】教程文章相关的互联网学习教程文章

Linux内核编译(首次)--实验(自用)【图】

1、实验环境 Ubuntu64位: ubuntu 20.04LTS 待编译内核: linux-5.4.109 虚拟机: VMware 2、下载内核源码 网址:https://www.kernel.org 我是选择了对应版本的tarball下载的 3、解压缩内核原码文件 (1)切换到root用户——“su”并输入密码 (如果显示什么密码啥失败 就设置一下root密码——“sudo passwd root”) ("exit"命令切换回用户态) (2)将下载的新内核压缩文件复制到/usr/src目录下 ①mkdir /usr/src/linux-5.4.109...

Linux 内核中红黑树实现分析【代码】

0x00 前言 由于红黑树具有非常重要工程实践意义,很多基础工程中都包含有红黑树的实现。对比 paho.mqtt.c / nginx / libuv / linux 中红黑树的实现发现,Linux 内核中红黑树的实现部分最为经典,本文通过对 Linux 内核中红黑树的实现进行初步分析,并利用 Linux 内核中红黑树的接口,引用《算法导论》中数据结构扩展的一般方法,对红黑树扩展来实现顺序统计树。 0x01 Linux 内核中红黑树实现分析 ① 结构定义 Linux 内核的红黑树数...

Linux内核概念:per-CPU,cpumask,inicall机制,通知链【代码】

Linux内核概念per-CPU,cpumask,inicall机制,通知链rtoax2021年3月在英文原文基础上,针对中文译文增加5.10.13内核源码相关内容。 1. Per-cpu 变量 Per-cpu 变量是一项内核特性。从它的名字你就可以理解这项特性的意义了。我们可以创建一个变量,然后每个 CPU 上都会有一个此变量的拷贝。本节我们来看下这个特性,并试着去理解它是如何实现以及工作的。 内核提供了一个创建 per-cpu 变量的 API - DEFINE_PER_CPU 宏: #define DE...

linux&内核收集录

进程 systemd:浅析 Linux 初始化 init 系统 锁 Linux 死锁检测模块 Lockdep 简介 systemtap 官网:https://sourceware.org/systemtap/documentation.html http://www.redbooks.ibm.com/abstracts/redp4469.html 内核调度:https://www.cnblogs.com/wangzahngjun/p/4911432.html 其余内核资料网站 内核杂志: https://lwn.net/ 内核Documentation:https://www.kernel.org/doc/html/latest/ 内核学习网站: https://elinux.org/...

Linux内核深入理解定时器和时间管理(4):定时器 timer【代码】

Linux内核深入理解定时器和时间管理定时器 timerrtoax2021年3月在原文基础上,增加5.10.13内核源码相关内容。 1. Timers This is fourth part of the chapter which describes timers and time management related stuff in the Linux kernel and in the previous part we knew about the tick broadcast framework and NO_HZ mode in the Linux kernel. We will continue to dive into the time management related stuff in the ...

【Linux内核】巧妙解决jiffies挂钟溢出的问题

注:本文并非原创,原文链接:https://blog.csdn.net/jk110333/article/details/8177285 1. 概述 在Linux内核中,TCP/IP协议栈在很多用到时间比较的地方都使用了jiffies?本文介绍了什么是jiffies,jiffies溢出可能造成的问题,使用time_after等宏来正确地比较时间及其背后的原理。 2. jiffies简介 2.1 时钟中断 在Linux内核中,TCP/IP协议栈在很多用到时间比较的地方都使用了jiffies。 那么jiffies是什么呢?我们知道,操作系统应...

Linux内核源码分析之setup_arch (四)【代码】【图】

前言 网购 https://m.fenfaw.cn/ Linux内核源码分析之setup_arch (三) 基本上把setup_arch主要的函数都分析了,由于距离上一篇时间比较久了,所以这里重新贴一下大致的流程图,本文主要分析的是bootmem_init函数。 代码分析 bootmem_init函数的结构如下: find_limits通过存储在meminfo中的内存条信息得到低端内存和高端内存的页框编号,分别放入到min、max_low、max_high中。 static void __init find_limits(unsigned long *min...

Linux内核源码分析之setup_arch (四)

find_limits通过存储在meminfo中的内存条信息得到低端内存和高端内存的页框编号,分别放入到min、max_low、max_high中。 static void __init find_limits(unsigned long *min, unsigned long *max_low, unsigned long *max_high) { … *min = bank_pfn_start(&mi->bank[0]); for_each_bank (i, mi) if (mi->bank[i].highmem) break; *max_low = bank_pfn_end(&mi->bank[i - 1]); *max_high = bank_pfn_end(&mi->bank[mi->nr_banks ...

清理linux内核源码arch中不相关的目录【代码】

linux源码 2.6.30.4 TQ2440 1.解压源码包 2.添加用于清理垃圾的make目标在顶层Makefile中help目标完了后,增加下面的处理#garbage remove for TQ244PHONY += grmGBG_ARCH_DIR += arch/alphaGBG_ARCH_DIR += arch/avr32GBG_ARCH_DIR += arch/crisGBG_ARCH_DIR += arch/h8300GBG_ARCH_DIR += arch/m68kGBG_ARCH_DIR += arch/microblazeGBG_ARCH_DIR += arch/mn10300GBG_ARCH_DIR += arch/powerpcGBG_ARCH_DIR += arch/shGBG_ARCH_DI...

你可以把Linux内核当成一家软件外包公司的老板【图】

在平时的生活中,我们几乎时时刻刻都在使用操作系统,只是大部分时间你都意识不到它的存在。比如你买了一部手机或者一台平板电脑,立马就能上手使用,这是因为它们里面都预先安装了操作系统。 所以啊,哪有什么岁月静好,只不过有人替你负重前行。而操作系统就扮演了这样一个负重前行的角色。那操作系统到底在背后默默地做了哪些事情,才能让我们轻松地使用这些电子设备呢?要想回答这个问题,我们需要把眼光放回到自己攒电脑的那个...

Linux内核源码目录树结构

文件功能arch包含和硬件体系结构相关的代码,每种平台占一个相应的目录。和32位PC相关的代码存放在i386目录下,其中比较重要的包括kernel(内核核心部分)、mm(内存管理)、math-emu(浮点单元仿真)、lib(硬件相关工具函数)、boot(引导程序)、pci(PCI总线)和power(CPU相关状态)block部分块设备驱动程序crypto常用加密和散列算法(如AES、SHA等),还有一些压缩和CRC校验算法Documentation关于内核各部分的通用解释和注释...

Linux 内核 vs Windows 内核【图】

Windows 和 Linux 可以说是我们比较常见的两款操作系统的。 Windows 基本占领了电脑时代的市场,商业上取得了很大成功,但是它并不开源,所以要想接触源码得加入 Windows 的开发团队中。 对于服务器使用的操作系统基本上都是 Linux,而且内核源码也是开源的,任何人都可以下载,并增加自己的改动或功能,Linux 最大的魅力在于,全世界有非常多的技术大佬为它贡献代码。 这两个操作系统各有千秋,不分伯仲。 操作系统核心的东西就是...

linux内核bug问题排查过程详细报告

Linux Kernel BUG:soft lockup CPU#1 stuck分析 1.线上内核bug日志 kernel: Deltaway too big! 18428729675200069867 ts=18446743954022816244 write stamp =18014278822746377 kernel:------------[ cut here ]------------ kernel:WARNING: at kernel/trace/ring_buffer.c:1988 rb_reserve_next_event+0x2ce/0x370()(Not tainted) kernel:Hardware name: ProLiant DL360 G7 kernel:Modules linked in: fuse ipv6 power_meter...

linux内核-虚拟文件系统

前言 学习《深入linux内核架构》的书本阅读。基本是书中知识点的摘抄。 VFS虚拟文件系统 VFS在内核的层次结构图。 应用目的:为支持本机文件系统,同时允许访问其他操作系统的文件,Linux内核在用户层和文件系统间引入了抽象层,虚拟文件系统(Virtual File System)。 文件系统类型 Disk-based Filesystem 如EXT2Virtual Filesystem 如proc网络文件系统 如NFS 通用文件模型 VFS的解决方案,提供一种结构模型,包含文件系统所应具备的...

linux内核 - ll命令跟踪【代码】

写在前面 内核源码版本,3.10。小菜鸟,下面是个人笔记,还有很多不明白的,如有错误请多多指正。 跟踪过程 目的路径,是利用nfs方式进行挂载的。 通过调用lookup的堆栈信息,可以观察到调用过程包括system_call_fastpath->sys_newlstat->trace_do_page_fault->sysc_newlstat->vfs_fstatat->user_path_at->user_path_at_empty->filename_lookup->path_lookupat->lookup_slow->lookup_hash->lookup_real->d_alloc->nfs_lookup 从vfs...