自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(410)
  • 收藏
  • 关注

原创 鸿蒙中断机制:如何掌控CPU?

本文系统性地介绍了操作系统中断机制的核心概念,包括中断源、中断控制器和CPU的协同工作,以及中断处理流程中的关键环节。通过生动的"海公公"比喻,阐释了中断控制器作为CPU与外设之间仲裁者的重要作用。文章详细讲解了中断的硬件架构、中断源分类(外部/内部)、中断类型(PPI/SGI/SPI)以及中断处理过程中的优先级管理、中断请求触发机制等核心概念。最后提及中断向量表作为中断服务程序入口地址的存储区,为后续深入分析鸿蒙内核中断管理实现机制奠定了基础。全文采用类比手法,将复杂的中断机制形象化,

2025-07-13 20:31:01 668

原创 揭秘鸿蒙内核:任务切换的奥秘

鸿蒙任务切换机制解析 本文详细阐述了鸿蒙系统任务切换的实现原理,主要分为两种场景: 软切换:主动任务调度,包括资源申请失败、时间片用完等情况 硬切换:中断触发切换,如外设输入等硬件中断 关键实现要点: 通过TaskContext结构体保存17个寄存器状态(R0-R15、CPSR) 任务初始化时通过OsTaskStackInit设置默认上下文 用户任务还需通过OsUserTaskStackInit初始化用户栈 栈指针保存在任务控制块LosTaskCB中,切换时作为恢复起点 该机制确保了任务切换时的寄存器状态完

2025-07-13 19:12:33 920

原创 揭秘鸿蒙内核:汇编真的很可爱

鸿蒙内核汇编解析 本文分析了鸿蒙操作系统的关键汇编代码,重点介绍了用户空间与内核空间数据拷贝机制以及系统启动流程。 用户空间数据拷贝(hw_user_get.S) 实现用户空间到内核空间的安全数据拷贝 通过汇编指令完成不同长度数据的精确传输 包含错误处理机制,确保数据可靠性 系统启动代码 分为多核(reset_vector_mp.S)和单核(reset_vector_up.S)两种版本 单核启动流程包含: 早期CPU设置(关闭缓存和MMU) 物理地址与虚拟地址偏移计算 镜像重定位处理 采用对称多处理(SMP

2025-07-12 21:21:46 573

原创 ARM异常接管:CPSR与SPSR的奥秘

本文介绍了ARM处理器的异常接管机制,通过类比监护人与小孩的关系,阐释了应用程序与内核权限的差异。ARM处理器有7种工作模式(用户模式加6种特权模式),每种模式都有独立栈空间和寄存器组。当系统异常发生时,特权模式会接管处理,通过保存现场、分析栈帧回溯调用关系来定位问题。文章详细解析了6种异常模式的实现代码,包括地址异常、快中断等处理流程,并说明如何通过LR、FP等寄存器实现栈回溯功能,帮助开发者快速定位异常原因。

2025-07-12 20:21:54 608

原创 鸿蒙内核源码分析揭秘ARM寄存器的神秘面纱

本文介绍了ARM架构中寄存器的本质和工作原理,重点分析了32位ARM7处理器的37个核心寄存器及其功能。文章首先指出寄存器本质上是一个32位的存储空间,但其高频率使用使其成为处理器运行的关键。随后详细分类说明了31个通用寄存器(包括用户/系统模式共用的R0-R7和模式专属的Banked寄存器)以及6个状态寄存器(CPSR和SPSR)。 文中还简要介绍了ARM的七种工作模式(用户模式、快中断模式、普通中断模式、管理模式、终止模式、系统模式和未定义模式),并特别强调了R0-R7寄存器的重要性,尤其是R0在参数传

2025-07-12 19:02:25 1270

原创 鸿蒙系统调用全解析:七段代码直达内核

鸿蒙系统调用全流程解析:从用户态到内核态的七段代码追踪 本文通过一张流程图和七段代码详细剖析了鸿蒙操作系统从用户态到内核态的系统调用全过程。关键环节包括: 应用程序通过mq_open发起系统调用 库函数将调用号存入R7寄存器,参数存入R0-R3 SVC指令触发模式切换至内核态 汇编处理程序_osExceptSwiHdl保存用户现场 内核根据调用号执行注册函数SysMqOpen 处理完成后恢复用户现场并返回结果 整个过程涉及用户态与内核态的栈切换、寄存器保存与恢复等关键机制,展现了鸿蒙系统调用的底层实现原理。

2025-07-11 20:35:52 563

原创 鸿蒙内核源码分析(工作模式篇) |揭秘CPU七种工作模式之谜

CPU工作模式解析:鸿蒙内核中的特权与异常处理 摘要:本文深入剖析了CPU的七种工作模式(用户模式、快速中断、普通中断、管理、终止、系统和未定义模式),揭示了鸿蒙内核如何通过特权等级和异常处理机制构建安全稳定的系统环境。重点分析了三种核心技术实现: 栈空间分配方案:每种模式独立分配栈空间(如管理模式8K),并支持多核扩展; 异常入口机制:遵循ARM架构的固定入口地址表,建立从开机代码到各类异常处理的跳转路径; 模式切换原理:通过软中断/硬件异常触发特权模式切换,保存现场状态实现安全过渡。文章通过解读鸿蒙源码

2025-07-11 17:59:40 499

原创 鸿蒙时间管理:Tick与Cycle的奥秘

本文介绍了鸿蒙内核的时间管理机制,系统以Tick为基本时间单位,通过g_sysClock系统时钟提供服务。核心内容包括: 时间单位转换 用户使用秒/毫秒计时 系统以Tick为单位,默认每秒100Tick(10ms/Tick) 提供LOS_MS2Tick/LOS_Tick2MS进行毫秒-Tick转换 时钟层级 时钟周期(Cycle):硬件晶振决定的最小计时单位 Tick周期:操作系统基本时间单位,用户可配置 指令周期:执行指令所需时间 关键实现 OsTickHandler作为tick中断处理函数,触发任务调度

2025-07-11 16:36:43 645

原创 鸿蒙原子操作揭秘:LDREX与STREX指令核心解析

本文介绍了鸿蒙系统基于ARMv6架构LDREX和STREX指令实现的原子操作机制。通过汇编指令确保对共享内存的"读取-修改-写入"操作具有原子性,防止多任务访问导致的数据不一致问题。文章详细解析了LOS_AtomicAdd和LOS_AtomicSub等关键函数的实现原理,包括C语言内嵌汇编代码的运作过程,以及volatile关键字在保证内存访问一致性中的作用。这些原子操作接口为鸿蒙系统提供了可靠的多任务同步基础,是自旋锁等同步机制的核心实现。

2025-07-11 15:51:17 556

原创 鸿蒙消息队列全解析:深度剖析架构设计

本文介绍了鸿蒙系统中的消息队列机制。消息队列是一种用于任务间通信的重要数据结构,支持异步消息传递和缓冲功能。鸿蒙的消息队列具有先进先出特性,支持读写超时机制,允许不同长度的消息传输。系统通过消息队列池管理所有队列,默认支持1024个队列。文章详细解读了队列控制块的结构设计,包括队列长度、消息大小、读写指针等核心字段。同时分析了队列的初始化流程和创建过程,展示了鸿蒙如何高效管理队列资源。消息队列机制实现了任务间解耦通信,是鸿蒙系统实现任务协同的关键技术之一。

2025-07-11 14:41:35 406

原创 鸿蒙开发:揭秘CPU与内核核心机制

本文包含两部分内容:鸿蒙开发系列文章推荐和内核技术要点解析。 鸿蒙开发系列文章探讨了移动开发行业前景、鸿蒙应用与系统开发比较、嵌入式开发转型、大前端开发者转鸿蒙等问题,并提供了鸿蒙全栈学习笔记。 内核技术解析重点讲述了: 任务(线程)是CPU执行指令的基本单位,内核通过任务调度管理CPU资源 多线程的实现机制,包括main函数和新线程的入口处理 定时器是通过高优先级系统任务实现的 Percpu结构体详细解析,包括任务排序链表、定时器相关变量等核心概念 任务等待机制和排序链表的工作原理

2025-07-11 13:41:33 811

原创 鸿蒙定时器:从内核到应用全解析

本文剖析了鸿蒙系统软件定时器的核心机制,包括其基于Tick时钟中断的运作原理、定时器控制块结构、分类管理方式及初始化过程。软件定时器通过系统队列和最高优先级任务实现精确触发,支持单次、周期和手动删除三种模式。系统采用池化管理方式,预分配1024个定时器控制块和回调函数内存空间,并通过空闲链表进行资源分配。多核环境下定时器按CPU核独立管理,确保高效稳定的定时任务执行。

2025-07-10 20:51:46 1055

原创 鸿蒙事件机制:任务同步全解析

鸿蒙事件机制解析 事件是鸿蒙系统中任务间通信的核心机制,主要用于任务同步。其特点包括: 通过32位无符号整型记录31种事件类型(第25位保留) 支持一对多和多对多的同步模型 提供三种事件读取模式(AND、OR、CLR) 关键结构体EVENT_CB_S包含: uwEventID:记录发生的事件类型 stEventList:挂载等待该事件的任务链表 核心流程: 生产者任务通过LOS_EventWrite触发事件 消费者任务通过LOS_EventRead消费事件 事件控制块作为中间媒介,记录事件状态和等待任务 典

2025-07-10 17:49:34 587

原创 鸿蒙内核源码分析(信号量篇)

测试任务Example_TaskEntry创建一个信号量,锁任务调度,创建两个任务Example_SemTask1、Example_SemTask2,Example_SemTask2优先级高于Example_SemTask1,两个任务中申请同一信号量,解锁任务调度后两任务阻塞,测试任务Example_TaskEntry释放信号量。Example_SemTask2得到信号量,被调度,然后任务休眠20Tick,Example_SemTask2延迟,Example_SemTask1被唤醒。

2025-07-10 17:03:05 451

原创 鸿蒙进程间九种通讯方式揭秘

本文探讨了鸿蒙内核中进程间通信(IPC)的必要性及九种实现方式。进程间通讯是系统协调共享资源、传递数据和同步操作的关键机制,涉及数据传输、共享数据、事件通知、资源共享和进程控制等需求。鸿蒙提供了丰富的IPC方案,包括管道、信号、消息队列、共享内存、信号量、互斥锁、快锁、事件和信号量集等,每种方式适用于不同场景,如数据传输、资源同步或任务控制。这些机制确保了多进程环境下高效、安全的协作,为鸿蒙系统的稳定运行提供了基础支撑。

2025-07-10 15:35:34 748

原创 鸿蒙互斥锁:内核多任务同步利器

鸿蒙内核互斥锁机制解析 本文深入剖析了鸿蒙内核中的互斥锁实现机制。互斥锁主要用于解决线程间共享内存竞争问题,与自旋锁形成互补。鸿蒙默认采用递归锁设计,允许同一线程多次加锁。文章详细解读了互斥锁的数据结构、初始化流程和三种申请模式(无阻塞、永久阻塞、定时阻塞),并重点分析了核心函数OsMuxPendOp的实现逻辑。当高优先级任务等待低优先级任务释放锁时,系统会临时提升低优先级任务的优先级,确保锁能及时释放。互斥锁还支持优先级继承和优先级天花板等协议,有效解决优先级反转问题。

2025-07-10 14:48:53 684

原创 鸿蒙自旋锁:CPU的贞节牌坊

鸿蒙自旋锁机制解析 自旋锁是鸿蒙系统中用于多CPU核环境下资源互斥访问的关键机制。与互斥锁不同,自旋锁不会引起调用者阻塞,而是通过循环等待的方式获取锁。在鸿蒙实现中,自旋锁主要通过三个汇编函数实现核心功能: ArchSpinLock:采用"死守"策略,通过WFENE指令让CPU进入睡眠状态,当锁被释放时被唤醒继续尝试获取锁。 ArchSpinTrylock:尝试获取锁,若失败则立即返回,不会进入等待状态。 ArchSpinUnlock:释放锁时使用SEV指令广播事件,唤醒等待中的CPU核

2025-07-10 13:55:08 784

原创 鸿蒙多核调度全解析:并发与并行奥秘

本文深入解析了并发、并行与协程的核心概念及其区别。通过高速车道比喻形象说明并发(单核微观串行宏观并行)与并行(多核真正同时运行)的差异,并指出协程是应用层的线程封装。文章详细介绍了鸿蒙内核如何描述CPU(Percpu结构体)及多核支持机制(SMP模式),包括任务调度链表、定时器处理等关键实现。最后通过los_mp.c源码展示了鸿蒙多CPU核的调度信号发送、中断处理等具体操作,为理解操作系统底层调度原理提供了清晰的技术视角。

2025-07-09 20:38:38 748

原创 鸿蒙进程管理:内核源码深度解析

本文深度剖析了鸿蒙内核的进程管理机制,揭示了进程控制块(ProcessCB)的核心数据结构。进程作为资源管理单元,负责协调内存、任务、文件等系统资源。鸿蒙系统采用32级优先级(10-31为用户可配置)、抢占式调度和时间片轮转机制,支持高效的进程切换与通信。ProcessCB结构体详细定义了进程名称、ID、状态、优先级等关键属性,以及进程间的关系链表(父子、兄弟进程)、线程管理、信号处理和虚拟内存空间等核心功能模块。特别值得注意的是,鸿蒙通过精细的位图设计实现了进程状态与线程数量的联合表

2025-07-09 17:39:59 1183

原创 鸿蒙开发:汇编中复杂参数传递机制分析

本文通过一段C语言代码及其对应ARM汇编,详细解析了汇编语言中传递复杂参数(如结构体)的实现机制。当函数参数超出寄存器数量时,系统采用栈空间与寄存器相结合的方式传递参数,具体表现为: 栈空间分配:main函数分配800字节栈空间,其中部分用于存储待传递的大型结构体参数 参数拷贝:通过memcpy将大部分结构体内容(388字节)拷贝到栈中特定位置 寄存器传递:剩余4个参数值通过r0-r3四个寄存器传递 参数访问:被调函数framePoint通过栈指针和帧指针访问这些参数 这个过程展

2025-07-09 16:37:52 704

原创 鸿蒙汇编揭秘:从C代码到汇编的魔法之旅

本文通过拆解一个简单C程序的汇编代码,帮助读者理解鸿蒙内核汇编语言的基本原理。文章首先强调汇编语言的本质是数据搬运,主要发生在内存和寄存器之间。然后以square、fp和main三个函数为例,详细分析其对应的汇编指令执行过程,包括栈空间分配、参数传递、函数调用和循环控制等核心概念。通过对比C代码和汇编代码,展示了高级语言到机器指令的转换过程,为后续理解鸿蒙系统的6个核心汇编文件打下基础。文章指出,虽然代码较长,但只要掌握寄存器操作和流程控制,就能读懂鸿蒙内核的汇编实现。

2025-07-09 15:35:11 830

原创 鸿蒙内核任务揭秘:五脏六腑全解剖

鸿蒙内核任务(Task)结构深度解析 鸿蒙内核中线程(Thread)与任务(Task)概念等价,任务结构体LosTaskCB包含丰富的控制信息: 核心字段:栈指针、状态标志、优先级(0-31)、调度策略、时间片、任务ID和入口函数 同步机制:支持信号量、互斥锁、事件等待等多种同步方式 多核优化:包含CPU亲和性掩码(支持16核)、上次运行核记录等SMP相关字段 扩展功能:信号处理、死锁检测、调度统计等可配置模块 内存管理:区分内核态与用户态栈空间,记录栈顶和栈底位置 任务作为鸿蒙调度的基本单位,通过双向链表

2025-07-09 14:37:58 588

原创 鸿蒙内核汇编揭秘:栈与函数的奥秘

本文通过一个简单C程序编译后的ARM汇编代码,详细解析了函数调用、栈帧管理和参数传递机制。文章揭示了递减满栈的工作原理,展示了函数调用时如何保存寄存器、分配栈空间以及参数传递过程。通过分析square、fp和main三个函数的汇编实现,文章帮助读者理解系统底层运作机制,包括栈指针操作、寄存器使用规范(如R0作为返回值寄存器)以及分支跳转逻辑。这些知识为后续学习鸿蒙内核的6个关键汇编文件打下基础,有助于理解系统调用、任务切换、中断处理等核心机制。

2025-07-09 13:34:25 889

原创 鸿蒙物理内存初始化全解析

鸿蒙内核采用段页式物理内存管理机制,核心结构包括: VmPhysSeg:物理段描述符,管理内存段信息 包含段起始地址、大小、页框数组 使用伙伴算法(freeList)和LRU页面置换算法(lruList) 支持最多32个内存段 VmPage:物理页框描述符 记录页框物理地址、引用计数、所属段ID等 通过双向链表管理页框 引用计数机制类似Java内存回收 初始化过程: 首先配置物理内存区域(默认1个段) 计算总页数并申请页描述符数组 将段划分为4K页框 初始化各页框物理地址和属性 建

2025-07-08 20:42:05 643

原创 鸿蒙内核源码分析(内存规则篇) | 内存管理到底在管什么

那就是个奴才们能把主子给活活踩死, 想想主奴不分,吃喝拉撒睡都在一起,称兄道弟的想干啥? 没规矩不成方圆嘛,这事业肯定搞不大,单片机时代就是这种情况. 裸机编程,指针可以随便乱飞,数据可以随意覆盖,没有划定边界,没有明确职责,没有特权指令,没有地址保护,你还想像java开发一样,只管new内存,不去释放,应用可以随便崩但系统跑的妥妥的?想的美! 直接系统死机,甚至开机都开不了,主板直接报废了. 所以不能运行很复杂的程序,尽量可控,而且更是不可能支持应用的动态加载运行. 队伍大了就不好带了,方法得换, 游击队

2025-07-08 17:43:02 820

原创 鸿蒙MMU揭秘:虚拟地址如何变戏法?

本文详细介绍了鸿蒙内核中的MMU(内存管理单元)机制,重点解析了其两级页表(L1和L2)的虚实地址转换原理。文章指出: 虚拟地址(VA)与物理地址(PA)的转换通过MMU实现,MMU采用页表机制,其中低12位为页内偏移保持不变。 L1页表将4G地址空间划分为4096个1M的节,提供三种页表项格式:无效项、指向L2页表的项和直接映射1M节的项。 L2页表将1M空间细分为256个4K小页,同样具有三种页表项格式,鸿蒙目前暂不支持64K大页。

2025-07-08 16:53:46 939

原创 鸿蒙内核源码分析(内存汇编篇) | 谁是虚拟内存实现的基础

本文主要介绍了ARM处理器中CP15协处理器的关键寄存器及其在鸿蒙系统中的应用。重点分析了C7、C2和C13三个寄存器的作用: C7寄存器:控制高速缓存和写缓存,通过汇编指令操作实现缓存管理; C2寄存器(TTB):存储页表基地址,MMU通过它获取页表信息进行地址转换; C13寄存器:存储进程标识符(ASID),用于MMU上下文切换。 文章详细解析了鸿蒙系统中MMU上下文切换的过程,包括页表切换和进程标识符更新,并展示了调度算法中进程切换时如何调用这些功能。通过汇编指令示例,说明了系统如何通过CP15

2025-07-08 15:39:00 1056

原创 鸿蒙内核-内存初始化全解析

鸿蒙系统内存管理机制解析:文章详细介绍了鸿蒙内核的内存初始化流程,从OsSysMemInit()函数出发,剖析了内核空间、堆区、页表等关键组件的初始化过程。通过内存布局图和代码分析,展示了虚拟内存的分段管理(BSS、data、rodata、text、stack、heap),并深入讲解了Page页表的初始化机制。文章还附带了鸿蒙全栈学习笔记和相关技术文章链接,涉及移动开发前景、鸿蒙应用开发、嵌入式开发等热点话题。

2025-07-08 14:41:32 991

原创 鸿蒙内核源码分析(内存主奴篇)

如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。市场巨变,移动开发行业即将迎来“第二春”?鸿蒙应用开发与鸿蒙系统开发哪个更有前景?嵌入式开发适不适合做鸿蒙南向开发?看完这篇你就了解了~对于大前端开发来说,转鸿蒙开发究竟是福还是祸?鸿蒙岗位需求突增!移动端、PC端、IoT到底该怎么选?记录一场鸿蒙开发岗位面试经历~持续更新中……

2025-07-08 13:40:37 629

原创 鸿蒙内核调度机制全解析

鸿蒙内核调度机制解析 本文探讨了鸿蒙操作系统内核中的任务调度机制,重点分析了: Task与线程概念:广义相同但管理体系不同,Task是调度单元而线程是进程层面概念 状态迁移过程:详细说明了进程和线程在Init→Ready、Pend→Ready等状态间的转换条件 调度触发机制:四种主要触发方式包括时钟中断(Tick)、硬件中断、程序主动中断和进程创建时抢占式调度 调度实现细节:通过源码分析展示了fork进程后立即申请调度的典型场景 文章以生活化比喻帮助理解复杂概念,揭示了操作系统调度机制的设计原理和工作流程。

2025-07-07 20:35:33 877

原创 鸿蒙内核调度队列揭秘:32级优先级背后的高效运作

本文介绍了鸿蒙内核中的调度队列机制,重点分析了位图调度器和进程/线程就绪队列的实现原理。文章指出,鸿蒙系统采用32个双向循环链表作为就绪队列,每个优先级对应一个队列,通过位图调度器高效管理任务调度。具体内容包括:1) 位图调度器使用32位变量快速标识各优先级队列状态;2) 进程和线程各有32个就绪队列,进程队列全局存储,线程队列存放在进程结构中;3) 详细解析了队列初始化、入队和出队等核心操作函数。文章通过对比进程和线程状态关系,引出对进程状态判定的思考,为理解鸿蒙任务调度机制提供了重要参考。

2025-07-07 17:45:22 943

原创 鸿蒙内核:任务与线程的奥秘

本文探讨了鸿蒙系统中任务与线程的关系,指出在鸿蒙内核中任务和线程在本质上可以等同看待。文章分析了官方文档对线程的定义,包括线程状态、调度机制和优先级划分,并通过任务控制块(LosTaskCB)详细结构展示了任务的运行信息。同时,以shell命令执行结果为例,说明任务管理在鸿蒙系统中的实现方式。

2025-07-07 17:01:09 1095

原创 鸿蒙内核:任务与线程的奥秘解析

鸿蒙内核任务与线程机制解析 鸿蒙内核中任务(task)和线程(thread)本质上属于同一概念的不同视角:任务是从调度层面对执行单元的抽象,线程则是进程层面的运行单元。每个任务对应一个LosTaskCB结构体,记录了任务状态(就绪/运行/阻塞等)、优先级、调度策略、栈信息、入口函数等关键属性。内核采用抢占式调度机制,支持32个优先级(0-31)的任务调度,高优先级任务可抢占低优先级任务。通过shell命令可查看任务运行详情,包括内存空间、时间片、进程ID等信息。任务状态迁移涉及初始化、就绪、运行、阻塞和退出

2025-07-07 15:42:16 1265

原创 鸿蒙系统时钟节拍全解析

本文详细剖析了鸿蒙操作系统内核中的时钟节拍实现机制及其在任务调度中的核心作用。鸿蒙默认配置每秒100个时钟节拍(10ms/次),通过硬件定时器中断触发OsTickHandler()函数。该函数主要完成三项关键工作:1) 检查当前进程和任务的时间片(默认20ms),耗尽时触发调度;2) 扫描阻塞任务队列,处理超时唤醒;3) 扫描定时器队列处理超时事件。时钟节拍作为系统"心跳",不仅控制着任务时间片轮转,还管理着阻塞任务和定时器的超时处理,是保障系统实时

2025-07-07 15:06:24 622

原创 鸿蒙内核源码分析(进程管理篇) | 谁在管理内核资源?

本文介绍了OpenHarmony内核进程管理的基本概念和运行机制。进程是资源管理单元,采用抢占式调度,支持32个优先级(10-31为用户进程可配置)。文章详细解析了进程的6种状态(初始化、就绪、运行、阻塞、僵尸态)及其转换关系,并阐述了进程控制块LosProcessCB的关键数据结构,包括进程ID、状态、优先级、调度策略等核心字段。通过张大爷排队的比喻,生动说明了进程调度队列的工作原理。最后指出进程作为资源管理单元与任务调度的区别,为后续深入分析进程生命周期奠定了基础。

2025-07-07 13:51:54 931

原创 鸿蒙内核双向链表的艺术解析

本文深入解析鸿蒙内核中的核心数据结构LOS_DL_LIST双向链表,它是系统运行的关键基础。文章通过生动的比喻(将指针比作"触手")和清晰的图示,展示了双向链表在鸿蒙系统中的广泛运用和精妙设计。作者详细讲解了双向链表的基本概念、功能接口(包括初始化、插入、删除等操作)以及强大的宏支持,强调理解这一数据结构对掌握鸿蒙内核至关重要。文中还提供了实用的工具建议(如Source Insight 4.0)和代码示例,帮助读者更好地理解链表操作原理。最后指出,双向链表虽结构简单,但其高效灵活的运用体

2025-07-06 22:02:07 865

原创 鸿蒙开发实战案例:视频截取gif图

本文介绍了如何使用FFmpeg命令截取视频片段生成GIF图片的功能实现方案。主要内容包括:1) 视频播放模块实现,区分本地和在线视频的处理方式;2) 通过MP4Parser获取视频帧展示在时间轴上;3) 时间轴选择框交互逻辑处理;4) GIF生成模块调用FFmpeg命令完成转换。文章还提供了完整的工程结构说明,包含视频播放、时间轴选择、GIF生成等核心模块的实现细节,以及在线视频边缓存边播放的处理方案。该方案适用于长视频类应用中的GIF制作场景。

2025-07-06 20:44:15 776

原创 鸿蒙开发-动效地址选择组件实现

本文介绍了如何使用ArkUI实现带切换动效的自定义地址选择组件,主要包含以下内容: 数据获取:通过读取本地JSON文件获取省市区数据,使用TextDecoder解码后映射为模型对象。 交互实现: 使用bindSheet绑定地址选择半模态弹窗 通过changeIndex控制省市区列表TabContent切换 利用onAreaChange回调获取组件位置信息实现动效 功能特点: 支持省市区三级联动选择 包含选择动效和自动关闭机制 提供地址信息获取接口 使用JSON深拷贝保存选择记录 应用场景: 表单地址输入 用

2025-07-06 19:11:44 926

原创 鸿蒙开发:文件压缩全栈实战

本文介绍了如何在HarmonyOS中使用Worker子线程和zlib模块实现文件压缩功能。主要内容包括: 通过Worker线程执行压缩操作,避免阻塞主线程 使用zlib.compressfile接口压缩沙箱目录中的文件 组件化设计,提供可复用的压缩文件组件 实现主线程与Worker线程的通信机制 文件系统操作和异常处理 关键步骤: 创建Worker线程处理压缩任务 主线程通过postMessage传递压缩参数 使用fs模块检查并创建输出目录 调用zlib.compressFile接口进行文件压缩 处理压缩结

2025-07-04 20:46:12 1030

原创 鸿蒙卡片开发全攻略:动态UI与跳转实战

本文介绍了鸿蒙系统卡片开发的完整实现流程,包括: 新建卡片配置form_config.json 编写卡片UI组件WidgetCard.ets 通过EntryAbility处理卡片点击事件,实现从桌面卡片到应用内页面的跳转 利用want参数传递卡片内容,实现不同案例的定向跳转 在EntryView中处理最终页面路由逻辑 文章通过具体代码示例,展示了卡片开发的关键技术点,包括动态/静态卡片配置、生命周期处理、want参数传递等核心功能实现方式。

2025-07-04 18:00:34 1214

空空如也

空空如也

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

TA关注的人

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