首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏韩曙亮的移动开发专栏

    Linux 内核Linux 内核源码结构 ( 下载 Linux 内核源码 | 使用 VSCode 阅读 Linux 内核源码 )

    文章目录 一、下载 Linux 内核源码 二、使用 VSCode 阅读 Linux 内核源码 一、下载 Linux 内核源码 ---- 参考 【Linux 内核】编译 Linux 内核 ① ( 下载指定版本的 Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 ) 博客 , 下载 Linux 5.6.18 版本的内核源码 ; 5.x 内核源码下载地址 : https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/ Linux 内核 5.6.18 版本 : https://mirrors.edge.kernel.org 不同版本的 Linux 内核 区别 : 系统调用 : 其系统调用是相同的 , 新的版本可能会增加新的系统调用 ; 设备文件 : 各内核版本的设备文件都是相同的 , 但是 内部接口 可能不同 ; 二、使用 按钮 , 此时就可以在 VSCode 中阅读 Linux 内核源码 ;

    29.1K30编辑于 2023-03-30
  • Linux内核内核编程】Linux内核的组成

    作为全球应用最广泛的开源操作系统内核Linux内核不仅支撑着Android系统、云计算平台和超级计算机,更是理解现代操作系统原理的最佳实践样本。 一、源代码目录:打开内核世界的地图​ 典型内核源码目录结构(以Linux 5.15为例): linux-5.15/ ├── arch/ # 硬件架构代码(x86, arm, riscv 3-4GB):内核代码和数据,所有进程共享(比如内存管理模块、进程调度模块)​ 好处:进程之间互不干扰,一个程序崩溃不会影响其他程序(比如浏览器崩溃不会让整个系统死机)​ (2)物理内存分配策略​ 伙伴系统 Linux 提供了多种通信方式,各有适用场景:​ (1)管道(Pipe)​ 特点:半双工(单向传输),只能在父子进程间使用​ 例子:命令行中ls | grep "txt",ls的输出通过管道传给grep​ Linux内核的设计哲学——模块化、可扩展性、性能优化——不仅体现在代码结构中,更渗透着Unix"做一件事并做好"的工程智慧。

    1.7K11编辑于 2026-01-21
  • 来自专栏人人都是极客

    Linux内核i2c-tools命令

    i2c-tools的相关命令常用于linux系统读写i2c设备寄存器的在线调试。 安装命令: apt-get update apt-get install i2c-tools linux版本代码下载路径: https://mirrors.edge.kernel.org/pub/software Usage: i2cdetect [-y] [-a] [-q|-r] I2CBUS [FIRST LAST]        i2cdetect -F I2CBUS        i2cdetect -l ## 列出i2c总线 root@linaro-alip:/# i2cdetect -l i2c-0   i2c             rk3x-i2c                                 I2C adapter i2c-1   i2c             rk3x-i2c                                I2C adapter i2c-9   i2c             

    2.9K60编辑于 2022-05-05
  • 嵌入式 ARM Linux 系统构成(2):Linux内核

    一、Linux内核的主要构成 Linux内核由多个子系统组成,每个子系统都承担着特定的功能。这些子系统主要包括: 1.1. 嵌入式文件系统: Flash优化:JFFS2(NOR/NAND)、YAFFS2(NAND)、UBIFS(NAND)支持磨损均衡和坏块管理。 的硬件描述方式: 硬件抽象:.dts文件定义硬件拓扑(示例:GPIO控制器、DMA通道) 运行时解析:Bootloader传递.dtb二进制给内核 典型节点结构: &i2c1 { 六、Linux内核的配置与编译 在嵌入式ARM Linux系统的开发中,通常需要根据硬件和软件的需求,对Linux内核进行配置和编译: ①配置内核 工具:使用make menuconfig等工具进行内核配置 2.

    90710编辑于 2026-01-21
  • 来自专栏韩曙亮的移动开发专栏

    Linux 内核】编译 Linux 内核 ② ( 解压内核源码 | 查询当前 Linux 内核版本号 | 进入并查看 linux 内核源码目录 )

    文章目录 一、解压内核源码 二、查询当前 Linux 内核版本号 三、进入并查看 linux 内核源码目录 一、解压内核源码 ---- 将 下载的 Linux 内核源码 linux-5.6.14.tar.gz 拷贝到 Ubuntu 虚拟机中 , 执行 tar xvf linux-5.6.14.tar.gz 命令 , 解压 Linux 内核源码 ; 解压完毕后 , linux-5.6.14 目录中就是解压后的 Linux 内核源码 ; 二、查询当前 Linux 内核版本号 ---- 执行 uname -a 命令 , 查询当前 Ubuntu 系统的 Linux 内核版本号 , 执行过程如下 : root@ubuntu x86_64 x86_64 x86_64 GNU/Linux root@ubuntu:~/kernel# root@ubuntu:~/kernel# 当前的内核版本号是 4.13.0 ; 三 、进入并查看 linux 内核源码目录 ---- 进入之前解压的 linux-5.6.14 内核源码目录 ; root@ubuntu:~/kernel# ls linux-5.6.14 linux-5.6.14

    92.5K60编辑于 2023-03-30
  • 来自专栏运维小路

    Linux内核-什么是内核

    让我们了解和熟悉基本的Linux内核相关的信息,Linux内核我们主要从以下几个方面来讲解: Linux内核-什么是内核(本章节) Linux内核-内核参数 Linux内核-proc文件系统 Linux 什么是Linux内核 Linux 内核Linux操作系统的核心部分,它是一个自由和开放源代码的类Unix操作系统内核。 [root@localhost ~]# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg CentOS Linux (5.4.278-1.el7 .elrepo.x86_64) 7 (Core) CentOS Linux (3.10.0-1062.el7.x86_64) 7 (Core) CentOS Linux (0-rescue-92af6efa67314b84b2b38893dfd77567 ) 7 (Core) #选择新升级内核作为启动选 #这个是从排序是从0开始 grub2-set-default 0 重启 reboot 升级后启动界面 我们可以看到,新的内核已经是默认内核

    5.4K10编辑于 2024-11-01
  • 来自专栏嵌入式智能硬件

    LINUX内核

    一、Linux内核2.6特点: 1.新的调度器 2.内核抢占 3.改进线程模型 4.虚拟内存 5.文件系统 6.音频:音频体系结构ALSA.支持USB音频和MIDI设备,并支持全双工重放功能。 二、LINUX内核的组成 1.LINUX内核源代码目录结构 1)arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录。如i386,arm,powerpc,mips等。 2)block:块设备驱动程序I/O调度。 3)crypto:常用加密和散列算法,还有一些散列和CRC校验。 4)Documentation:内核各部分通用解释和注释。 模块 16)sound:ALSA,OSS音频中设备的核心代码和常用设备驱动 17)usr:实现了用于打包和压缩的CPIO等 2.LINUX内核组成部分 2.1 LINUX主要用进程调度,虚拟文件系统, 3.Linux内核空间与用户空间 Linux只能通过系统调用和硬件中断来完成用户空间到内核空间的控制转移

    18.8K30发布于 2020-08-28
  • 来自专栏程序IT圈

    Linux 内核 vs Windows 内核

    对于服务器使用的操作系统基本上都是 Linux,而且内核源码也是开源的,任何人都可以下载,并增加自己的改动或功能,Linux 最大的魅力在于,全世界有非常多的技术大佬为它贡献代码。 操作系统核心的东西就是内核,这次我们就来看看,Linux 内核和 Windows 内核有什么区别? ---- 内核 什么是内核呢? 完成第一版 Linux 后,Linux Torvalds 就在网络上发布了 Linux 内核的源代码,每个人都可以免费下载和使用。 Monolithic Kernel Monolithic Kernel 的意思是宏内核Linux 内核架构就是宏内核,意味着 Linux内核是一个完整的可执行程序,且拥有最高的权限。 ,内核中抽象出了微内核的概念,也就是内核中会有一个小型的内核,其他模块就在这个基础上搭建,整个内核是个完整的程序; Linux内核设计是采用了宏内核,Windows 的内核设计则是采用了混合内核

    20.8K30发布于 2021-03-07
  • 来自专栏嵌入式ARM和Linux

    Linux内核2-Cache基本原理

    2 关联方式 Cache的替换策略决定了主存中的数据块会拷贝到cache中的哪个位置,如果对于一块数据(大小为一个line),只有一个line与之对应,我们称之为直接映射;如果该数据块可以和cache中的任意一个 而目前,更多的实现是采用N路相关联的方式,即内存中的某一块数据可能在cache中的N个位置出现,N可能是2,4,8,12,或其它值。 2.1 直接映射 这是一种多对一的映射关系。 2.2 2路组相关联 一个22路相关联的如上图所示,cache分成s组,每组包含两个line,也称为两路,主存中的每个数据块只能位于s个组中的某一个,但可以在指定组中的任意一个line中。 AMD的Athlon的L1级cache所采用的就是这种2路组相联的映射方式。 2.3 N路组相关联 相对于2路组相联更通用的方式是N路组相关联:cache共分成s组,每组有N个line组成。

    98620编辑于 2022-08-15
  • 来自专栏旅途散记

    Linux内核分析与应用2-内存寻址

    本系列是对 陈莉君 老师 Linux 内核分析与应用[1] 的学习与记录。 "保护模式"的引入: 访问内存时不能直接从段寄存器中获得段的起始地址,而需经过额外的转化或检查 "黄金时代": Linux内核中的C和汇编语言 用的GNU的扩展C 汇编语言用的是AT&T的汇编格式与 保护模式提供了四个特权级,Linux使用了其中的2个,0级对应内核态,2级对应用户态 (错) “段被分为了4个特权级,分别为0-3级,有时候我们也叫做ring0-ring3,其中,数值越小特权级越高 一个32位虚拟地址被分为a、b、c三个域,其中a、b用于一个2级页表系统,c为页内偏移地址,则页面数为( )。D A. a+b B. a×b C. 2a×b D. 2a+b <22>. 段地址 虚拟地址转换与段分割 参考资料 [1] Linux 内核分析与应用: https://next.xuetangx.com/course/XIYOU08091001441/1516763

    66230编辑于 2023-09-23
  • Linux内核内核编程】Linux2.6 后的内核特点

    2003 年发布的 Linux 2.6 内核是一个里程碑,它标志着 Linux 从 “极客玩具” 向全场景操作系统的蜕变。 如果说 2.4 内核Linux 进入企业级市场的起点,那么 2.6 及后续版本则是一场从内到外的 “现代化革命”,不仅让 Linux 在服务器、桌面、嵌入式领域全面开花,更奠定了移动互联网和云计算时代的技术基石 二、线程模型:从 “轻量级进程” 到 “真正的线程” 早期 Linux 把线程当作 “共享资源的进程”,调度和资源管理不够精细。 透明大页自动将多个小页面合并为 2MB/1GB 的大页面: 减少页表数量,CPU 缓存能存下更多页表信息,就像把书架上的书按类别打包,找书更快。 ALSA(高级 Linux 声音架构)免费开源,支持: 多通道音频(5.1、7.1 声道),在家看电影有影院级体验。 软件合成器(如 FluidSynth),音乐制作爱好者可以用 Linux 编曲。

    49610编辑于 2026-01-21
  • 来自专栏韩曙亮的移动开发专栏

    Linux 内核】编译 Linux 内核 ⑦ ( 安装内核模块 | 安装内核 | 重启系统 | 查看当前内核版本 )

    文章目录 一、安装内核模块 二、安装内核 三、重启系统 四、查看当前内核版本 一、安装内核模块 ---- 确保 Linux 内核编译完成 , 没有任何报错之后 ; 参考 【Linux 内核】编译 Linux 内核 ⑥ ( 安装 OpenSSL | 安装其它依赖库 | 内核编译完成 ) 博客 ; 进入 Linux 内核源码的根目录 , 执行 sudo make modules_install 命令 , 安装编译好的内核模块 /snd-usb-us122l.ko INSTALL sound/usb/usx2y/snd-usb-usx2y.ko INSTALL sound/x86/snd-hdmi-lpe-audio.ko /linux-5.6.14# 二、安装内核 ---- 内核模块安装完成后 , 执行 sudo make install 命令 , 安装内核 ; 下面的内核安装过程会持续很长时间 ; 内核安装过程 查看当前的内核版本 , 发现当前内核版本已经

    20.8K50编辑于 2023-03-30
  • 来自专栏txp玩Linux

    Linux内核学习(一)之Linux内核源码目录

    dir/ 将dir目录打包成dir.tar.bz2 tar -zxvf dir.tar.gz 解压缩dir.tar.gaz tar -jxvf dir.tar.bz2 解压缩dir.tar.bz2 这个文件就是linux内核特有的内核编译体系需要用到的文件 MAINTAINERS:这个文件主要是介绍了维护人员列表以及如何提交内核更改 Makefile:这个是linux内核的总makefile,整个内核工程用这个 init:init是初始化的意思,这个目录下的代码就是linux内核启动时初始化内核的代码。 ipc:ipc就是inter process commuication,进程间通信,里面都是linux支持的IPC的代码实现 kernel:kernel就是内核,就是linux内核,所以这个文件夹下放的就是内核本身需要的一些代码文件 scripts:脚本,这个目录下全部是脚本文件,这些脚本文件不是linux内核工作时使用的,而是用来辅助对linux内核进行配置编译生产的。

    14.4K51编辑于 2022-03-21
  • 来自专栏机器和智能

    Linux内核设计思想】一、Linux内核相关概念

    什么是Linux内核 Linux系统的基础包括内核、C库、编译器、工具集和系统的基本工具,比如登陆程序和shell。当我们说到Linux这个词时,一般指的是Linux内核。 在Linux下启动一个进程,就会默认打开三个文件描述符:0标准输入、1标准输出、2标准错误。它们分别对应C语言中的stdin、stdout、stderr。 当我们每次打开一个文件,就会分配给这个文件一个当前空闲的最小文件描述符,如果此时标准输入0、标准输出1、标准错误2空闲,那么也会把这个文件描述符分配给新打开的文件但是这三个文件描述符0、1、2与stdin Linux内核是一个单内核,它运行在单独的内核地址空间,但是它汲取了微内核的精华,相对于Unix内核Linux内核有很多新的特性: Linux支持动态加载内核模块。 虽然Linux内核也是单内核,但是在需要的时候可以动态的卸载和加载部分内核代码; Linux支持对称多处理(SMP)机制; Linux内核可以抢占,允许在内核运行的任务优先执行; Linux内核不区分线程和其他一般的进程

    3.2K10编辑于 2024-08-08
  • Linux内核模块】Linux内核模块简介

    你是否好奇过,为什么 Linux 系统可以在不重启的情况下支持新硬件?为什么修改一个驱动程序不需要重新编译整个内核? 这一切都离不开 Linux 的 "模块化魔法"—— 内核模块(Kernel Module)。 作为 Linux 内核最灵活的特性之一,内核模块让开发者可以动态扩展内核功能,今天就来揭开这个神秘组件的面纱。​ 一、什么是内核模块? (insmod 命令背后的故事) (2)卸载过程(rmmod 命令做了什么)​ 检查模块是否被其他模块依赖(依赖计数不为 0 则无法卸载)​ 执行模块退出函数(module_exit 定义)​ 释放模块占用的内核内存​ 编译模块 make all # 2. 加载模块(需要root权限) sudo insmod hello_module.ko # 3.

    64210编辑于 2026-01-21
  • 来自专栏运维小路

    Linux内核-内核模块&参数

    我们的Linux进阶部分,到目前为止,已经讲过:硬件,日常运维,基础软件,日志,进阶命令,防火墙,Shell编程,以及本章将要讲解的内核相关内容,和最后一章Linux系统。 让我们了解和熟悉基本的Linux内核相关的信息,Linux内核我们主要从以下几个方面来讲解: Linux内核-什么是内核 Linux内核-内核模块&参数(本章节) Linux内核-proc文件系统 Linux 内核-sys文件系统 Linux内核-tmpfs文件系统 Linux内核升级,在运维生涯中,其实并不常见。 二、常用命令 1.查看内核模块 #查看当前系统加载的内核模块 lsmod #这个目录下就是Linux服务器有的内核模块 /lib/modules/内核版本/kernel 2.添加新的内核模块 [root 总结 其实我们在前面讲Linux基础软件-swap和防火墙-nat表的时候就修改内核参数。 内核参数是为了实现某个具体的细节功能或者优化某些功能的使用。

    2.2K10编辑于 2024-11-01
  • 来自专栏LINUX阅码场

    Linux内核之旅张凯捷——系统调用分析(2

    并且在linux-4.20内核,glibc-2.23版本环境下编写了用户态系统调用程序并对程序运行追踪分析。 -2.6.39内核进行分析: 3.1 系统调用初始化 从linux内核启动流程入手:start_kernel() -> chenk_bugs() -> identify_boot_cpu() -> 3.3.2 linux4.20内核sysenter系统调用 在linux4.20内核中,对IA32_SYSENTER_EIP寄存器中传入的是entry_SYSENTER_32函数。 -2.6.39和linux-4.20内核源码中支持快速系统调用相关部分进行分析,了解了进行系统调用的执行过程和内核对快速系统调用的相关操作。 下篇将基于Linux-5.0-rc2内核,添加系统调用,完成一个”系统调用日志收集系统“,并对系统调用分析进行总结。 ----

    2.7K20发布于 2019-10-08
  • 来自专栏m0w3n

    linux内核编译

    linux内核下载: https://mirrors.edge.kernel.org/pub/linux/kernel/ https://elixir.bootlin.com/linux/v4.14.34 /source http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/ 查看系统位数: getconf LONG_BIT ? 查看内核版本: cat /proc/version ? uname -a ? 下载内核4.4.38.tar.gz ? 树莓派使用 wget https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/linux-4.4.38.tar.gz 下载到 /home/pi 路径下 解压 tar -zxvf linux-4.4.38.tar.gz ?

    12.6K10发布于 2020-02-28
  • 来自专栏charlieroro

    Linux 内核参数

    和centos的实现是不一样的,如linux内核3.10版本的初始接收窗口定义为10mss,但centos 3.10内核中的初始窗口大小定义为TCP_INIT_CWND * 2,即20*MSS大小。 (看着linux源码在centos7.4系统上测试,纠结了好久。。) 其中1表示客户端开启,2表示服务端开启,3表示客户端和服务器同时开启。在高版本的Linux中,默认为1 tcp_reordering:通知内核在一条TCP中需要重组的报文数目,此时不考虑报文丢失。 socket可以使用TCP_CORK 参数来取消或允许该特性 参考: Linux之TCPIP内核参数优化 TCP protocol Tuning TCP - sysctl.conf 聊一聊重传次数 TCP 具体参见kswapd和pdflush 参考: linux-pdflush.htm linux-kernel-sysctl-vm/ sysctl/vm.txt Linux_Page_Cache_Basics

    10.2K32发布于 2020-03-23
  • 来自专栏陶辉笔记

    linux内核调度算法(2)–CPU时间片如何分配

     prio) / (MAX_USER_PRIO/2), MIN_TIMESLICE)      static unsigned int task_timeslice(task_t *p)   {        2、进程的表现不是始终如一的,比如一开始只是监听80端口,此时进程大部分时间在sleep,时间片用得少,于是nice值动态降低来提高优先级。    * 2) nice -20 CPU hogs do not get preempted by nice 0 tasks.           if (rt_task(p))           return p->prio;          bonus = CURRENT_BONUS(p) - MAX_BONUS / 2; 内核就是这么偏爱交互型进程,从上面的优先级和时间片分配上都能看出来。实际上,内核还有方法对交互型进程搞优待。

    7.9K40发布于 2019-06-21
领券