自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(563)
  • 资源 (40)
  • 收藏
  • 关注

原创 Linux内核实战精髓实录26-TUN/TAP设备详解:实现三层IP隧道与二层以太网隧道

TUN/TAP是Linux内核从2.4版本开始提供的虚拟网络设备框架,其核心价值在于打通用户空间与内核网络协议栈的数据通路。不同于物理网卡依赖硬件芯片处理数据帧,TUN/TAP完全通过软件逻辑实现网络设备的核心功能,成为构建虚拟网络、VPN、容器网络等场景的基础组件。

2025-12-24 16:32:58 604 1

原创 Linux内核实战精髓实录25-Linux网络带宽控制:基于CBQ的配置与带宽限制实现

本文介绍了Linux系统中基于CBQ(Class-Based Queueing)的带宽控制方法。首先分析了多服务共享带宽时可能出现的资源争抢问题,指出CBQ通过分层队列管理能够实现精细化带宽分配。文章详细解析了CBQ的树形分层结构(根类、父类、子类)和三个关键参数(rate、ceil、priority),并比较了SFQ、RR、PRIO等调度算法的适用场景。通过tc工具配置实例,演示了如何为Web服务和文件传输分配不同带宽,包括创建类结构、设置过滤规则和调度算法。

2025-12-18 13:46:36 892

原创 Linux内核实战精髓实录24-FUSE框架应用:sshfs、encfs等用户空间文件系统搭建

FUSE(用户空间文件系统)框架简化了Linux文件系统开发,允许在用户空间实现文件系统逻辑。文章详细介绍了FUSE的工作原理,包括环境准备和两个典型应用:SSHFS通过SSH协议挂载远程目录,实现安全远程访问;EncFS则提供实时文件加密功能,保护敏感数据。两者均通过FUSE内核模块实现用户空间与内核的通信,虽性能略低于内核态文件系统,但极大提升了开发便捷性和功能灵活性。文中包含具体安装配置步骤,并强调SSHFS的网络优化和EncFS的加密配置要点,为开发者提供了实用参考。

2025-12-18 13:46:06 1176

原创 Linux内核实战精髓实录23-fio工具实战:模拟多场景I/O基准测试,评估存储性能

在Linux系统运维与内核优化场景中,存储I/O性能直接决定了业务系统的响应速度与稳定性。无论是数据库服务(MySQL、PostgreSQL)、分布式存储(Ceph、GlusterFS)还是虚拟化环境(KVM、Docker),其底层存储的I/O能力都是核心瓶颈点之一。

2025-12-18 13:45:38 577

原创 Linux内核实战精髓实录22-ext4参数调优:利用sysfs优化inode预读与块分配

摘要: ext4作为Linux主流文件系统,默认配置在高并发IO、大文件或小文件密集场景下可能产生性能瓶颈。通过sysfs动态调整inode预读与块分配参数可优化性能: inode预读:调整inode_readahead_blks(默认32块/128KB)和inode_readahead_ratio(默认50%),匹配访问模式。小文件密集场景建议增大预读量,大文件场景减少预读。 块分配:关键参数如max_contig_blocks(默认8块/32KB)控制连续块分配,平衡寻道效率与碎片问题。

2025-12-18 13:45:26 857

原创 Linux内核实战精髓实录21-从ext2/ext3转换到ext4:功能标志启用与注意事项

摘要: 本文详细介绍了从ext2/ext3迁移到ext4文件系统的必要性及操作步骤。ext4在存储容量(单文件16TB)、性能(延迟分配、扩展区机制)和可靠性(日志校验)方面显著优于前代。迁移前需检查文件系统状态、备份数据并验证完整性。通过tune2fs工具启用ext4核心功能标志(如extents、dir_index),并调整挂载参数(如noatime、discard)以优化性能。转换后需更新/etc/fstab并可选启用在线碎片整理等高级功能。整个过程强调数据安全与兼容性,确保平滑升级。

2025-12-18 13:45:13 930

原创 Linux下SQLite查询结果导出为CSV格式

本文介绍了在Linux环境下使用SQLite命令行工具导出查询结果为CSV格式的方法。主要内容包括:1)SQLite基础环境配置检查;2)交互式和非交互式两种导出方式的具体操作步骤;3)高级技巧如自定义分隔符和条件查询;4)导出结果验证方法;5)针对非标准SVC格式的处理建议。文章强调使用非交互式命令进行自动化处理、确保UTF-8编码避免乱码等最佳实践,并提供了从CSV转换到其他格式的Python示例代码。

2025-12-09 16:03:45 1030

原创 VMware虚拟机Ubuntu磁盘空间扩充详细教程

摘要 本文介绍了在Ubuntu系统中扩展磁盘空间的方法。首先需要使用命令sudo apt-get install gparted安装分区管理工具GParted,安装完成后运行该软件即可对磁盘进行分区操作。通过鼠标拖动的简单方式就能完成分区调整,从而扩充Ubuntu的可用磁盘空间。

2025-12-05 15:10:28 143

原创 Linux内核实战精髓实录20 - ext4文件系统创建与挂载:mount选项与开发版获取方法

本文详细介绍了Linux ext4文件系统的实战应用,包括文件系统创建、挂载配置、性能优化和开发版获取。主要内容涵盖:1)使用mke2fs工具创建ext4文件系统的具体步骤;2)关键mount选项解析及不同场景下的优化建议;3)开发版ext4内核补丁和e2fsprogs工具的获取编译方法;4)常见问题排查技巧。文章从运维和开发双重视角出发,提供了完整的操作示例和原理解析,帮助用户根据存储设备类型和业务需求合理配置ext4文件系统,实现性能与稳定性的最佳平衡。

2025-12-03 10:38:46 658

原创 Linux内核实战精髓实录19-OOM Killer运行机制:进程选择逻辑与proc文件配置技巧

本文深入解析Linux OOMKiller机制,详细介绍其触发条件、进程评分算法及配置优化方法。OOMKiller通过多维评分体系(内存占用、运行时长、进程优先级等)选择终止进程,保障系统核心功能。文章提供了proc文件系统调优指南,包括全局策略设置、进程级豁免配置,并给出不同发行版的特性差异。通过实战案例展示如何保护关键服务进程,同时给出内存过载预防措施。最后总结OOMKiller配置最佳实践,强调核心服务豁免、临时任务优先终止等原则,帮助系统管理员有效平衡稳定性与业务连续性。

2025-12-03 10:38:36 761

原创 Linux内核实战精髓实录18-上游内核ramzswap配置:压缩内存页面,提升内存利用率

本文介绍了Linux内核中的ramzswap组件,这是一种基于内存的块设备驱动,通过压缩内存页面来替代传统磁盘交换区,提升内存利用率并减少I/O性能损耗。文章详细说明了ramzswap的启用条件、配置流程和典型应用场景,包括嵌入式设备内存扩展、无磁盘系统优化等。同时提供了常见问题排查方法和注意事项,强调需要平衡CPU资源与内存容量。ramzswap特别适用于内存有限但CPU性能充足的设备,能有效提升系统稳定性与响应速度。

2025-12-03 10:38:23 817

原创 Linux内核实战精髓实录17 - ramzswap论坛版使用教程:将内存作为交换设备的实现

摘要:ramzswap是一款基于内存压缩的Linux交换设备解决方案,通过LZO算法将换出页面压缩存储在内存中,显著提升交换性能。文章详细介绍了ramzswap论坛版的安装配置过程,包括环境准备、源码编译、模块加载等步骤,并重点讲解两种核心使用模式:纯内存交换(ramzswapdisk)和内存+磁盘混合交换(backingswap)。同时提供了性能监控方法和常见问题解决方案,适用于嵌入式系统、轻量服务器等内存受限场景。通过合理配置,ramzswap能在不增加物理内存的情况下有效缓解内存压力。

2025-12-03 10:38:10 744

原创 Linux内核实战精髓实录16-Linux虚拟存储子系统调整:通过proc文件配置虚拟空间超额使用

Linux虚拟存储子系统通过页面机制管理内存,提供三种超额使用策略:智能预测模式(默认0)、无限制模式(1)和严格限制模式(2)。其中严格模式通过overcommit_ratio参数控制虚拟空间总量(CommitLimit=物理内存+交换区+物理内存×比例)。不同策略适用于不同场景:默认模式适合通用服务器,无限制模式适合特殊应用但风险高,严格模式保障关键业务稳定性。配置可通过/proc/sys/vm参数调整,需注意策略选择对系统性能和内存管理的影响,避免OOM问题。

2025-12-03 10:37:54 679

原创 Linux内核实战精髓实录15 - Block I/O控制器:设置I/O优先级,优化磁盘读写性能

本文深入探讨了Linux系统中Block I/O控制器的工作原理及实战应用。作为Cgroup子系统之一,Block I/O控制器通过与CFQ调度器集成,实现进程组级别的磁盘I/O优先级控制。文章详细介绍了配置方法:包括内核支持检查、CFQ调度器设置、Cgroup挂载、权重分配(100-1000范围)以及进程绑定等步骤。通过fio工具测试验证,高权重(1000)分组获得56.4MB/s的I/O速率,显著优于低权重(100)分组的32.1MB/s,有效解决了前台业务与后台任务的I/O资源竞争问题。同时指出当前版

2025-12-02 10:00:38 1157

原创 Linux内核实战精髓实录14 - Memory Cgroup:限制进程内存使用量,避免内存资源耗尽

摘要:本文详细介绍了Linux MemoryCgroup的使用方法,该系统可实现对进程内存资源的精细管控。主要内容包括:1)MemoryCgroup的核心概念与架构;2)内核配置与文件系统挂载方法;3)关键配置文件的详细说明;4)两个实战案例演示,展示如何限制单个进程内存及创建层级化控制组;5)内存监控方法及常见问题解决方案。通过MemoryCgroup可有效防止内存泄漏、保障系统稳定性,并实现多服务间的资源公平分配。文章提供了从基础配置到高级应用的完整指导,适合系统管理员参考使用。

2025-12-02 09:59:25 587 1

原创 Linux内核实战精髓实录13 - cpuset使用指南:指定进程绑定物理CPU,提升系统性能

摘要: cpuset是Linux内核Cgroup的子系统,用于将进程绑定到指定CPU核心,提升缓存命中率并隔离系统负载。操作流程包括挂载cgroup文件系统、创建CPU分组、配置核心及绑定进程。测试表明,合理绑定多CPU核心可显著提升性能(如编译时间缩短37%)。在虚拟化环境中,cpuset能优化KVM虚拟机性能,减少资源竞争。注意事项包括正确配置内存节点(NUMA架构)、预留宿主CPU核心及动态监控调整。通过精准的CPU资源分配,cpuset有效解决了资源竞争和缓存失效问题,适用于高性能业务场景。

2025-12-02 09:57:16 842

原创 Linux内核实战精髓实录12-Fair Group Scheduling:按进程组分配CPU资源的实操方法

Linux内核的FairGroupScheduling机制基于CFS调度器实现进程组级别的CPU资源管理。通过Cgroup子系统创建进程组并配置cpu.shares权重值(如高优先级组2048,低优先级组512),可将进程绑定到不同组实现资源隔离与动态分配。该方案支持嵌套分组和运行时权重调整,适用于多业务场景下的CPU资源调控。需注意实时进程不受其控制,且进程组数量不宜过多。合理配置权重可确保核心业务获得更多CPU资源,是服务器资源管理的重要技术手段。

2025-12-02 09:56:02 399

原创 Linux内核实战精髓实录11 - RT Group Scheduling与RT Throttling:限制实时进程CPU时间

Linux系统中的实时进程优先级虽高,但存在因无限循环导致系统无响应的风险。为此,内核引入了RTGroupScheduling和RTThrottling功能:前者通过Cgroup实现分组资源管控,后者设置全局CPU时间配额(默认0.95秒/秒)。二者协同工作,既保障实时性需求,又避免异常进程耗尽资源。文章详细解析了其原理、配置方法及典型应用场景,强调需合理设置配额以平衡实时性与系统稳定性。这些机制为构建高可靠Linux系统提供了关键保障。

2025-12-02 09:54:50 579

原创 Linux内核实战精髓实录10 - Linux调度策略全解析:TSS与实时调度的应用场景与配置

本文深入解析Linux内核的进程调度策略,重点对比分时调度(TSS)和实时调度的核心差异及应用场景。Linux提供五大调度策略:默认的SCHED_OTHER(标准分时)、SCHED_FIFO(实时先进先出)、SCHED_RR(实时轮询)、SCHED_BATCH(批处理)和SCHED_IDLE(空闲调度)。文章详细阐述各策略的工作原理、适用场景及配置方法,包括系统调用接口和chrt命令实践。最后结合实际案例(如工业控制系统和Web服务器)说明策略选型要点,并强调实时调度需谨慎使用以避免系统稳定性问题。掌握这些

2025-12-01 15:22:05 819

原创 Linux内核实战精髓实录9-Namespace详解:为Linux进程划分独立PID、网络、挂载空间

Linux Namespace 是内核提供的资源隔离技术,通过修改进程的"资源视图"实现进程级隔离。目前支持8种类型,包括PID、Network、Mount等核心Namespace。PID Namespace隔离进程ID空间,Network Namespace提供独立网络栈,Mount Namespace隔离文件系统。这些技术是容器(Docker/Kubernetes)的基础,通过unshare和ipnetns等命令可手动创建Namespace,实现资源隔离环境。

2025-12-01 15:17:56 987

原创 Linux内核实战精髓实录8 - Linux Cgroup入门

Linux Cgroup是内核提供的资源管理机制,可对进程分组并分配CPU、内存、I/O等系统资源,实现精细化控制。通过挂载cgroupfs文件系统,创建控制组并配置参数(如cpu.cfs_quota_us限制CPU使用率、memory.limit_in_bytes限制内存),可将进程加入特定组进行资源隔离。典型应用包括容器技术、服务器资源共享和关键服务保障。需注意配置不会持久化,建议结合systemd管理,按业务类型划分控制组并定期监控调整。

2025-12-01 15:13:17 758

原创 Linux内核实战精髓实录7 - localmodconfig实用技巧

本文介绍利用Linux内核的localmodconfig工具精简内核配置的方法。通过分析当前系统运行模块,该工具自动生成仅包含必要模块的.config文件,显著提升编译效率。实测显示,精简后内核编译时间缩短68%,模块数量减少93%,系统启动时间缩短33%。文章详细演示了从配置生成到编译安装的完整流程,并对比了默认配置与精简配置的性能差异。针对可能出现的配置失败或驱动缺失问题,提供了具体的解决方案。对于特殊场景,还介绍了将模块静态编译到内核的localyesconfig方法。

2025-12-01 15:03:52 1006

原创 Linux内核实战精髓实录6 - 用checkpatch.pl检查Linux内核补丁格式,避免提交踩坑

本文详细介绍了Linux内核补丁格式检查工具checkpatch.pl的使用方法和重要性。作为内核开发必备工具,checkpatch.pl能自动检查补丁格式是否符合内核编码规范,避免因格式问题导致补丁被拒。文章通过错误案例演示常见格式问题(如行长度超限、括号空格错误、缺少签名等)及修复方法,并提供进阶技巧,如集成到Git工作流和特殊场景豁免。掌握该工具能显著提高补丁质量,体现开发者专业性,加速补丁审核流程。建议开发者将checkpatch.pl检查纳入日常开发流程,养成规范编码习惯。

2025-12-01 15:02:49 549

原创 Linux内核实战精髓实录5 - Git玩转Linux内核源码管理:分支创建、合并与补丁生成

本文详细介绍了Git在Linux内核开发中的核心应用。主要内容包括:1)Linux内核Git源码树的多层次结构(主线、stable树等);2)分支管理的完整流程,从克隆仓库到创建、切换、提交分支;3)分支合并与冲突解决实战技巧;4)符合内核规范的补丁生成与提交方法;5)标签管理和仓库维护等高级操作。文章强调开发中应基于最新主线创建分支、规范提交信息、定期同步更新,并提供了可视化示意图和完整命令示例,帮助开发者掌握Git在内核开发中的关键技能。

2025-12-01 14:56:42 706

原创 Linux内核实战精髓实录4 - 编写Linux内核模块:初始化/退出函数与参数定义详解

本文介绍了Linux内核模块的开发技术。内核模块是动态加载到内核空间的二进制文件,支持设备驱动等功能扩展,具有无需重新编译内核、按需加载等优势。文章详细讲解了模块的核心结构(初始化/退出函数)、参数定义与使用方法,并提供了基础模块和带定时器的高级模块示例。同时介绍了模块编译所需的特殊Makefile编写方法,以及常见问题排查技巧。内核模块开发需要谨慎处理权限问题,错误的代码可能导致系统崩溃,调试时可借助dmesg查看日志。通过模块机制,开发者能够灵活扩展内核功能,实现设备驱动等核心功能。

2025-12-01 14:55:16 914

原创 Linux内核实战精髓实录3 - 内核编译全流程

本文详细介绍了Linux内核编译的全流程,包括编译前的准备工作(源码完整性检查、依赖工具安装、环境清理)、内核配置(使用makemenuconfig进行功能选择和模块配置)、编译优化(多线程编译和选择性编译)以及内核安装(模块安装、映像部署和GRUB引导配置)。文章重点讲解了关键配置项的选择、编译效率优化技巧,并提供了常见问题的解决方案(如依赖缺失、内存不足、驱动识别失败等)。通过完整的操作指引和实用技巧,帮助开发者掌握专业的内核编译能力,实现内核定制、性能优化和故障修复。

2025-12-01 14:45:21 897

原创 Linux内核实战精髓实录2 - 两种方式获取Linux内核源码

本文详细介绍了Linux内核源码的两种获取方式:通过kernel.org下载tar压缩包和通过Git克隆源码仓库。tar包方式适合获取稳定版本进行开发,操作步骤包括下载、验证和解压;Git方式适合追踪最新开发动态,需先安装Git工具再克隆仓库。两种方法各有优势,开发者可根据需求选择。文章还提供了常见问题解决方案,如下载速度慢、Git连接失败等问题。掌握这些方法将为Linux内核学习和开发奠定基础。

2025-12-01 14:41:59 675

原创 Linux内核实战精髓实录1-Linux内核源码树有哪些?一文看懂Linus树、stable树的区别与应用

本文系统介绍了Linux内核源码树的分类及其应用场景。主要内容包括:1)Linus树作为主线开发核心,承担新功能集成;2)stable树提供长期稳定维护;3)linux-next树用于功能整合测试;4)子系统开发树专注特定功能模块;5)发行版内核树适配具体操作系统。文章详细说明了各类源码树的获取方式(tar包或Git克隆)、版本规律和维护周期,并针对不同使用场景(生产环境、开发测试、学习研究)给出源码树选择建议。最后还提供了源码验证、磁盘空间优化等实用技巧,帮助开发者高效参与内核开发或定制工作。

2025-12-01 14:26:26 983

原创 Linux内核架构浅谈97 - Linux工作队列:延迟执行任务的实现与调度

摘要:Linux内核工作队列是处理耗时且可阻塞任务的延迟调度器,通过将任务封装为工作项(work_struct)并由内核线程(worker_thread)在进程上下文中执行,解决了中断和软中断无法睡眠的限制。其核心结构包括工作项、工作队列实例(workqueue_struct)和工作者线程(worker),通过queue_work()提交任务,由worker_thread()循环执行。高级特性包括per-CPU队列优化多核性能,以及延迟工作队列支持定时任务。

2025-11-27 14:57:41 604

原创 Linux内核架构浅谈96 - Linux tasklet:中断下半部处理的轻量级机制

Linux内核引入中断下半部机制(如tasklet)是为了平衡中断处理的实时性和系统性能。中断上半部快速响应硬件请求,而耗时操作(如数据处理、日志记录)则延迟到下半部执行。tasklet作为轻量级下半部实现,具有动态灵活、并发安全的特点,基于软中断机制运行,但需注意其不可睡眠的上下文限制。使用时需正确管理tasklet生命周期,避免嵌套调用和资源竞争。相比工作队列,tasklet更适合短时非阻塞任务。开发者应根据任务特性选择合适机制,并遵循API规范以确保内核稳定性。

2025-11-26 10:50:44 645

原创 Linux服务器编程实践157-统一事件源:将信号事件与I/O事件合并处理

本文介绍了Linux服务器编程中统一事件源的设计模式,解决了传统分离式处理I/O事件与信号事件导致的代码复杂、资源竞争等问题。通过管道将信号事件转换为I/O事件,在同一个事件循环中处理所有事件。文章详细阐述了实现原理、关键技术细节,并提供了完整代码示例,包括管道的创建与使用、信号处理函数设计、epoll边缘触发模式等。此外,还给出性能优化建议、实际应用场景和常见问题排查方法。统一事件源模式简化了服务器架构,提高了稳定性和可维护性,适用于多进程服务器、配置热加载、优雅退出等场景。

2025-11-26 10:47:27 1062

原创 卡尔曼滤波实战

本文介绍了在嵌入式开发中应对传感器数据波动的卡尔曼滤波实用方案。文章首先通过QT和纯C语言两种环境提供了可直接复用的代码实现,重点讲解了如何通过静态变量保存滤波状态,无需复杂封装。针对参数调试难题,提出了"波动大调大R,变化快调大Q"的实用口诀,并给出了常见场景的参数参考值。该方法避免了复杂的数学推导,从工程实用角度出发,帮助开发者快速解决ADC采样、温度测量等场景下的数据噪声问题,实现平滑稳定的数据输出。

2025-11-21 12:04:39 250

原创 Linux服务器编程实践156-SIGHUP信号:控制终端挂起的处理与应用

本文深入解析了Linux服务器编程中的SIGHUP信号机制。SIGHUP信号默认在终端断开时终止进程,但在服务器开发中常用于守护进程保护和配置热加载。文章详细介绍了SIGHUP的三种处理方式(默认终止、忽略和自定义处理),并通过示例代码演示了如何通过sigaction实现配置重新加载功能。同时指出了信号处理中的注意事项和常见错误,如避免使用非可重入函数、处理系统调用中断等。最后总结了SIGHUP在服务管理中的最佳实践,包括Nginx、Apache等服务的实际应用模式,为开发高可用服务器程序提供了实用指导。

2025-11-19 12:06:15 906

原创 SQLite WAL模式深度解析:并发读写优化与实战揭秘

SQLite WAL模式核心技术解析 SQLite的WAL(预写日志)模式是一种突破性的并发优化方案,主要解决传统DELETE模式下的读写互斥问题。核心优势包括: 并发性能:支持1个写操作和多个读操作同时执行 ACID保障:保持事务特性,崩溃后可恢复 无缝迁移:仅需PRAGMA journal_mode=WAL即可启用 关键技术实现: 写操作先记录到.wal文件,不直接修改主数据库 读操作通过合并主数据库和wal日志获取最新数据 数据库级模式切换,所有连接自动适配 实战案例显示,WAL模式下查询进程可每秒执

2025-11-14 10:34:11 287

原创 Linux服务器编程实践155-SIGURG信号:TCP带外数据到达的通知与处理

本文详细介绍了Linux网络编程中TCP带外数据(OOB)与SIGURG信号的机制及应用。TCP通过URG标志模拟带外数据传输,但仅支持1字节紧急数据。SIGURG信号用于通知OOB数据到达,需通过fcntl设置socket宿主进程才能触发。文章提供了完整的服务器/客户端代码示例,演示了SIGURG信号处理流程、OOB数据收发实现,并分析了常见问题解决方案。带外数据适用于紧急中断、异常通知等场景,但需合理使用避免滥用。掌握这一机制能提升网络程序的健壮性和实时响应能力。

2025-11-13 17:25:48 687

原创 Linux服务器编程实践154-SIGPIPE信号:原因、危害与忽略方法

本文探讨了Linux网络编程中SIGPIPE信号的危害与处理方法。该信号在网络连接异常断开时会被触发,导致服务器意外终止。文章分析了三种主要触发场景,包括客户端意外断开、管道读端关闭和socket半关闭状态,并详细阐述了SIGPIPE对服务器稳定性的致命影响。 为解决这一问题,文章提出了四种实用方法:使用signal()或sigaction()函数全局忽略信号、MSG_NOSIGNAL标志细粒度控制,以及结合epoll检测连接状态的主动预防方案。

2025-11-13 17:25:20 853

原创 Linux服务器编程实践153-信号集操作:sigset_t与sigprocmask函数的使用

本文介绍了Linux系统中的信号集(sigset_t)操作和sigprocmask函数的使用方法。信号集作为位掩码数据结构,用于表示和管理一组信号,支持初始化、添加删除、查询等基本操作。sigprocmask函数通过设置进程信号掩码,控制信号的阻塞与解除阻塞,确保关键操作不被中断。文章通过具体代码示例,展示了服务器程序中如何合理使用信号掩码机制,如在处理关键任务时屏蔽SIGCHLD信号、解除屏蔽后处理挂起信号等场景。

2025-11-13 17:24:55 721

原创 Linux服务器编程实践152-信号处理函数:编写可重入信号处理函数的注意事项

本文深入探讨了Linux服务器编程中可重入信号处理函数的设计原则与实践技巧。信号作为异步事件处理机制,其处理函数必须保证可重入性以避免数据竞争和资源冲突。关键原则包括:避免使用非可重入函数(如printf、malloc),禁止修改全局变量,限制信号处理函数的复杂度。文章通过对比不可重入和可重入的代码示例,详细解析了常见陷阱及解决方案,如使用原子变量、管道通知机制等安全实践。同时强调正确处理系统调用中断的重要性,提供了信号掩码设置和SA_RESTART标志等避坑指南。

2025-11-13 17:24:32 608

原创 Linux服务器编程实践151-Linux信号发送:kill函数的参数与使用场景

Linux服务器编程中kill函数的应用解析 摘要:kill函数是Linux进程间通信的核心机制,用于发送信号控制目标进程。文章详细解析kill函数的参数用法:pid参数控制信号接收对象范围(单个进程、进程组或系统广播),sig参数指定信号类型(如SIGTERM优雅终止、SIGKILL强制终止)。重点介绍了kill函数在服务器编程中的典型应用场景:精确控制单个进程、批量操作进程组、系统级广播通知及进程状态检测。通过多个实战示例展示了如何实现服务进程的优雅关闭、进程组管理等关键功能,并提供了信号安全、权限控制

2025-11-13 17:24:17 655

原创 全志T113_i平台mipi10.1寸电容触屏幕调试

摘要:本文介绍了Goodix GT911电容触摸屏在RK平台上的调试过程。通过修改设备树参数(将800x1200调整为1200x1920),并调整ctp_exchange_x_y_flag参数(从0x0改为0x1),成功解决了触摸屏坐标互换的问题。调试过程中使用了T113_i自带的测试程序验证坐标输出,最终通过重新编译和烧写固件使触摸功能正常工作。

2025-11-13 16:24:36 258

RK3568下QT实现按钮切换tabWidget

tabWidget 工程

2025-05-19

RK3568下QT实现输入框支持虚拟键盘,QVirtualKeyboard-master.zip

QVirtualKeyboard-master.zip

2025-05-15

RK3568下电容触屏幕调试技巧 GT911驱动及文档

GT911驱动及文档

2025-05-13

嵌入式tslib触摸库的移植tslib-1.21

tslib-1.21

2025-05-06

制作一个简单的操作系统11的源代码

制作一个简单的操作系统11的源代码

2025-04-27

制作一个简单的操作系统7的源代码

制作一个简单的操作系统7的源代码

2025-04-22

制作一个简单的操作系统6

制作一个简单的操作系统6 的源代码

2025-04-21

基于 QZXing 库的 Qt 二维码解码应用

基于 QZXing 库的 Qt 二维码解码应用

2025-04-11

屏幕动图gif截图软件,免安装直接运行版本,特别好用

屏幕动图gif截图软件,免安装直接运行版本,特别好用

2025-04-08

工业互联防火墙V3R8C02版用户使用指南:配置与安全管理

内容概要:本文档是关于威努特工业互联防火墙(TEG系列)的产品使用手册,涵盖了设备的启动与登录、系统面板、基础防火墙配置、工业白名单管理、NAT配置、攻击防范、路由配置、智能学习、流量监测、入侵检测、防病毒、对象配置、网络配置、VPN、双机热备、扫描防护、诊断中心、流量控制、系统配置等多个方面的详细操作指导。手册不仅介绍了设备的功能和技术规格,还提供了详细的配置步骤和注意事项,旨在帮助用户更好地理解和使用这款防火墙产品,确保工业网络的安全性和稳定性。 适合人群:具备一定网络基础知识和防火墙使用经验的网络管理员、安全工程师及工业网络维护人员。 使用场景及目标:①帮助用户掌握工业互联防火墙的基础配置和高级功能配置;②指导用户进行日常管理和维护,确保设备的稳定运行;③提供安全防护措施,防范各类网络攻击和病毒威胁;④通过智能学习和流量监测等功能,优化网络性能和安全管理。 阅读建议:由于手册内容详尽,建议用户根据实际需求逐步阅读相关内容,重点掌握与自身工作密切相关的配置和管理技巧。同时,建议在实践中不断尝试和验证配置效果,以确保最佳的使用体验。此外,手册中涉及大量图形界面操作,建议结合实际设备进行对照学习。

2025-04-03

【Linux内核技术】Linux内核编译与升级及关键子系统解析:涵盖编译流程、进程调度、内存管理、虚拟文件系统与网络子系统的设计与实现

内容概要:本文详细介绍了Linux内核编译与升级的步骤,包括准备编译工具、下载内核代码、解压、配置内核参数、编译及安装新内核。文中还阐述了Linux内核的整体架构及其五大子系统:进程调度、内存管理、虚拟文件系统、设备驱动和网络子系统。每个子系统包含多个子模块,分别负责不同功能。此外,文章还深入解析了Linux内核中常用的两种数据结构——链表和红黑树,以及它们的具体实现和应用场景。特别提到CFS调度器的工作原理,通过虚拟运行时间和红黑树确保进程调度的公平性。最后,简要介绍了无锁环形缓冲区KFIFO的使用方法和相关接口函数。 适合人群:具备一定Linux基础知识,对操作系统底层原理感兴趣的开发者或系统管理员,尤其是工作1-3年的Linux工程师。 使用场景及目标:①掌握Linux内核编译和升级的完整流程;②理解Linux内核架构及各子系统的工作机制;③熟悉Linux内核中链表和红黑树的数据结构及其应用;④了解CFS调度器如何实现进程调度的公平性;⑤学会使用KFIFO进行高效的生产者-消费者模型编程。 阅读建议:此资源不仅涉及代码编写,更侧重于理论知识的理解和实际操作的结合。建议读者在学习过程中多动手实践,尝试编译和修改内核代码,同时结合调试工具加深对内核工作的理解。对于复杂的算法和数据结构,可以通过查阅官方文档或其他参考资料来增强理解。

2025-04-03

【Linux C应用编程】基于正点原子Linux C应用编程参考手册V1.0:文件I/O、进程与线程编程详解

内容概要:本文档为正点原子团队编写的《Linux C应用编程参考手册》,旨在为Linux C语言应用编程提供基础入门指导。文档内容涵盖了Linux C应用编程的基础知识,包括但不限于文件IO操作、文件高级IO、标准IO、文件属性、系统信息、进程、线程、信号以及线程同步等内容。文档不仅详细介绍了各个主题的基本概念,还提供了大量的代码示例和实际操作指导,帮助读者更好地理解和掌握Linux C应用编程的核心技能。此外,文档还强调了实践的重要性,鼓励读者通过动手实验来巩固所学知识。 适合人群:具备一定C语言编程基础、熟练使用Linux操作系统的初学者,特别是对Linux应用编程感兴趣或希望未来从事相关工作的读者。 使用场景及目标:①帮助读者理解Linux系统调用、库函数、标准C语言函数库以及main函数的作用;②教授文件IO操作、文件属性管理、进程管理和线程同步等关键技术;③通过实际案例和代码示例,提升读者的实际编程能力;④引导读者逐步掌握Linux C应用编程的核心原理和实践技巧。 其他说明:本文档定义为基础入门文档,适合Linux应用编程初学者。对于已有多年Linux应用编程经验的工程师,可能更适合阅读如《UNIX环境高级编程》、《Linux/UNIX系统编程手册》等更深入的专业书籍。文档提供了丰富的学习资源和技术交流平台,如正点原子的

2025-04-03

【嵌入式系统】基于SPI的W25Q128闪存驱动调试:嵌入式Linux开发板SPI接口配置与MTD子系统集成指南

内容概要:本文档详细介绍了正点原子出品的SPI驱动调试参考手册,涵盖了SPI(串行外设接口)的基础知识、子系统简介、组成部分、MTD子系统、设备驱动编写流程、内核SPI子系统和MTD设备驱动使能、设备树添加及MTD块设备的使用。文档不仅解释了SPI的工作原理、信号线、通信模式和优缺点,还深入探讨了嵌入式Linux中SPI和MTD子系统的实现,包括核心层、主机控制器驱动、设备驱动、设备树支持和用户空间接口。此外,文档还提供了详细的硬件配置和软件调试步骤,包括原理图分析、硬件实物展示、内核配置、设备树节点添加以及文件读写测试。 适合人群:具备一定嵌入式系统开发基础,尤其是对SPI和MTD子系统有一定了解的研发人员和技术爱好者。 使用场景及目标:①帮助开发者理解和掌握SPI和MTD子系统的原理及其实现;②指导开发者在嵌入式Linux环境下配置和调试SPI设备,特别是W25Q128 SPI FLASH模块;③提供详细的步骤和实例,确保开发者能够顺利完成硬件连接、内核配置、设备树添加和文件读写测试。 其他说明:文档由广州市星翼电子科技有限公司(正点原子)发布,提供丰富的在线资源和支持,包括官方网站、在线教学平台、论坛、B站视频和淘宝店铺。用户可以通过这些渠道获取更多信息和技术支持。文档还包含了免责声明,强调内容仅供参考,具体操作需谨慎。

2025-04-03

【嵌入式开发】基于Linux系统的iTOP-3568开发板USB设备模拟:U盘与USB网卡功能实现及应用指南

内容概要:本文档是关于北京迅为电子有限公司的iTOP-3568开发板在Linux系统下的使用手册,主要介绍了如何将Linux板卡虚拟成U盘(Mass Storage Gadget)和USB网卡设备(Ethernet Gadget)。文档详细描述了操作步骤,包括命令行指令、内核配置和驱动程序的启用。此外,还提供了注意事项与售后维修政策、技术支持方式及定制开发服务等信息。; 适合人群:嵌入式系统开发者、Linux系统爱好者以及使用iTOP-3568开发板的研究人员和技术人员。; 使用场景及目标:①通过配置命令将Linux板卡虚拟成U盘,实现ARM板与PC之间的数据传输;②通过内核配置和驱动程序启用,将Linux板卡虚拟为USB网卡设备,实现网络共享功能;③了解开发板的售后维修政策和技术支持渠道,确保在开发过程中遇到问题时能够得到及时的帮助和支持。; 其他说明:文档不仅提供了详细的配置步骤,还强调了使用过程中的注意事项,如正确的操作环境和安全措施,以确保设备的安全性和稳定性。此外,用户可以通过多种渠道获得技术支持,包括论坛、电话、邮箱等。文档还提及了定制开发服务,帮助用户加速产品开发周期。

2025-04-03

### 文章总结:北京迅为 iTOP-3568 开发板源码编译手册述 本文档

内容概要:本文档是北京迅为电子有限公司为iTOP-3568开发板提供的源码编译手册,适用于Android11、Android12、Linux及其不同版本的操作系统。手册详细介绍了编译环境的搭建、源码的获取、屏幕配置的设置、不同系统的编译流程(包括单独编译和全自动编译)、常见问题的解决方法、设备树的简介、默认配置的修改和保存、Linux_NVR_SDK的编译,以及Ubuntu和Debian系统的定制等内容。手册还提供了相关视频教程链接,帮助用户更好地理解和操作。 适合人群:具备一定嵌入式系统开发基础,尤其是熟悉Linux和Android系统开发的技术人员;从事嵌入式开发、系统移植、驱动开发等相关工作的工程师。 使用场景及目标:①为用户提供详细的源码编译指导,帮助用户顺利编译并烧写系统;②解决编译过程中可能出现的问题,提供解决方案;③指导用户根据需求定制和修改系统配置;④帮助用户理解并掌握嵌入式系统的开发流程和技术细节。 阅读建议:手册内容详尽,建议读者按照章节顺序逐步阅读,特别是对于初次接触该开发板的用户,应先了解编译环境的搭建和基本操作。对于有经验的开发者,可以根据具体需求跳转到相关章节进行深入学习。在实际操作过程中,结合手册提供的视频教程,可以更直观地理解和解决问题。

2025-04-03

### 文章总结:北京迅为 iTOP-3568 开发板 Linux 系统开发和应用开发手册. **文档概述

内容概要:本文档是北京迅为电子有限公司针对iTOP-3568开发板的Linux系统开发和应用开发手册,详细介绍了开发板在Linux系统下的配置与开发方法。手册涵盖Buildroot、Debian、Ubuntu等多个Linux发行版的系统开发笔记,涉及屏幕设置、待机和锁屏、显示颜色格式、分辨率和缩放、静态IP设置、Qt程序操作、开机自启、音频视频和摄像头开发、VNC和ToDesk远程控制软件安装等内容。同时,手册还提供了关于Buildroot编译常见问题的解决方案、U-Boot和内核开发细节,以及IO电源域的配置方法。手册不仅适用于初次接触嵌入式Linux系统的开发者,也适合有一定经验的研发人员深入学习。 适合人群:具备一定编程基础,尤其是对Linux系统和嵌入式开发有一定了解的研发人员,工作1-3年的工程师,以及希望深入了解嵌入式Linux系统开发的爱好者。 使用场景及目标:①帮助用户掌握iTOP-3568开发板在Linux系统下的基本配置与高级开发技巧;②指导用户解决Linux系统开发中遇到的常见问题;③为用户提供详细的编译和调试指南,确保开发板能

2025-04-03

【嵌入式系统】ITOP-3568开发板PCIE2.0接口快速测试手册:硬件复用关系与Linux及安卓系统网卡测试指导

内容概要:本文档是北京迅为电子有限公司针对iTOP-3568开发板提供的PCIE2.0接口快速测试手册,详细介绍了PCIE千兆网卡的测试流程。手册涵盖了网卡参数、硬件复用关系及Linux和安卓系统的具体测试步骤。其中,Linux系统测试包括内核设备树修改、网卡驱动配置及网络性能测试;安卓系统测试则主要涉及设备树调整和网络性能验证。此外,手册还提供了注意事项、售后维修政策、技术支持方式及资料获取渠道等信息。 适合人群:适用于使用iTOP-3568开发板进行PCIE2.0接口开发和测试的技术人员,尤其是有一定Linux和安卓系统开发经验的研发人员。 使用场景及目标:①帮助用户了解PCIE2.0接口网卡的硬件配置和参数;②指导用户完成Linux和安卓系统下的网卡驱动配置与性能测试;③确保用户能够正确操作开发板,避免因误操作导致硬件损坏。 其他说明:手册强调了开发板的安全使用规范,包括正确的插拔顺序、环境要求和维修政策。同时,提供了多种技术支持途径,如论坛、电话、邮箱等,方便用户在遇到问题时及时获得帮助。此外,手册还提醒用户定期关注官方渠道以获取最新的资料更新和技术支持。

2025-04-03

iTOP-RK3568开发板,详细介绍了如何使用OpenCV进行机器视觉开发

内容概要:该手册由北京迅为电子有限公司发布,针对其iTOP-RK3568开发板,详细介绍了如何使用OpenCV进行机器视觉开发。手册内容涵盖了OpenCV的基础概念、安装配置、图像的基本操作(如读取、写入、显示图像)、图像处理(如颜色转换、ROI区域处理、边界填充、阈值分割、图像绘制、几何变换)、滤波技术(线性与非线性滤波)、形态学滤波(膨胀、腐蚀、开闭运算、梯度、顶帽、黑帽)、边缘检测(Sobel、Scharr、Laplacian、Canny算子)等。此外,还提供了详细的实验步骤和代码示例,帮助用户理解和掌握OpenCV的各项功能。 适合人群:具备一定编程基础,尤其是对Linux系统有一定了解的研发人员,以及从事机器视觉、图像处理等相关领域的工程师和技术爱好者。 使用场景及目标:①适用于希望深入了解OpenCV库及其应用的开发者;②为从事机器视觉项目的研究人员提供理论和实践指导;③帮助用户掌握图像处理和计算机视觉的基本技能,如图像读取、处理、滤波、边缘检测等;④通过实际案例和实验,提升用户解决实际问题的能力。 其他说明:手册中还包含了关于iTOP-RK3568开发板的注意事项与售后维修信息,确保用户在使用过程中遇到问题时能够得到及时有效的支持。同时,手册强调了OpenCV的强大功能和广泛应用场景,鼓励用户探索更多可能性。

2025-04-03

【C语言编程】基于Minixml的XML文件解析与操作:跨平台简易XML处理库入门教程

内容概要:本文档主要介绍了mini_xml的源码下载、编译安装以及简单的使用示例。首先提供了从svn上获取minixml源码的方法,接着简述了编译安装步骤(./configure make make install),强调其跨平台特性,只需更换不同平台的工具链重新编译即可。最后给出了一段C语言代码示例,演示了如何读取并解析一个简单的XML文件,包括打开文件、加载XML树、查找特定元素及属性、打印结果和释放内存等操作。 适合人群:对XML解析有一定需求且具有C语言基础的新手开发者。 使用场景及目标:①需要在项目中集成简单高效的XML解析功能;②希望通过实例快速上手mini_xml库的使用。 其他说明:文档还提供了一个minixml的中文说明手册链接,方便开发者进一步深入了解mini_xml的相关知识。

2025-04-03

嵌入式系统中ITOP-3568开发板多模块驱动实验手册

内容概要:本文档是北京迅为电子有限公司为iTOP-3568开发板编写的模块实验手册,涵盖了从四线风扇驱动实验到SPI-Flash—W25Q64模块的16个实验。每个实验详细介绍了实验原理、硬件连接、原理图分析、实验平台、实验步骤及测试方法。手册旨在帮助用户熟悉并掌握开发板的各种外设驱动开发,包括但不限于风扇、串口、GPS、RFID、继电器、OLED屏幕、矩阵键盘、步进电机、称重模块、姿态传感器、温度传感器、全彩LED、温湿度传感器、舵机、超声波传感器及SPI-Flash等。此外,手册还提供了技术支持与开发定制信息,确保用户能够顺利解决问题并进行进一步的开发。 适用人群:具备一定嵌入式系统基础知识,尤其是Linux环境下ARM架构开发经验的研发人员和技术爱好者。 使用场景及目标:①为用户提供详细的硬件连接和驱动开发指导,帮助用户快速上手并完成外设驱动的开发;②通过实际案例演示,让用户深入了解各种传感器和执行器的工作原理及应用场景;③提供故障排除和技术支持信息,确保用户在开发过程中遇到问题时能够及时解决。 阅读建议:此手册不仅适用于初次接触嵌入式系统的开发者,也适合有一定经验的工程师参考。读者应在理解每个模块的基本原理基础上,结合具体的实验步骤进行实践操作,并充分利用提供的技术支持资源解决遇到的问题。

2025-04-03

T113-i显示屏和触摸屏驱动参考

T113_i显示屏和触摸屏驱动参考

2025-11-13

全志T113-i平台点亮MIPI屏后续

全志T113_i平台点亮MIPI屏后续

2025-11-12

全志T113-i平台点亮MIPI屏

MIPI屏 资料

2025-11-11

Linux C 高精度多定时器实现:基于 timerfd 与函数指针的灵活封装

Linux C 高精度多定时器实现:基于 timerfd 与函数指针的灵活封装

2025-10-16

Qt5 实现灵活可控的滚动字幕效果

Qt5 实现灵活可控的滚动字幕效果 源代码

2025-10-14

QT5绘图和数据可视化的CustomPlot C++组件 例子

QT5绘图和数据可视化的CustomPlot C++组件安装 例子 源码

2025-09-26

QT5绘图和数据可视化的CustomPlot C++组件安装及使用

QCustomPlot

2025-09-26

RK3568下QT实现视频播放器

RK3568下QT实现视频播放器

2025-09-16

RK3568下QT实现文件浏览器

RK3568下QT实现文件浏览器

2025-09-16

用 Enigma Virtual Box 将 Qt 程序打包成单 exe

Enigma Virtual Box

2025-08-15

RK3568下用 Qt Charts 实现曲线数据展示

RK3568下用 Qt Charts 实现曲线数据展示 源代码

2025-08-07

RK3568下使用Qt 绘制实现实时坐标曲线

RK3568下使用Qt 绘制实现实时坐标曲线源码

2025-08-05

RK3568下的进程间通信:UDP实现MASH网络

RK3568下的进程间通信:UDP实现MASH网络 源代码

2025-07-30

RK3568下的进程间广播通信:用C语言构建简单的中心服务器

源代码,server.c client.c

2025-07-29

Quectel-EM05-LTE-Standard-模块资料

Quectel_EM05_LTE_Standard_模块资料

2025-07-23

CAN 信号矩阵与 16 进制转换.html

CAN 信号矩阵与 16 进制转换.html

2025-07-04

在Linux环境中使用libxlsxwriter库生成Excel文件

libxlsxwriter-1.2.2.tar.gz + libxl-lin-4.5.1.tar.gz

2025-06-16

在Linux环境中使用libxlsxwriter库生成Excel文件

libxl-lin-4.5.1.tar.gz

2025-06-16

在Linux环境中使用libxlsxwriter库生成Excel文件

libxl-lin-4.5.1.tar.gz

2025-06-16

基于C语言的Linux系统信息采集代码

基于C语言的Linux系统信息采集代码

2025-06-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除