移动开发
文章平均质量分 91
OH五星上将
这个作者很懒,什么都没留下…
展开
-
鸿蒙内核源码分析(内存规则篇) | 内存管理到底在管什么
这是整个紫荆城的全貌图,里面的内核虚拟空间是主人专用的,里面放的是主人的资料,数据,奴才永远进不去,kernel heap 也是给主人专用的动态内存空间,管理奴才和日常运作开销很多时候需要动态申请内存,这个是专门用来提供给主人使用的。奴才之间是不能随意勾连,登门问客的,防止一块搞政变. 他们都有属于自己的活动空间,而且活动空间还巨大巨大,大到奴才们觉得整个紫荆城都是他们家的,给你这么大空间你干活才有动力,奴才们是铆足了劲一个个尽情的表演各种剧本,有玩电子商务的,有玩游戏的,有搞直播的等等。原创 2024-08-16 22:18:54 · 632 阅读 · 0 评论 -
鸿蒙内核源码分析(内存映射篇) | 虚拟内存虚在哪里
虚拟地址的高12位用于对页表项定位,也就是4096个页面项的索引,L1页表的基地址,也叫转换表基地址,存放在CP15的C2(TTB)寄存器中,鸿蒙内核源码分析(内存汇编篇)中有详细的描述,自行翻看。它实现了内核空间各个区的映射,内核本身也是程序,鸿蒙把内核空间在物理内存上就独立开来了,也就是说在物理内存上有一段区域是只给内核空间享用的,从根上就把内核和APP 空间隔离了,里面放的是内核的重要数据(包括代码,常量和全局变量),具体看代码,代码很长,整个函数全贴出来了,都加上了注释。原创 2024-08-16 21:40:49 · 409 阅读 · 0 评论 -
鸿蒙内核源码分析(内存汇编篇) | 谁是虚拟内存实现的基础
ARM处理器使用协处理器15(CP15)的寄存器来控制cache、TCM和存储器管理。CP15的寄存器只能被MRC和MCR(Move to Coprocessor from ARM Register )指令访问,包含16个32位的寄存器,其编号为0~15。本篇重点讲解其中的 C7,C2,C13三个寄存器。原创 2024-08-16 20:46:08 · 461 阅读 · 0 评论 -
鸿蒙内核源码分析(内存管理篇) | 虚拟内存全景图是怎样的
所有的用户进程都是通过init进程 fork来的, 可以看到创建进程的同时创建了一个task, 入口函数就是代码区的第一条指令,也就是应用程序 main函数。进程的主体是来自进程池,进程池是统一分配的,怎么创建进程池的去翻系列篇里的文章,所以创建一个进程的时候只需要分配虚拟内存LosVmSpace,这里要分内核模式和用户模式下的申请。细心的读者可能发现了,鸿蒙内核几乎所有的全局变量都没有赋初始化值或NULL,这些变量经过编译后是放在了BSS段的,运行时占用内存空间,如此编译出来的ELF包就变小了。原创 2024-08-16 20:26:51 · 439 阅读 · 0 评论 -
鸿蒙内核源码分析(内存主奴篇) | 皇上和奴才如何相处
奴才之间是不能随意勾连,登门问客的,防止一块搞政变. 他们都有属于自己的活动空间,而且活动空间还巨大巨大,大到奴才们觉得整个紫荆城都是他们家的,给你这么大空间你干活才有动力,奴才们是铆足了劲一个个尽情的表演各种剧本,有玩电子商务的,有玩游戏的,有搞直播的等等。这是整个紫荆城的全貌图,里面的内核虚拟空间是主人专用的,里面放的是主人的资料,数据,奴才永远进不去,kernel heap 也是给主人专用的动态内存空间,管理奴才和日常运作开销很多时候需要动态申请内存,这个是专门用来提供给主人使用的。原创 2024-08-16 20:26:07 · 358 阅读 · 0 评论 -
鸿蒙内核源码分析(调度机制篇) | 任务是如何被调度执行的
鸿蒙的内核中 Task 和 线程 在广义上可以理解为是一个东西,但狭义上肯定会有区别,区别在于管理体系的不同,Task是调度层面的概念,线程是进程层面概念。比如 main() 函数中首个函数 OsSetMainTask(); 就是设置启动任务,但此时啥都还没开始呢,Kprocess 进程都没创建,怎么会有大家一般意义上所理解的线程呢。狭义上的后续有 鸿蒙内核源码分析(启动过程篇) 来说明。不知道大家有没有这种体会,学一个东西的过程中要接触很多新概念,尤其像 Java/android 的生态,概念贼多,很多同原创 2024-08-16 17:39:37 · 499 阅读 · 0 评论 -
鸿蒙内核源码分析(调度队列篇) | 内核有多少个调度队列
鸿蒙内核代码中有两个源文件是关于队列的,一个是用于调度的队列,另一个是用于线程间通讯的IPC队列。原创 2024-08-16 16:41:12 · 190 阅读 · 0 评论 -
鸿蒙内核源码分析(任务管理篇) | 任务池是如何管理的?
在鸿蒙内核中,广义上可理解为一个任务就是一个线程原创 2024-08-16 16:13:03 · 298 阅读 · 0 评论 -
鸿蒙内核源码分析(任务调度篇) | 任务是内核调度的单元
在鸿蒙内核中,广义上可理解为一个任务就是一个线程原创 2024-08-16 15:30:52 · 834 阅读 · 0 评论 -
鸿蒙内核源码分析(时钟任务篇)
时间是非常重要的概念,我们整个学生阶段有个东西很重要,就是校园铃声. 它控制着上课,下课,吃饭,睡觉的节奏.没有它学校的管理就乱套了,老师拖课想拖多久就多久,那可不行,下课铃声一响就是在告诉老师时间到了,该停止了让学生HAPPY去了.原创 2024-08-16 13:44:30 · 660 阅读 · 0 评论 -
鸿蒙内核源码分析(进程管理篇) | 谁在管理内核资源?
的情况下 系统最多是64个进程,但有两个进程先被占用,用户态和内核态各一个,他们是后续创建进程的根,所以最多留给外面的只有 62个进程可创建,代码的最后两个根进程的task阻塞链表被清空了,因为没有阻塞任务当然要清空.进程创建或fork时,拿到该进程控制块后进入Init状态,处于进程初始化阶段,当进程初始化完成将进程插入调度队列,此时进程进入就绪状态。阻塞进程内的任意线程恢复就绪态时,进程被加入到就绪队列,同步转为就绪态,若此时发生进程切换,则进程状态由就绪态转为运行态。原创 2024-08-15 22:26:33 · 534 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——谁是鸿蒙内核最重要的结构体?
答案一定是:(双向链表),它长这样.结构体够简单了吧,只有前后两个指向自己的指针,但恰恰是因为太简单,所以才太不简单. 就像氢原子一样,宇宙中无处不在,占比最高,原因是因为它最简单,最稳定!内核的各个模块都能看到双向链表的身影,下图是各处初始化双向链表的操作,因为太多了,只截取了部分:很多人问图怎么来的,是阅读大型C/C++工程的必备工具,要用4.0否则中文有乱码. [下载 source insight 4.0 破解版]可以豪不夸张的说理解及相关函数是读懂鸿蒙内核的关键。原创 2024-08-15 22:08:41 · 714 阅读 · 0 评论 -
OpenHarmony网络请求库-httpclient
HTTP是现代应用程序通过网络交换数据和媒体的的主要方式。httpclient是OpenHarmony 里一个高效执行的HTTP客户端,使用它可使您的内容加载更快,并节省您的流量。httpclient以人们耳熟能详的OKHTTP为基础,整合android-async-http,AutobahnAndroid,OkGo等库的功能特性,致力于在OpenHarmony 打造一款高效易用,功能全面的网络请求库。当前版本的httpclient依托系统提供的网络请求能力和上传下载能力,在此基础上进行拓展开发,已经实现的原创 2024-08-15 21:29:34 · 697 阅读 · 0 评论 -
OpenHarmony网络组件-Mars
Mars 是一个跨平台的网络组件,包括主要用于网络请求中的长连接,短连接,是基于 socket 层的解决方案,在网络调优方面有更好的可控性,暂不支持HTTP协议。Mars 极大的方便了开发者的开发效率。原创 2024-08-15 21:03:58 · 544 阅读 · 0 评论 -
OpenHarmony网络通信-socket-io
socket.io是一个在客户端和服务器之间实现低延迟、双向和基于事件的通信的库。建立在 WebSocket 协议之上,并提供额外的保证,例如回退到 HTTP 长轮询或自动重新连接。原创 2024-08-15 20:33:05 · 505 阅读 · 0 评论 -
OpenHarmony网络请求库-axios
Axios ,是一个基于 promise 的网络请求库,可以运行 node.js 和浏览器中。本库基于 Axios 原库v1.3.4版本进行适配,使其可以运行在 OpenHarmony,并沿用其现有用法和特性。http 请求request 和 response 拦截器转换 request 和 response 的 data 数据自动转换 JSON data 数据// 创建实例时配置默认值});// 创建实例后修改默认值配置的优先级配置将会按优先级进行合并。原创 2024-08-15 17:47:25 · 578 阅读 · 0 评论 -
OpenHarmony UI动画-box2d
用于游戏开发,使物体的运动更加真实,让游戏场景看起来更具交互性,比如愤怒的小鸟原创 2024-08-15 17:07:56 · 283 阅读 · 0 评论 -
OpenHarmony UI动画-rebound
rebound是一个模拟弹簧动力学,用于驱动物理动画的库。原创 2024-08-15 15:33:54 · 614 阅读 · 0 评论 -
OpenHarmony UI动画-recyclerview_animators
带有添加删除动画效果以及整体动画效果的list组件库。原创 2024-08-15 14:40:12 · 249 阅读 · 0 评论 -
OpenHarmony UI开发-ohos-svg
ohos-svg是一个SVG图片的解析器和渲染器,解析SVG图片并渲染到页面上。它支持大部分 SVG 1.1 规范,包括基本形状、路径、文本、样式和渐变,它能够渲染大多数标准的 SVG 图像。ohos-svg的优点是性能好、内存占用低。原创 2024-08-15 14:14:18 · 284 阅读 · 0 评论 -
OpenHarmony UI动画-lottie
lottie是一个适用于OpenHarmony的动画库,它可以解析Adobe After Effects软件通过Bodymovin插件导出的json格式的动画,并在移动设备上进行本地渲染。原创 2024-08-15 14:13:31 · 297 阅读 · 0 评论 -
OpenHarmony 视频播放开发指南~
本示例主要展示了网络视频播放的相关功能。使用@ohos.multimedia.avsession等接口实现视频播放的功能。原创 2024-08-14 21:41:03 · 809 阅读 · 0 评论 -
OpenHarmony其他工具类—leveldb【GN编译】
leveldb是一种快速键值存储库,提供从字符串键到字符串值的有序映射原创 2024-08-14 21:05:05 · 375 阅读 · 0 评论 -
OpenHarmony其他工具类—libharu 【GN编译】
libharu主要用于生成 PDF格式文件。原创 2024-08-14 20:35:12 · 271 阅读 · 0 评论 -
OpenHarmony其他工具类—lua
Lua是一种功能强大、高效、轻量级、可嵌入的脚本语言。 支持过程编程、面向对象编程、函数编程、数据驱动编程和数据描述。原创 2024-08-14 17:37:01 · 632 阅读 · 0 评论 -
OpenHarmony网络协议通信—kcp
kcp 是一种 ARQ 协议,可解决在网络拥堵情况下 tcp 协议的网络速度慢的问题原创 2024-08-14 17:21:14 · 533 阅读 · 0 评论 -
OpenHarmony网络协议通信—libevent [GN编译] - 事件通知库
在/developtools/bytrace_standard/ohos.build文件中添加修改 “//third_party/libevent:libevent_targets”,“//third_party/libevent:libevent_test”原创 2024-08-14 16:39:08 · 947 阅读 · 0 评论 -
OpenHarmony网络协议通信c-ares [交叉编译]异步解析器库
c-ares是异步解析器库,适用于需要无阻塞地执行 DNS 查询或需要并行执行多个 DNS 查询的应用程序。如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。原创 2024-08-14 16:02:09 · 275 阅读 · 0 评论 -
OpenHarmony网络协议通信—nanopb
nanopb是一种小代码量的协议缓冲区实现,适用于任何内存受限的系统。原创 2024-08-14 15:21:01 · 550 阅读 · 0 评论 -
OpenHarmony图形处理库—pyclipper 【GN编译】
pyclipper是图形处理库,用于剪裁和偏移直线和多边形。原创 2024-08-14 15:19:40 · 305 阅读 · 0 评论 -
OpenHarmony图像解码库—stb-image【GN编译】
stb_image主要是C/C++实现的图像解码库。原创 2024-08-14 14:29:26 · 239 阅读 · 0 评论 -
OpenHarmony移植的加解密库—libsodium 【GN编译】
libsodium主要是易用,可移植的加解密库。原创 2024-08-13 22:29:19 · 933 阅读 · 0 评论 -
OpenHarmony编解码器—libogg 【GN编译】
libogg是Ogg容器格式库,支持创建、解码和使用Ogg比特流。原创 2024-08-13 22:12:12 · 652 阅读 · 0 评论 -
OpenHarmony音视频—opus
Opus是一种用于在互联网上进行交互式语音和音频传输的编解码器。它可以从低比特率窄带语音扩展到非常高的高品质立体声音乐。原创 2024-08-13 21:18:28 · 844 阅读 · 0 评论 -
OpenHarmony音频和音乐编码格式—vorbis
一种通用音频和音乐编码格式。 Vorbis编解码器规范属于公共领域。所有技术细节都已发布并记录,任何软件实体都可以充分利用该格式,而无需支付许可费、版税或专利问题。原创 2024-08-13 20:44:35 · 643 阅读 · 0 评论 -
OpenHarmony容器文件—avro
本软件是参照开源软件apache avro源码适配OpenHarmony实现的数据序列化系统,支持丰富的数据结构,将其转化成便于存储或传输的二进制数据格式。它同时也是一个容器文件,用于存储持久数据。原创 2024-08-13 17:32:07 · 504 阅读 · 0 评论 -
OpenHarmony(数据)通信协议、数据存储—protobuf
ProtoBuf(protocol buffers) 是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。,是一种灵活,高效,自动化机制的结构数据序列化方法比XML更小,更快,更为简单。原创 2024-08-13 16:56:01 · 580 阅读 · 0 评论 -
OpenHarmony环境的ArangoDB数据库—@ohos/arangojs
@ohos/arangojs 是一款适用于 openharmony 环境的 ArangoDB 数据库 javascript 版驱动。本库基于 arangojs 原库 v8.3.1 版本进行适配。原创 2024-08-13 15:31:22 · 308 阅读 · 0 评论 -
OpenHarmony 对象序列化库——msgpack
MessagePack是一个非常高效的对象序列化库。它像JSON,但速度很快,而且很小。原创 2024-08-13 15:04:06 · 353 阅读 · 0 评论 -
OpenHarmony 关系映射数据库—dataORM
dataORM 是一个轻量级 ORM(对象关系映射)库,用于简化本地数据库的操作。提供了高效的数据库访问性能和低内存消耗。dataORM 支持多线程操作、链式调用、备份、升级、缓存等特性等功能。其设计理念是轻量、快速且易于使用,帮助开发者快速构建高性能的应用程序。原创 2024-08-13 15:02:52 · 989 阅读 · 0 评论