- 博客(9)
- 收藏
- 关注
原创 深入浅出linux内核-第六篇-Linux进程管理-常用API详解
本文介绍了Linux内核进程管理的核心函数及其源码实现。文章分析了find_get_pid()、pid_task()、pid_nr()和__task_pid_nr_ns()四个关键函数的功能、实现原理和源码位置,并提供了相应的内核代码示例。通过一个测试模块pid_test.c的实践案例,展示了这些函数在实际应用中的使用方法,包括获取进程信息、任务描述符和进程号等操作。输出结果验证了这些函数的正确性。文章有助于理解Linux内核进程管理机制,为深入内核开发提供了实用参考。
2025-07-02 23:27:51
489
原创 深入浅出linux内核-第五篇-Linux进程调度器以及多核调度
Linux进程调度机制解析 摘要:本文详细分析了Linux内核的进程调度机制,重点介绍了五种调度类(停机、限期、实时、公平、空闲)及其优先级顺序。深入解读了CFS完全公平调度器的核心算法,包括虚拟运行时间计算和权重分配机制。同时探讨了多核环境下的SMP对称多处理器调度和NUMA架构差异,以及调度域与调度组在负载均衡中的应用。通过代码实例演示了线程优先级设置和调度策略配置,对比了SCHED_FIFO、SCHED_RR等不同调度策略的特性。文章还解析了实时进程与普通进程的关键区别,以及内核如何通过红黑树等数据结
2025-06-24 17:04:39
596
原创 深入浅出linux内核-第四篇-Linux进程原理与系统调用
本文介绍了Linux操作系统中进程管理的核心概念。进程作为操作系统资源管理的基本单元,本质上是程序的动态执行实例,在Linux中被称为任务(task)。文章详细阐述了进程的生命周期状态(创建、就绪、执行、阻塞、终止),重点解析了Linux内核中的进程控制块(task_struct)数据结构,包括进程状态标志、调度优先级、内存管理、文件系统等关键成员。同时探讨了进程优先级分类(限期进程、实时进程、普通进程)及其调度机制,并说明了系统调用和内核线程的工作原理。最后介绍了进程退出的两种方式:正常退出和异常终止。
2025-06-22 17:39:53
1371
原创 深入浅出linux内核-第三篇-Linux内核源码目录结构分析(基于linux 6.15.2)
Linux内核源码目录结构解析:内核主要包含22个核心目录,如arch(体系架构相关代码)、block(块设备驱动)、drivers(设备驱动)、fs(文件系统)、kernel(核心代码)等。关键文件包括Kconfig(配置菜单)、.config(定制化配置)、Makefile(编译主控)等。不同目录对应特定功能模块,如mm管理内存、net处理网络协议、sound驱动音频设备。这种模块化设计使Linux内核能高效支持多种硬件架构和设备,同时保持高度可配置性。内核通过GPL-2.0许可证开源,并由全球开发者共
2025-06-16 22:58:40
1253
原创 深入浅出linux内核-第二篇-为Ubuntu 20.04升级最新内核linux-6.15.2
本文详细记录了在Ubuntu 20.04虚拟机上将内核从5.15.0-134升级到6.15.2的完整过程。首先从kernel.org下载源码并解压,安装flex、bison等依赖工具后通过menuconfig配置内核选项。在编译过程中解决了openssl、libelf等依赖问题,最终成功编译并安装内核模块。重启验证后系统内核版本成功升级至6.15.2,为后续内核学习和调试奠定了基础。整个操作涵盖了内核升级的关键步骤,并提供了常见问题的解决方法。
2025-06-16 17:51:28
871
原创 深入浅出linux内核-开篇-Linux内核整体架构以及内核各个子系统概要
本文概述了操作系统内核架构及Linux内核子系统。首先对比了宏内核与微内核架构:宏内核集成度高、性能好,而微内核模块化强、稳定性佳。Linux采用混合架构,支持动态模块加载。其次介绍了Linux内核五大子系统:1)进程管理负责CPU资源调度;2)内存管理实现虚拟/物理内存转换;3)虚拟文件系统(VFS)统一各类文件系统接口;4)网络子系统分层处理网络通信;5)进程间通信(IPC)提供6种交互机制。内核通过系统调用实现用户态与内核态切换,并通过Arch抽象层兼容多种硬件架构。整体以进程调度为核心,各子系统协同
2025-06-13 16:31:08
472
原创 新唐那些事之根文件系统篇-NUC980 jffs2文件系统使用指引(基于5.10内核+spinor flash启动)
本文详细介绍了基于新唐NUC980开发板构建支持SPI NOR Flash的JFFS2文件系统过程。主要内容包括:1) 搭建硬件环境(开发板+SPI NOR Flash)和软件环境(Ubuntu 20.04+Buildroot);2) 代码下载与配置修改,涉及内核、uboot和设备树的调整,包括取消RAM文件系统支持、配置SPI NOR驱动等关键步骤;3) 固件构建与烧录方法,详细说明了镜像文件的分区布局和启动参数设置。通过完整的流程指导开发者实现从源码编译到系统启动的全过程,最终成功在SPI NOR Fl
2025-06-10 21:45:00
529
原创 新唐那些事之根文件系统篇-NUC980 ubifs文件系统使用指引(基于5.10内核+spinand flash启动)
本文详细介绍了基于新唐NUC980开发板的UBI文件系统构建流程。首先从官网下载5.10内核的Buildroot代码,选择nuvoton_nuc980_eth2uart_defconfig配置进行初始镜像构建。重点说明了修改Buildroot和内核配置的关键步骤,包括启用UBIFS支持、调整mdev挂载设置和修改设备树文件。最后介绍了固件烧录方法及启动参数设置,并附上环境变量配置示例。整个过程在Ubuntu 20.04环境下完成,为开发者提供了完整的SPI NAND启动解决方案。
2025-06-10 14:29:15
1781
原创 嵌入式linux开发板打通网络之任督二脉
本文介绍如何打通Windows和开发板的网络,使用telnet服务远程登录开发板,利用tftp服务在Windows端和开发板互传文件,以及通过NFS服务实现Winodws与Linux下文件的共享。1)配置busybox,增加telnet相关命令行,其中telnet是发起请求的命令(客户端),telnetd是等待请求的命令(服务端)4)设置WLAN共享设置(家庭网络连接设置为,你开发板和电脑有线连接,用的是哪个网卡,就选择哪个)注:文章只是描述自己实验的步骤,如若不明,可以交流,也欢迎指正!
2023-11-17 14:01:20
378
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅