Linux系统
文章平均质量分 93
Linux系统
YouEmbedded
愿能与同路的你交流互鉴~
博客园 :https://www.cnblogs.com/YouEmbedded/
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
解码服务器IO模型
服务器IO模型是处理多客户端请求的核心方案,主要分为非阻塞轮询和多任务并发两种模型。UDP服务器采用单一套接字处理所有客户端,而TCP服务器为每个连接创建独立套接字。非阻塞轮询通过fcntl()设置套接字非阻塞属性,避免阻塞并持续轮询检查数据,但会占用较多CPU资源。多任务模型则使用多线程,TCP服务器中主线程监听连接,为每个客户端创建子线程处理通信,通过互斥锁保护共享资源。两种模型各有优劣,需根据具体场景选择,非阻塞模型适合轻量级需求,多线程模型则能更好地支持高并发TCP连接。原创 2025-11-24 20:46:30 · 657 阅读 · 0 评论 -
解码TCP
TCP是传输层的核心协议,提供面向连接的可靠数据传输。其核心特性包括三次握手建立连接、四次挥手断开连接,以及通过序列号、确认应答、校验和、超时重传等机制保障可靠性。TCP报头包含源/目标端口号、序列号、控制位等关键字段,最小20字节。采用C/S架构,通过socket、connect等系统调用实现通信。TCP确保数据无丢失、无重复、按序到达,并支持流量控制和全双工通信,是互联网数据传输的基础协议。原创 2025-11-23 17:43:49 · 943 阅读 · 0 评论 -
解码UDP
摘要: UDP协议是传输层核心协议,提供无连接、不可靠的数据传输服务。其特点包括无需建立连接、不保证数据交付与顺序、报首仅8字节轻量高效,适合实时性要求高且容忍丢包的场景。UDP数据报最大长度为65507字节,但建议≤1472字节以避免IP分片。编程接口涉及socket()创建套接字、bind()绑定地址端口、sendto()发送数据,需注意字节序转换及错误处理。UDP适用于DNS、视频流等低延迟应用,但需应用层自行处理可靠性问题。原创 2025-11-22 20:45:08 · 827 阅读 · 0 评论 -
解码网络编程基础
本文系统讲解了进程间通信(IPC)和网络通信的核心概念。主要内容包括:1) 进程间通信方式如管道、信号等仅适用于同主机,跨主机通信需通过Socket套接字实现;2) IP地址作为主机唯一标识,分为IPv4和IPv6两类,介绍了IP分类、特殊地址及子网掩码的作用;3) 网络通信采用TCP/IP四层模型,包括物理层(传输介质)、数据链路层(帧传输)等核心内容。文中通过代码示例和图表详细说明了Socket创建、IP地址计算等关键实现方法,为理解网络通信原理提供了系统指导。原创 2025-11-21 22:10:32 · 1253 阅读 · 0 评论 -
解码线程池
摘要: 线程池通过预先创建并复用线程,减少频繁创建/销毁的开销,提升并发效率。其核心机制包括:1)任务队列管理待执行任务(函数+参数);2)线程池结构体统一管理线程生命周期;3)同步机制(互斥锁+条件变量)保证线程安全;4)动态调整线程数量。关键实现要点:线程循环执行任务时需处理同步、虚假唤醒和资源释放问题。线程池将任务执行与线程管理分离,开发者只需关注任务逻辑,无需处理底层线程调度。原创 2025-11-20 18:39:03 · 1186 阅读 · 0 评论 -
解码线程调度与信号响应
本文介绍了Linux线程调度策略的核心概念与实现方法。主要内容包括:线程作为最小调度单位,采用抢占式调度机制,高优先级线程可抢占低优先级线程;优先级分为静态优先级(0-99,系统任务可抢占)和动态优先级(通过nice值调整);三种调度策略(SCHED_OTHER默认分时调度、SCHED_FIFO实时先到先服务、SCHED_RR实时轮询)的特性与使用场景;以及相关API函数的使用示例,如设置线程属性、调度策略和优先级等。文章通过代码演示了如何创建SCHED_FIFO策略的高优先级线程。原创 2025-11-19 21:26:23 · 922 阅读 · 0 评论 -
解码死锁的产生与解决
死锁是多线程编程中的常见问题,指多个线程因互相等待对方资源而陷入无限阻塞状态。其产生需同时满足四个必要条件:资源互斥、请求且保持、不可剥夺和循环等待。预防死锁的主要策略包括破坏这些条件,如一次性申请所有资源(破坏请求且保持)、资源抢占(破坏不可剥夺)和资源有序分配(破坏循环等待)。此外,还可通过运行时动态检测和事后处理解决死锁。实际编程中,统一加锁顺序是最常用的预防方法。代码示例展示了因加锁顺序不一致导致的死锁及其修正方案。原创 2025-11-18 18:20:51 · 1213 阅读 · 0 评论 -
解码线程同步与互斥
线程并发执行时会出现资源争抢问题,需通过同步和互斥机制解决。互斥锁是实现互斥的核心机制,包括初始化、上锁(阻塞/非阻塞/带超时)、解锁和销毁等操作。关键函数如pthread_mutex_init()、pthread_mutex_lock()和pthread_mutex_unlock(),使用时需注意:避免重复加锁造成死锁,确保释放已获取的锁,并通过临界区保护共享资源。示例展示了主线程和子线程如何通过互斥锁安全访问全局变量,以及带超时的锁获取方法,防止线程永久阻塞。原创 2025-11-17 17:44:08 · 1095 阅读 · 0 评论 -
解码线程编程
本文介绍了线程的基本概念及其在Linux系统中的创建方法。线程作为进程内执行单元,共享进程资源但拥有独立执行流。文章通过触摸屏坐标获取实例,演示了pthread_create()函数的使用:主线程打开设备文件,创建子线程持续读取触摸事件并转换坐标。关键点包括线程函数原型、参数传递注意事项、资源同步机制(全局变量)以及错误处理。代码展示了如何实现硬件坐标到屏幕坐标的转换,并强调线程安全性和边界检查的重要性。最后指出编译时需链接pthread库(-lpthread),为后续线程管理技术奠定基础。原创 2025-11-16 20:31:34 · 757 阅读 · 0 评论 -
解码IPC-消息队列、共享内存与信号量集
System-V IPC 是 Linux 进程间通信标准,含消息队列、共享内存、信号量集三类持久性资源,通过键值(key)标识,需手动创建 / 删除。共性:依赖 ftok () 生成唯一键值,可通过 ipcs/ipcmk/ipcrm 命令管理,资源常驻内存需手动清理。特性:消息队列按类型传数据,自带阻塞;共享内存效率最高,需信号量互斥;信号量集负责进程同步,靠 P/V 原子操作。适用场景:按类型传数据用消息队列,高效共享数据用共享内存 + 信号量,协调临界资源访问用信号量集。原创 2025-11-15 18:49:07 · 1056 阅读 · 0 评论 -
解码IPC-管道与信号
摘要: 进程间通信(IPC)是进程间数据交换的重要方式,本文重点解析管道和信号两种基础通信机制。管道分为匿名管道和命名管道:匿名管道通过pipe()创建,适用于亲缘进程通信,数据单向流动且读写端需明确分工;命名管道通过mkfifo()创建文件节点,支持无亲缘关系进程通过文件路径访问,具备多路写入能力。两者均遵循先进先出规则,但命名管道突破了亲缘限制,扩展了应用场景。文章通过代码示例演示了父子进程匿名管道通信及跨进程命名管道的实现方法,并分析了缓冲区大小测试等关键技术细节。原创 2025-11-14 20:17:12 · 998 阅读 · 0 评论 -
解码程序与进程
本文梳理了程序与进程的核心概念及编译执行过程。程序是静态指令集合,进程是其动态执行实例。程序需经过预处理、编译、汇编、链接四阶段生成ELF格式可执行文件。进程由PCB、代码段和数据段组成,具有五种基本状态并相互转换。Linux通过fork()创建进程,构建进程树结构,由systemd作为根进程管理所有进程。文中详细介绍了GCC编译流程、ELF文件结构、进程特征与状态转换等关键知识,并提供了相关工具命令和系统调用接口。原创 2025-11-13 19:32:21 · 905 阅读 · 0 评论 -
解码Linux文件IO之中文字库原理与应用
本文介绍了嵌入式系统中汉字显示的核心技术,重点解析了GB2312字符集的编码原理和实现方法。主要内容包括:1)GB2312字符集的分区规则,将7445个字符按区位划分;2)汉字双字节编码机制,通过区码和位码定位字符;3)点阵字库的生成与使用,包括16×16、24×24等常见分辨率;4)TrueType矢量字库的特点及移植方法。文章还提供了GB2312编码验证代码和字库位置计算公式,帮助开发者在嵌入式设备中实现中文显示功能。原创 2025-10-26 15:00:41 · 1244 阅读 · 0 评论 -
解码Linux文件IO之开机动画原理与实现
开机动画原理与实现 摘要:本文介绍了开机动画的核心原理及实现方法。开机动画利用人眼视觉暂留效应(0.1-0.4秒),通过连续播放静态图像(帧)产生动态效果。关键参数是帧率(FPS),24FPS为最低流畅要求,开机动画常用50FPS(每帧20ms)。实现步骤包括:1)使用工具将GIF/视频拆分为JPEG帧序列;2)编写程序通过LCD显存映射和JPEG解码显示动画帧;3)控制帧间隔保证流畅播放。开发时需注意帧顺序、分辨率匹配和存储空间限制,确保动画在嵌入式设备上稳定运行。原创 2025-10-25 17:37:41 · 1218 阅读 · 0 评论 -
解码Linux文件IO之JPEG图像原理与应用
摘要 JPEG是一种广泛应用于图像压缩的标准和文件格式,具有高压缩比优势,特别适合照片类图像存储和传输。其核心编解码库libjpeg采用C语言实现,跨平台且开源,是许多图像处理工具的底层依赖。在Linux环境下移植libjpeg需经过下载源码、解压、配置编译参数、编译和安装五个步骤,生成动态库和静态库文件。JPEG解码是将压缩数据转换为RGB像素的关键过程,通过创建解码对象、绑定文件、读取文件头等8个步骤实现,最终输出可用于LCD显示的RGB数据。解码过程需注意错误处理和资源释放,确保程序稳定性。原创 2025-10-24 21:35:05 · 1303 阅读 · 0 评论 -
解码Linux文件IO之库的制作与应用
程序从源代码到可执行文件需经历预处理、编译、汇编和链接四个阶段,最终生成ELF格式的可执行文件。预处理展开宏定义和头文件,编译将C代码转为汇编代码,汇编生成机器码目标文件(.o),链接合并多个目标文件和库文件并重定位地址。ELF文件包含.text(代码)、.data(已初始化数据)、.bss(未初始化数据)等关键段。 静态库(.a)是多个.o文件的归档集合,通过ar命令制作。程序链接静态库时会将库代码完整复制到可执行文件中,使程序不依赖外部库。静态库使用需提供头文件声明接口,链接时需指定库路径和名称。原创 2025-10-23 21:13:39 · 1123 阅读 · 0 评论 -
解码Linux文件IO之触摸屏原理及应用
Linux触摸屏输入子系统解析 本文详细介绍了Linux输入子系统对触摸屏的管理机制。系统采用三层架构:设备驱动层直接操作硬件并转换原始数据;核心层提供标准化接口实现上下层解耦;事件层通过/dev/input/eventX设备文件向应用提供统一访问接口。关键结构体input_event封装了所有输入事件,触摸屏操作通过EV_ABS(坐标)、EV_KEY(按压)和EV_SYN(同步)事件组合实现。文章还提供了设备文件识别方法和触摸屏检测代码示例,完整呈现了从硬件操作到应用层事件的转换流程。原创 2025-10-21 17:33:29 · 1362 阅读 · 0 评论 -
解码Linux文件IO之BMP 图像原理与应用
BMP(位图)是微软开发的图像文件格式,采用无压缩存储方式,文件较大但解析简单,适合本地开发。其结构由文件头(14字节)、信息头(40字节)、可选调色板和像素数据组成,总头部长54字节。关键特性包括:支持多种色深(1/4/8/24/32bit),24bit最常见;像素数据采用BGR顺序;行数据需4字节对齐;默认从下到上存储图像。BMP与JPEG、PNG等格式相比,优势在于无压缩、解码简单,但文件体积较大,适用于LCD显示等本地场景。开发时需注意小端存储、行对齐和像素格式转换等技术细节。原创 2025-10-20 21:28:37 · 1301 阅读 · 0 评论 -
解码Linux文件IO之LCD屏原理及应用
LCD 基本原理与驱动架构 LCD(液晶显示器)通过液晶分子的电光效应控制光线透射实现显示,其核心结构包括TFT基板、彩色滤光片和偏光片。全彩显示通过RGB三原色混合完成。关键参数包括像素(最小显示单元)、分辨率(像素总数)和色深(颜色数量)。在Linux系统中,LCD由Framebuffer驱动管理,通过设备文件/dev/fb0访问。驱动使用三个核心结构体(固定参数、可变参数、颜色位域)描述硬件特性,并通过ioctl系统调用实现参数配置。应用程序通过读写映射的内存空间即可控制屏幕显示,无需直接操作硬件。原创 2025-10-19 16:06:24 · 1490 阅读 · 0 评论 -
ARM开发板基础与文件传输
本文介绍了GEC6818 ARM开发板的使用方法,包括硬件连接、系统启动、文件传输和存储扩容。开发板搭载Cortex-A53处理器,支持Linux/Android系统。通过串口连接SecureCRT可进行调试,文件传输支持串口、TFTP网络和U盘三种方式。针对存储空间不足的问题,详细说明了如何挂载未使用的6G分区并设置开机自启。此外,由于ARM架构无法本地编译程序,需在电脑上使用交叉编译器进行交叉编译。原创 2025-10-17 21:11:48 · 1153 阅读 · 0 评论 -
解码Linux文件IO目录检索与文件属性
目录检索与文件系统基础摘要 Linux系统中目录是特殊文件,存储文件名与inode编号的映射关系而非文件内容。所有文件以根目录/为顶点构成树状结构。磁盘分为inode区(存储文件属性)和数据区(存储文件内容)。核心目录操作包括:mkdir创建目录、rmdir删除空目录、opendir打开目录流、readdir读取目录项(包含文件名和inode号)、closedir关闭目录流、chdir切换工作目录。理解目录索引机制和inode结构是高效访问文件系统的关键。原创 2025-10-16 21:00:07 · 1487 阅读 · 0 评论 -
解码Linux文件IO之标准IO
标准IO基础:C语言标准库提供遵循POSIX标准的IO函数(如fopen、fread),通过FILE结构体管理文件,包含文件描述符、缓冲区指针等。程序启动时自动打开3个标准流(stdin/stdout/stderr)。主要函数包括:fopen打开文件(支持文本/二进制模式),fgets安全读取行,fread高效读取块数据,fputc写入字符等。二进制模式直接处理原始字节,文本模式会转换换行符(Windows)。注意缓冲区管理和错误检查,避免安全问题(如避免使用已废弃的gets)。原创 2025-10-14 19:38:13 · 1218 阅读 · 0 评论 -
解码Linux文件IO之系统IO
摘要: Linux系统IO与标准IO对比:系统IO直接调用内核接口,无缓冲区,适用于实时操作;标准IO通过缓冲区减少系统调用,效率更高但仅支持普通文件。文件描述符(fd)是进程访问文件的唯一标识,本质是数组下标。核心系统IO函数包括open(打开/创建文件)、close(关闭文件)和read(读取数据)。open需指定访问模式和可选标志;close释放资源,多次关闭同一fd会失败;read可能返回少于请求的字节数。进程默认打开0-2三个fd(标准输入/输出/错误)。原创 2025-10-13 21:19:34 · 1116 阅读 · 0 评论 -
解码Linux文件IO基础
Linux系统中,文件是一个核心概念,具有狭义和广义两层含义:狭义指普通文本或二进制文件,广义则涵盖设备、接口等抽象概念。系统启动依赖于根文件系统,提供目录结构和服务支持。Linux文件类型多样,包括常规文件、设备文件、目录等。文件操作分为系统IO(底层无缓冲)和标准IO(高效有缓冲),前者适用于特定场景如设备访问,后者更常用于开发。两者均为基本技能,需根据场景选择。原创 2025-09-23 11:18:30 · 408 阅读 · 0 评论 -
解码Linux基础命令
Linux基础命令摘要 本文介绍了Linux命令的基本结构、用户权限(root与普通用户)及帮助查询方法(--help与man)。关键内容包括: 命令格式:命令 [选项] [参数],选项分短格式(-开头)与长格式(--开头); 用户权限:root用户(#提示符)拥有系统最高权限,普通用户($提示符)权限受限; 帮助查询:命令 --help显示快速帮助,man 命令提供详细手册; 常用命令:ls查看目录,sudo临时提权,su切换用户身份。 注意:慎用sudo与su,避免误操作导致系统损坏。原创 2025-10-09 19:31:01 · 807 阅读 · 0 评论 -
解码Linux环境搭建
Linux 基础环境搭建指南 本文详细介绍了Linux系统在嵌入式开发中的核心地位,对比了Linux与Windows在嵌入式应用中的优劣。重点推荐Ubuntu 22.04 LTS作为开发环境,并提供了完整的虚拟机安装教程(包括VMware配置、Ubuntu安装步骤等)。最后还介绍了如何修改软件源以提升下载速度。文章内容实用性强,图文并茂,适合嵌入式开发初学者快速搭建Linux开发环境。关键点包括:Linux在嵌入式领域的优势、Ubuntu版本选择、虚拟机配置技巧以及国内源设置方法。原创 2025-10-08 20:01:58 · 1213 阅读 · 0 评论 -
解码计算机的组成
计算机系统由硬件和软件两大部分组成。硬件包括CPU、存储器及输入输出设备,其中CPU负责运算处理,存储器用于存储程序和数据。软件分为系统软件(如操作系统)和应用软件(用户程序),两者依赖硬件运行。文件系统是存储数据的标准格式(如FAT32、NTFS),决定了数据如何存储和访问。操作系统通过文件系统访问磁盘文件,并控制硬件执行用户程序。硬件与软件相互配合,使计算机能够正常工作。原创 2025-09-23 10:39:01 · 511 阅读 · 0 评论
分享