
嵌入式学习
文章平均质量分 81
gmmi
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
进程与线程
本文主要介绍了进程和线程的基本概念、区别及相关操作。进程是程序执行的动态过程,拥有独立的内存空间;线程是轻量级进程,共享进程资源但独享栈区。多线程适合高频任务,多进程则更安全稳定。文章详细讲解了进程创建、调度、通信(管道、消息队列、共享内存等)和同步机制(互斥锁、信号量),以及线程创建、属性和同步方法。同时对比了进程与线程在资源开销、通信机制、崩溃影响等方面的差异,并提供了相关函数接口和代码示例。最后总结了不同IPC方式的适用场景和选择建议。原创 2025-08-19 17:24:25 · 926 阅读 · 0 评论 -
进程间的通信
Linux系统提供了多种进程间通信(IPC)机制,包括管道、消息队列、共享内存、信号量、套接字和信号。管道适用于父子进程简单通信;消息队列支持结构化数据传输;共享内存效率最高但需同步;信号量用于资源访问控制;套接字支持网络通信;信号用于异步通知。选择时需考虑性能、数据结构和同步需求,如高频通信推荐共享内存+信号量组合,结构化数据宜用消息队列。使用中需注意同步问题、资源释放和错误处理。原创 2025-08-19 17:21:49 · 702 阅读 · 0 评论 -
进程与线程(线程)
本文摘要:线程是轻量级进程,共享进程的文本段、数据段和堆区,独享栈区(默认8M)。与进程相比,线程是CPU调度的最小单元,切换开销小但崩溃会影响整个进程。多线程适合CPU密集型任务,通过pthread系列函数管理,需注意线程同步(互斥锁、信号量)和死锁避免(加锁顺序一致)。线程通信通过共享全局变量实现,操作时需加锁保护。线程属性分"加入"(需手动回收)和"分离"(自动回收)两种。信号量可控制资源访问,初始化为非零值,sem_wait会阻塞直到资源可用。原创 2025-08-16 17:13:34 · 816 阅读 · 0 评论 -
进程与线程(完整版)
本文主要介绍了进程和线程的基本概念及区别。进程是程序动态执行的过程,拥有独立的虚拟内存空间,包括用户空间(代码区、数据区、堆栈)和内核空间。操作系统通过MMU实现虚拟地址到物理地址的映射,多进程调度采用时间片轮转等算法实现宏观并行。线程作为轻量级进程,共享进程的代码和数据段,但拥有独立栈区(默认8M)。相比进程,线程创建和切换开销更小,但需注意线程同步问题。文章详细介绍了进程/线程的创建、调度、回收等函数接口(如fork、exec、pthread_create等),并比较了多进程和多线程在资源开销、通信机制原创 2025-08-16 09:14:18 · 827 阅读 · 0 评论 -
进程和线程 (线程)
本文摘要:线程是轻量级进程,共享进程地址空间但独享栈区(默认8M),是CPU任务调度的最小单元。相比进程,线程创建/切换开销小但稳定性较低,崩溃会影响整个进程。多线程适合CPU密集型任务,通过共享内存通信;多进程则更安全隔离。关键函数包括pthread_create创建线程、pthread_join回收线程(兼具同步功能)。需注意线程共享数据需同步避免竞态,且必须显式回收防止僵尸线程。线程调度遵循宏观并行、微观串行原则。原创 2025-08-15 20:15:44 · 767 阅读 · 0 评论 -
Linux编程 进程与线程(进程)
本文摘要介绍了操作系统中的进程管理核心概念。主要内容包括:1)进程与程序的区别,进程空间分布(用户空间和内核空间);2)虚拟地址与物理地址转换机制;3)多进程存储与调度策略(时间片轮转等);4)关键进程函数(fork、exec等)及进程状态(孤儿/僵尸进程);5)进程回收方法(wait/waitpid)。重点阐述了父子进程关系、进程生命周期管理及避免僵尸进程的解决方案,同时说明了exec函数族在进程代码替换中的应用。原创 2025-08-15 16:20:41 · 1397 阅读 · 0 评论 -
Linux编程 IO(标准io,文件io,目录io)
C语言标准IO与文件IO操作指南 本文系统介绍了C语言中标准IO和文件IO的核心知识点。标准IO通过<stdio.h>提供带缓冲的高效文件操作,包括fopen/fclose等基本函数,以及fgetc/fputc、fgets/fputs等字符/字符串操作,还详细说明了fread/fwrite二进制读写和fseek/ftell等文件定位功能。同时提供了文件拷贝和字符统计的实用案例。文件IO部分阐述了无缓冲的系统级操作,包括open/close/read/write等系统调用,以及与标准IO的转换方法原创 2025-08-13 19:32:18 · 929 阅读 · 0 评论 -
文件IO(1)
摘要 本文介绍了文件IO的基本概念和系统调用机制。文件IO与标准IO的主要区别在于缓存机制和适用范围:文件IO无缓存,适合硬件设备操作;标准IO是库函数,具有缓存。系统调用是Linux内核特有功能,而库函数可跨平台使用,最终仍需调用系统调用。文章重点介绍了文件IO的函数接口,包括文件描述符的特性(非负整数、最小可用取值、数量上限)和三个特殊文件描述符(0:标准输入,1:标准输出,2:标准错误)。同时提及了文件打开/关闭操作,以及标准IO与文件IO的打开方式对比,最后简要说明了文件IO的写操作(write)功原创 2025-08-12 22:26:23 · 178 阅读 · 0 评论 -
嵌入式学习 标准IO(完整版)
C语言标准IO库提供了高效的文件操作函数,定义在<stdio.h>中。核心函数包括:fopen/fclose用于文件开关,支持多种打开模式;fgetc/fputc实现字符读写;fgets/fputs处理字符串;fscanf/fprintf进行格式化I/O;fread/fwrite用于二进制数据块操作;fseek/rewind/ftell控制文件指针位置。这些函数通过FILE结构体指针操作文件流,并具有缓冲机制,相比低级IO效率更高。标准IO是C语言文件处理的基础工具集。原创 2025-08-12 22:21:49 · 727 阅读 · 0 评论 -
标准io(1)
摘要:C语言标准I/O(stdio.h)提供高效文件操作功能,基于缓冲机制实现。核心内容包括:文件指针FILE*、缓冲类型(全/行/无缓冲)、文本/二进制流模式。主要函数包括:fopen/fclose(文件开闭)、fgetc/fputc(字符I/O)、fgets/fputs(行I/O)、fscanf/fprintf(格式化I/O)。错误处理通过ferror、feof和clearerr实现。标准I/O相比系统调用具有更高效率,适合处理结构化数据,使用时需注意缓冲特性和错误检查。原创 2025-08-11 21:10:53 · 398 阅读 · 0 评论 -
哈希表的操作 排序查找算法
本文介绍了哈希表、排序和查找算法的核心原理与实现。哈希表部分详细讲解了哈希算法、碰撞处理以及C语言实现的插入、遍历、查找和销毁操作。排序算法方面,重点分析了冒泡排序(O(n²)稳定)、选择排序(O(n²)不稳定)、插入排序(O(n)~O(n²)稳定)和希尔排序(基于插入排序改进,O(nlogn)~O(n²)),并提供了快速排序的分治实现(平均O(nlogn))。查找算法涵盖了折半查找(O(logn)需有序)和顺序查找(O(n)),包含完整代码示例和优化建议。全文通过具体代码展示了各算法的实现细节与性能特征。原创 2025-08-11 14:57:11 · 873 阅读 · 0 评论 -
数据结构 二叉树
本文系统介绍了二叉树的基本概念和操作。首先阐述了二叉树作为非线性数据结构的特点,包括节点类型(根节点、分支节点、叶子节点)、树的相关术语(前驱、后继、层数、高度、深度等)。重点讲解了完全二叉树的创建与遍历方法:深度优先遍历(前序、中序、后序)的递归实现,广度优先遍历(层序遍历)的队列实现,以及节点定义、树销毁等基本操作。此外还介绍了非完全二叉树的创建方法、获取树高度的递归算法,以及深度优先遍历的非递归实现技巧(使用栈结构)。文章通过代码示例详细展示了各种操作的实现过程,为理解和应用二叉树提供了全面指导。原创 2025-08-07 17:23:57 · 849 阅读 · 0 评论 -
数据结构 栈和队列
本文系统介绍了栈和队列这两种线性数据结构。栈遵循"先进后出"原则,分为顺序栈和链式栈,详细讲解了顺序栈的创建、销毁、压栈、出栈等操作实现。队列遵循"先进先出"原则,包含循环队列和链式队列两种实现方式,重点阐述了循环队列的判空、判满条件及入队、出队操作。此外,还介绍了基于内核链表实现的栈和队列,展示了如何利用链表特性实现这两种数据结构。文中提供了完整的C语言代码示例,包括类型定义、基本操作函数实现等关键内容。原创 2025-08-07 15:01:54 · 461 阅读 · 0 评论 -
嵌入式学习 双向链表 循坏链表 内核链表
本文介绍了三种常见的链表数据结构及其实现。双向链表支持双向遍历,每个节点包含前驱和后继指针,详细展示了C语言下的节点定义、创建、插入、删除和遍历操作。循环链表通过尾节点指向头节点形成环形结构,讨论了其实现方法和应用场景,如进程调度和约瑟夫问题。最后阐述了Linux内核链表的独特设计,其特点是将链表节点嵌入数据结构中,并详细解析了list.h中的核心操作宏定义和函数。三种链表各具特点:双向链表便于双向访问但内存开销大,循环链表适合环形数据处理,内核链表则实现了与数据结构的解耦,具有更高的通用性。原创 2025-08-05 20:02:56 · 539 阅读 · 0 评论 -
嵌入式学习 数据结构——02(含01)单向链表
本文系统介绍了数据结构与算法的核心概念,重点解析了链表结构及其操作。主要内容包括:1) 程序设计的本质是"数据结构+算法";2) 衡量代码效率的时间/空间复杂度分析方法;3) 数据结构的逻辑与存储分类;4) C语言链表实现细节,涵盖节点定义、创建、插入/删除、遍历等基础操作,以及查找中间/倒数节点、反转、排序等进阶操作。通过对比链表与数组的特性差异,阐述了链表在动态内存管理和插入删除效率方面的优势。文章提供了完整的代码示例,包括头插/尾插法、冒泡/选择排序等典型实现,是理解链表数据结构的原创 2025-08-04 21:10:27 · 1250 阅读 · 0 评论 -
嵌入式学习 数据结构
本文系统介绍了程序设计与数据结构的基础概念。核心内容包括:1)程序本质是数据结构与算法的结合,其中数据结构定义了数据存储方式,算法描述操作数据的方法;2)衡量代码质量的时空复杂度分析;3)数据结构的逻辑结构(线性/非线性)和存储结构(顺序/链式等);4)重点讲解链表实现,包括节点定义、创建、插入(头插/尾插)、删除、遍历等操作,并提供了C语言代码示例;5)对比链表与数组的特性差异,突出链表在动态内存和插入删除方面的优势。文章通过具体代码演示了单向链表的基本操作流程,为理解数据结构提供了实践指导。原创 2025-08-03 23:44:02 · 531 阅读 · 0 评论 -
嵌入式学习 c语言 共用体 枚举
本文对比了C语言中共用体(Union)和枚举(Enum)的特性。共用体通过共享内存空间节省内存,同一时间只能存储一个成员,适合处理多类型数据;枚举则定义一组整型常量,提升代码可读性。表格展示了二者的语法、内存占用、赋值方式等差异,并提供了代码示例。关键区别在于:共用体共享内存但需手动管理成员,枚举限定了可选值范围。共用体常用于硬件映射,枚举适用于状态码等场景。原创 2025-07-30 21:15:22 · 645 阅读 · 0 评论 -
嵌入式学习 c语言 构造数据类型 结构体
在C语言中,结构体(struct)用于将不同类型的数据组合成一个自定义数据类型。原创 2025-07-29 17:51:57 · 516 阅读 · 0 评论 -
嵌入式学习 c语言-指针
本文系统介绍了C语言指针的核心概念与应用。主要内容包括:指针基础(定义、运算符、声明初始化)、指针操作(变量修改、函数参数传递)、指针与数组关系(数组名即指针、指针运算)、const指针(常量指针与指向常量的指针)、特殊指针类型(函数指针、二级指针、void指针)以及指针数组与数组指针的区别。重点阐述了指针作为内存地址操作工具的核心特性,以及在不同场景下的使用方法和注意事项,为理解C语言内存管理和高效编程提供了完整框架。原创 2025-07-25 17:10:01 · 958 阅读 · 0 评论 -
嵌入式学习 c语言—预处理命令
本文总结了C语言中宏定义和头文件使用的关键知识点。宏定义分为不带参宏(如#define PI 3.14)和带参宏(如#define MAX(x,y)),后者类似函数但存在文本替换、无类型检查等特点。头文件包含标准库和自定义头文件,用于声明函数、宏、结构体等,并通过条件编译防止重复包含。条件编译指令包括#if、#ifdef等,常用于跨平台兼容和调试控制。工程结构中,.c文件实现功能,.h文件声明功能,main.c调用功能。需要注意宏与函数的区别、头文件规范使用和条件编译的正确应用。原创 2025-07-24 17:15:28 · 1214 阅读 · 0 评论 -
嵌入式学习 c语言_函数
定义一个函数的实现函数类型 函数名(数据类型1 形式参数1, 数据类型2 形式参数2, 数据类型3 形式参数3,...)函数体;return 返回值;函数体;return 0;函数类型:函数运行结果的类型 int void char double float函数名:与变量名要求保持一致形式参数:对数据操作的方式(函数定义时形参必须有类型)返回值:函数的运行结果变量类型作用域生存周期存储类别局部变量函数/块内函数/块执行期间auto静态局部变量函数/块内整个程序运行期间。原创 2025-07-23 17:08:20 · 965 阅读 · 0 评论 -
嵌入式学习 C语言-数组
本文介绍了C语言中数组的基本概念和使用方法,包括一维数组和多维数组的定义、初始化、访问方式及内存布局。文章详细说明了数组的声明格式、完全/部分初始化方法,以及通过下标访问和修改元素的操作。对于二维数组,解释了其表格结构特性及行优先存储原则。最后,文章还介绍了两种基础排序算法(冒泡排序和选择排序)的实现原理和代码示例,展示了如何通过这些算法对数组元素进行排序操作。原创 2025-07-21 17:50:02 · 529 阅读 · 0 评论 -
嵌入式学习 C语言学习-流程控制
循环是一种常用的循环结构,用于重复执行一段代码块,直到满足特定条件。是一个布尔表达式,如果为真(非零),循环体将继续执行;如果为假(零),循环终止。循环用于重复执行一段代码,直到指定的条件不再满足。C语言中的关系运算符用于比较两个值的大小或相等性,返回结果为。语句用于根据表达式的值选择执行不同的代码块。如果条件为真,代码块内的语句将被执行;如果匹配,则执行对应的代码块。语句用于基于条件执行代码块。循环先执行循环体,再检查条件。循环先检查条件,再执行循环体;以下是一个完整的示例,演示了。原创 2025-07-18 17:22:11 · 1010 阅读 · 0 评论 -
嵌入式学习 C语言-输入输出函数
本文摘要介绍了C语言中常用的输入输出函数。主要内容包括:1)字符输入输出函数putchar和getchar的使用;2)格式化输入输出函数printf和scanf的详细用法,包括各种格式说明符(%d、%f、%s等)、格式化选项(宽度、精度、对齐)和转义字符;3)字符串输入输出函数gets和puts的特点及其与scanf/printf的区别。文章通过具体代码示例展示了这些函数的基本用法和注意事项,如scanf需要地址传递、gets可以接收带空格的字符串等特性。原创 2025-07-17 18:11:01 · 576 阅读 · 0 评论 -
嵌入式学习 C语言学习-表达式、运算符
本文摘要: C语言表达式与运算符详解。表达式由运算符组成,具有值和类型。混合运算时遵循类型转换规则:低精度向高精度转换,char/short转int,float转double。运算符包括算术、赋值、逗号、sizeof等,各自具有特定功能和使用限制。运算符优先级决定运算顺序,最高为括号,最低为逗号。赋值运算符需注意类型匹配问题,不同类型赋值时会有精度调整。复合赋值运算符简化表达式写法。掌握这些规则对编写正确高效的C程序至关重要。原创 2025-07-16 18:31:26 · 916 阅读 · 0 评论 -
嵌入式学习 C语言-基础知识
分为基本数据类型(整数类型,浮点数类型,缺省类型,泊尔类型)和构造数据类型(结构体,共用体,枚举)两种。//基本数据类型:C语言中自带的类型 构造数据类型:用户自己定义的数据类型值域//计算机中数据的单位: bit 位 0 / 1 byte 字节 1byte == 8bitskb 1kb == 1024 bytes mb 1mb == 1024kb gb 1gb == 1024mb tb 1tb == 1024gb2.字符类型(char)在C语言中char类型标识单个字符,能够从键盘中输入的都是字符(小写原创 2025-07-15 19:33:08 · 838 阅读 · 0 评论 -
嵌入式学习 Linux基础
本文介绍了Linux系统的基本操作和C语言开发流程。主要内容包括:常用Linux命令(如ls、cd、mkdir等文件/目录操作)、Linux目录结构(以根目录/为基础)、以及C语言开发步骤(编写、编译、运行程序)。同时详细说明了gcc编译器的四个阶段:预处理、编译、汇编和链接。原创 2025-07-14 22:19:36 · 652 阅读 · 0 评论