侵权投诉

浅谈鸿蒙内核代码调度队列

鸿蒙系统HarmonyOS 2020-10-23 11:00 次阅读

为何单独讲调度队列?

鸿蒙内核代码中有两个源文件是关于队列的,一个是用于调度的队列,另一个是用于线程间通讯的IPC队列。 

本文详细讲述调度队列,详见代码: kernel_liteos_a/kernel/base/sched/sched_sq/los_priqueue.c

IPC队列后续有专门的博文讲述,这两个队列的数据结构实现采用的都是双向循环链表,LOS_DL_LIST实在是太重要了,是理解鸿蒙内核的关键,说是最重要的代码一点也不为过,源码出现在 sched_sq模块,说明是用于任务的调度的,sched_sq模块只有两个文件,另一个los_sched.c就是调度代码。

涉及函数

功能分类 接口 描述
创建队列 OsPriQueueInit 创建了32个就绪队列
获取最高优先级队列 OsPriQueueTop 查最高优先级任务
从头部入队列 OsPriQueueEnqueueHead 从头部插入某个就绪队列
从尾部入队列 OsPriQueueEnqueue 默认是从尾部插入某个就绪队列
出队列 OsPriQueueDequeue 从最高优先级的就绪队列中删除
  OsPriQueueProcessDequeue 从进程队列中删除
  OsPriQueueProcessSize 用进程查队列中元素个数
  OsPriQueueSize 用任务查队列中元素个数
  OsTaskPriQueueTop 查最高优先级任务
  OsDequeEmptySchedMap 进程出列
  OsGetTopTask 获取被调度选择的task

鸿蒙内核进程和线程各有32个就绪队列,进程队列用全局变量存放,创建进程时入队,任务队列放在进程的threadPriQueueList中。

映射张大爷的故事:就绪队列就是在外面排队的32个通道,按优先级0-31依次排好,张大爷的办公室有个牌子,类似打篮球的记分牌,一共32个,一字排开,队列里有人时对应的牌就是1,没有就是0 ,这样张大爷每次从0位开始看,看到的第一个1那就是最高优先级的那个人。办公室里的记分牌就是位图调度器。 

位图调度器

//*kfy 0x80000000U = 10000000000000000000000000000000(32位,1是用于移位的,设计之精妙,点赞) 
#define PRIQUEUE_PRIOR0_BIT   0x80000000U 

#ifndef CLZ
#define CLZ(value)                                  (__clz(value)) //汇编指令
#endif

LITE_OS_SEC_BSS LOS_DL_LIST *g_priQueueList = NULL; //所有的队列 原始指针
LITE_OS_SEC_BSS UINT32 g_priQueueBitmap; // 位图调度
// priority = CLZ(bitmap); // 获取最高优先级任务队列 调度位

整个los_priqueue.c就只有两个全部变量,一个是 LOS_DL_LIST *g_priQueueList 是32个进程就绪队列的头指针,在就绪队列中会讲另一个UINT32 g_priQueueBitmap  估计很多人会陌生,是一个32位的变量,叫位图调度器。怎么理解它呢?

鸿蒙系统的调度是抢占式的,task分成32个优先级,如何快速的知道哪个队列是空的,哪个队列里有任务需要一个标识,而且要极高效的实现?答案是:位图调度器。

简单说就是一个变量的位来标记对应队列中是否有任务,在位图调度下,任务优先级的值越小则代表具有越高的优先级,每当需要进行调度时,从最低位向最高位查找出第一个置 1 的位的所在位置,即为当前最高优先级,然后从对应优先级就绪队列获得相应的任务控制块,整个调度器的实现复杂度是 O(1),即无论任务多少,其调度时间是固定的。

进程就绪队列机制

CPU执行速度是很快的,其运算速度和内存的读写速度是数量级的差异,与硬盘的读写更是指数级。 鸿蒙内核默认一个时间片是 10ms,  资源很宝贵,它不断在众多任务中来回的切换,所以绝不能让CPU等待任务,CPU时间很宝贵,没准备好的任务不要放进来。这就是进程和线程就绪队列的机制,一共有32个任务就绪队列,因为线程的优先级是默认32个, 每个队列中放同等优先级的task.

队列初始化做了哪些工作?详细看代码

#define OS_PRIORITY_QUEUE_NUM 32

UINT32 OsPriQueueInit(VOID)
{
    UINT32 priority;

    /* system resident resource */
    g_priQueueList = (LOS_DL_LIST *)LOS_MemAlloc(m_aucSysMem0, (OS_PRIORITY_QUEUE_NUM * sizeof(LOS_DL_LIST)));
    if (g_priQueueList == NULL) {
        return LOS_NOK;
    }

    for (priority = 0; priority < OS_PRIORITY_QUEUE_NUM; ++priority) {
        LOS_ListInit(&g_priQueueList[priority]);
    }
    return LOS_OK;
}

因TASK 有32个优先级,在初始化时内核一次性创建了32个双向循环链表,每种优先级都有一个队列来记录就绪状态的tasks的位置,g_priQueueList分配的是一个连续的内存块,存放了32个LOS_DL_LIST,再看一下LOS_DL_LIST结构体,因为它太重要了!越简单越灵活

typedef struct LOS_DL_LIST {
    struct LOS_DL_LIST *pstPrev; /**< Current node's pointer to the previous node */
    struct LOS_DL_LIST *pstNext; /**< Current node's pointer to the next node */
} LOS_DL_LIST;

几个常用函数

还是看入队和出队的源码吧,注意bitmap的变化!

从代码中可以知道,调用了LOS_ListTailInsert(&priQueueList[priority], priqueueItem); 注意是从循环链表的尾部插入的,也就是同等优先级的TASK被排在了最后一个执行,只要每次都是从尾部插入,就形成了一个按顺序执行的队列。鸿蒙内核的设计可谓非常巧妙,用极少的代码,极高的效率实现了队列功能。

VOID OsPriQueueEnqueue(LOS_DL_LIST *priQueueList, UINT32 *bitMap, LOS_DL_LIST *priqueueItem, UINT32 priority)
{
    /*
     * Task control blocks are inited as zero. And when task is deleted,
     * and at the same time would be deleted from priority queue or
     * other lists, task pend node will restored as zero.
     */
    LOS_ASSERT(priqueueItem->pstNext == NULL);

    if (LOS_ListEmpty(&priQueueList[priority])) {
        *bitMap |= PRIQUEUE_PRIOR0_BIT >> priority;//对应优先级位 置1
    }

    LOS_ListTailInsert(&priQueueList[priority], priqueueItem);
}

VOID OsPriQueueEnqueueHead(LOS_DL_LIST *priQueueList, UINT32 *bitMap, LOS_DL_LIST *priqueueItem, UINT32 priority)
{
    /*
     * Task control blocks are inited as zero. And when task is deleted,
     * and at the same time would be deleted from priority queue or
     * other lists, task pend node will restored as zero.
     */
    LOS_ASSERT(priqueueItem->pstNext == NULL);

    if (LOS_ListEmpty(&priQueueList[priority])) {
        *bitMap |= PRIQUEUE_PRIOR0_BIT >> priority;//对应优先级位 置1
    }

    LOS_ListHeadInsert(&priQueueList[priority], priqueueItem);
}

VOID OsPriQueueDequeue(LOS_DL_LIST *priQueueList, UINT32 *bitMap, LOS_DL_LIST *priqueueItem)
{
    LosTaskCB *task = NULL;
    LOS_ListDelete(priqueueItem);

    task = LOS_DL_LIST_ENTRY(priqueueItem, LosTaskCB, pendList);
    if (LOS_ListEmpty(&priQueueList[task->priority])) {
        *bitMap &= ~(PRIQUEUE_PRIOR0_BIT >> task->priority);//队列空了,对应优先级位 置0
    }
}

同一个进程下的线程的优先级可以不一样吗?

请先想一下这个问题。

进程和线程是一对多的父子关系,内核调度的单元是任务(线程),鸿蒙内核中任务和线程是一个东西,只是不同的身份。一个进程可以有多个线程,线程又有各自独立的状态,那进程状态该怎么界定?例如:ProcessA 有 TaskA(阻塞状态) ,TaskB(就绪状态) 两个线程,ProcessA是属于阻塞状态还是就绪状态呢?

先看官方文档的说明后再看源码。

进程状态迁移说明:

Init→Ready:

进程创建或fork时,拿到该进程控制块后进入Init状态,处于进程初始化阶段,当进程初始化完成将进程插入调度队列,此时进程进入就绪状态。

Ready→Running:

进程创建后进入就绪态,发生进程切换时,就绪列表中最高优先级的进程被执行,从而进入运行态。若此时该进程中已无其它线程处于就绪态,则该进程从就绪列表删除,只处于运行态;若此时该进程中还有其它线程处于就绪态,则该进程依旧在就绪队列,此时进程的就绪态和运行态共存。

Running→Pend:

进程内所有的线程均处于阻塞态时,进程在最后一个线程转为阻塞态时,同步进入阻塞态,然后发生进程切换。

Pend→Ready / Pend→Running:

阻塞进程内的任意线程恢复就绪态时,进程被加入到就绪队列,同步转为就绪态,若此时发生进程切换,则进程状态由就绪态转为运行态。

Ready→Pend:

进程内的最后一个就绪态线程处于阻塞态时,进程从就绪列表中删除,进程由就绪态转为阻塞态。

Running→Ready:

进程由运行态转为就绪态的情况有以下两种:

有更高优先级的进程创建或者恢复后,会发生进程调度,此刻就绪列表中最高优先级进程变为运行态,那么原先运行的进程由运行态变为就绪态。

若进程的调度策略为SCHED_RR,且存在同一优先级的另一个进程处于就绪态,则该进程的时间片消耗光之后,该进程由运行态转为就绪态,另一个同优先级的进程由就绪态转为运行态。

Running→Zombies:

当进程的主线程或所有线程运行结束后,进程由运行态转为僵尸态,等待父进程回收资源。

注意看上面红色的部分,一个进程竟然可以两种状态共存!

UINT16 processStatus; /**< [15:4] process Status; [3:0] The number of threads currently

                                                            running in the process */

    processCB->processStatus &= ~(status | OS_PROCESS_STATUS_PEND);//取反后的与位运算
    processCB->processStatus |= OS_PROCESS_STATUS_READY;//或位运算

一个变量存两种状态,怎么做到的?答案还是 按位保存啊。还记得上面的位图调度 g_priQueueBitmap吗,那可是存了32种状态的。其实这在任何一个系统的内核源码中都很常见,类似的还有 左移 <<,右移 >>等等

继续说进程和线程的关系,线程的优先级必须和进程一样吗?他们可以不一样吗?答案是:可以不一样,否则怎么会有设置task优先级的函数。

线程调度器

真正让CPU工作的是线程,进程只是个装线程的容器,线程有任务栈空间,是独立运行于内核空间,而进程只有用户空间,具体在后续的内存篇会讲,这里不展开说,但进程结构体LosProcessCB 有一个这样的定义。看名字就知道了,那是跟调度相关的。

    UINT32               threadScheduleMap;            /**< The scheduling bitmap table for the thread group of the
                                                            process */
    LOS_DL_LIST          threadPriQueueList[OS_PRIORITY_QUEUE_NUM]; /**< The process's thread group schedules the
                                                                         priority hash table */

咋一看怎么进程的结构体里也有32个队列,其实这就是线程的就绪状态队列。threadScheduleMap就是进程自己的位图调度器。具体看进程入队和出队的源码。调度过程是先去进程就绪队列里找最高优先级的进程,然后去该进程找最高优先级的线程来调度。具体看笔者认为的内核最美函数OsGetTopTask,能欣赏到他的美就读懂了就绪队列是怎么管理的。 

LITE_OS_SEC_TEXT_MINOR LosTaskCB *OsGetTopTask(VOID)
{
    UINT32 priority, processPriority;
    UINT32 bitmap;
    UINT32 processBitmap;
    LosTaskCB *newTask = NULL;
#if (LOSCFG_KERNEL_SMP == YES)
    UINT32 cpuid = ArchCurrCpuid();
#endif
    LosProcessCB *processCB = NULL;
    processBitmap = g_priQueueBitmap;
    while (processBitmap) {
        processPriority = CLZ(processBitmap);
        LOS_DL_LIST_FOR_EACH_ENTRY(processCB, &g_priQueueList[processPriority], LosProcessCB, pendList) {
            bitmap = processCB->threadScheduleMap;
            while (bitmap) {
                priority = CLZ(bitmap);
                LOS_DL_LIST_FOR_EACH_ENTRY(newTask, &processCB->threadPriQueueList[priority], LosTaskCB, pendList) {
#if (LOSCFG_KERNEL_SMP == YES)
                    if (newTask->cpuAffiMask & (1U << cpuid)) {
#endif
                        newTask->taskStatus &= ~OS_TASK_STATUS_READY;
                        OsPriQueueDequeue(processCB->threadPriQueueList,
                                          &processCB->threadScheduleMap,
                                          &newTask->pendList);
                        OsDequeEmptySchedMap(processCB);
                        goto OUT;
#if (LOSCFG_KERNEL_SMP == YES)
                    }
#endif
                }
                bitmap &= ~(1U << (OS_PRIORITY_QUEUE_NUM - priority - 1));
            }
        }
        processBitmap &= ~(1U << (OS_PRIORITY_QUEUE_NUM - processPriority - 1));
    }

OUT:
    return newTask;
}
映射张大爷的故事:张大爷喊到张全蛋时进场时表演时,张全蛋要决定自己的哪个节目先表演,也要查下他的清单上优先级,它同样也有个张大爷同款记分牌,就这么简单。 
编辑:hfy
收藏 人收藏
分享:

评论

相关推荐

鸿蒙内核源码分析:task是内核调度的单元

从系统的角度看,线程是竞争系统资源的最小运行单元。线程可以使用或等待CPU、使用内存空间等系统资源,....
发表于 11-23 15:51 14次 阅读
鸿蒙内核源码分析:task是内核调度的单元

鸿蒙内核源码分析:进程和Task的就绪队列对调度的作用

鸿蒙内核代码中有两个源文件是关于队列的,一个是用于调度的队列,另一个是用于线程间通讯的IPC队列。 ....
发表于 11-23 15:48 13次 阅读
鸿蒙内核源码分析:进程和Task的就绪队列对调度的作用

鸿蒙内核源码分析(Task管理篇):task是内核调度的单元

怎么理解Task 1. 官方文档是怎么描述线程基本概念 从系统的角度看,线程是竞争系统资源的最小运行单元。线程可以使用或等待C...
发表于 11-23 14:01 167次 阅读
鸿蒙内核源码分析(Task管理篇):task是内核调度的单元

鸿蒙内核源码分析:手眼通天的虚拟内存

这张图是第一张图的局部用户空间放大图。里面放的是奴才的私人用品,数据,task运行栈区动态分配内存的....
发表于 11-23 11:50 11次 阅读
鸿蒙内核源码分析:手眼通天的虚拟内存

鸿蒙内核源码分析:内存有哪些分配方式

内存部分占了整个kernel代码量近30%,代码多实现复杂,而且内存部分还分了两个文件夹memvm大....
发表于 11-23 11:48 8次 阅读
鸿蒙内核源码分析:内存有哪些分配方式

鸿蒙内核源码分析(调度队列篇):进程和Task的就绪队列对调度的作用

为何单独讲调度队列?鸿蒙内核代码中有两个源文件是关于队列的,一个是用于调度的队列,另一个是用于线程间通讯的IPC队列。 本...
发表于 11-23 11:09 101次 阅读
鸿蒙内核源码分析(调度队列篇):进程和Task的就绪队列对调度的作用

鸿蒙内核源码分析(调度机制篇):Task是如何被调度执行的

本文分析任务调度机制源码 详见: 建议先阅读阅读之前建议先读本系列其他文章,进入,以便对本文任务调度机制的理解。 为什么学...
发表于 11-23 10:53 102次 阅读
鸿蒙内核源码分析(调度机制篇):Task是如何被调度执行的

鸿蒙内核源码分析(必读篇):用故事说内核

本文基于开源鸿蒙内核分析,官方源码【】官方文档【】参考文档【】 本文作者:鸿蒙内核发烧友,用生活场景讲故事的方式去解构内...
发表于 11-23 10:15 202次 阅读
鸿蒙内核源码分析(必读篇):用故事说内核

用VMWare虚拟机编译HarmonyOS 的Linux环境搭建

顺利拿到板子,开搞,第一步当然是环境搭建。论坛的大大们早就为我们准备好了详细的攻略。 笔者并没有一台....
的头像 电子发烧友网工程师 发表于 11-23 09:28 265次 阅读
用VMWare虚拟机编译HarmonyOS 的Linux环境搭建

在鸿蒙系统上使用MQTT编程

我们使用的是paho mqtt软件包,这里介绍一下怎么使用mqtt协议编程。关于鸿蒙系统的mqtt移植好的软件包,相关github链接如下: h...
发表于 11-21 18:27 0次 阅读
在鸿蒙系统上使用MQTT编程

鸿蒙内核源码分析(内存分配篇):内存的分配方式有哪些

鸿蒙内核有多少代码内存部分占了整个kernel代码量近30%,代码多实现复杂,而且内存部分还分了两个文件夹mem,vm大书特书,为什么...
发表于 11-20 17:34 101次 阅读
鸿蒙内核源码分析(内存分配篇):内存的分配方式有哪些

鸿蒙内核源码分析(内存管理篇):虚拟内存和物理内存是怎么管理的

有了上篇鸿蒙内核源码分析(内存概念篇)的基础,本篇讲内存管理部分,本章源码超级多,很烧脑,但笔者关键处都加了注释。废话不多...
发表于 11-20 16:48 101次 阅读
鸿蒙内核源码分析(内存管理篇):虚拟内存和物理内存是怎么管理的

鸿蒙内核源码分析(内存概念篇) :手眼通天的虚拟内存

内存模块占了 HarmonyOS 内核约15%代码量, 近20个.c文件,很复杂。系列篇将用九篇来介绍HarmonyOS内存部分,分别是 鸿蒙内核...
发表于 11-20 16:30 101次 阅读
鸿蒙内核源码分析(内存概念篇) :手眼通天的虚拟内存

鸿蒙内核源码分析(内存概念篇) :手眼通天的虚拟内存

最难讲的章节        内存模块占了 HarmonyOS 内核约15%代码量, 近20个.c文件,很复杂。系列篇...
发表于 11-20 13:52 101次 阅读
鸿蒙内核源码分析(内存概念篇) :手眼通天的虚拟内存

【HarmonyOS HiSpark AI Camera试用连载 】第一篇:开箱报告

HarmonyOS HiSpark AI Camera开发套件开箱报告很荣幸参加电子发烧友举行的HarmonyOS开发板试用活动,获得了鸿蒙OS ...
发表于 11-20 12:29 57次 阅读
【HarmonyOS HiSpark AI Camera试用连载 】第一篇:开箱报告

鸿蒙系统有什么样的意义

2020 年 9 月 10 日,在华为开发者大会上,华为 Harmony OS(鸿蒙操作系统)2.0....
的头像 电子发烧友网工程师 发表于 11-20 09:37 467次 阅读
鸿蒙系统有什么样的意义

win10的WLS编译环境搭建

老实说,万事开头难,所以编译环境尤为重要。 01 为什么要用win10的WLS子系统? - 鸿蒙编译....
的头像 电子发烧友网工程师 发表于 11-20 09:17 75次 阅读
win10的WLS编译环境搭建

移植鸿蒙系统到STM32L476RG_NUCLEO开发板的建议

https://gitee.com/walker2048/hmos_iot 移植鸿蒙的建议: 步骤一....
的头像 电子发烧友网工程师 发表于 11-20 09:14 99次 阅读
移植鸿蒙系统到STM32L476RG_NUCLEO开发板的建议

首批升级鸿蒙OS名单:共有42款机型

今年八月,华为首次对外界发布了自研系统鸿蒙OS;九月,华为鸿蒙OS 2.0版本发布,并宣称年底推出手....
的头像 Les 发表于 11-19 18:29 2189次 阅读
首批升级鸿蒙OS名单:共有42款机型

鸿蒙内核内存实现涉及哪些汇编代码

ARM处理器使用协处理器15(CP15)的寄存器来控制cache、TCM和存储器管理。CP15的寄存....
发表于 11-19 15:34 35次 阅读
鸿蒙内核内存实现涉及哪些汇编代码

鸿蒙内核中虚拟地址与物理地址之间是如何映射的

虚拟地址(VA): 就是线性地址 鸿蒙内存部分全是VA的身影 是由编译器和链接器在定位程序时分配的,....
发表于 11-19 14:45 19次 阅读
鸿蒙内核中虚拟地址与物理地址之间是如何映射的

解读鸿蒙源码逐行注释分析免费下载

以上两图是笔者阅读完鸿蒙内核源码内存模块所绘制,给鸿蒙内核源码逐行加上中文注释 【 Gitee仓 |....
发表于 11-19 14:37 16次 阅读
解读鸿蒙源码逐行注释分析免费下载

出售后的荣耀能否体验鸿蒙系统

上个月,华为将出售荣耀的传言在网上闹得沸沸扬扬。尽管如此,在结果没有敲定之前,官方还是在辟谣没有这一....
的头像 鸿蒙系统HarmonyOS 发表于 11-19 14:09 507次 阅读
出售后的荣耀能否体验鸿蒙系统

华为宣布第1批可升级鸿蒙系统的更新名单!

12月份快要到了,大家特别期待这鸿蒙系统终于要上线了。这可赚足了大家的目光,之前余承东就向各位顾客保....
的头像 鸿蒙系统HarmonyOS 发表于 11-19 14:04 894次 阅读
华为宣布第1批可升级鸿蒙系统的更新名单!

关于DevEco Studio 2.0,你想知道的都在这里!

1、如何获取DevEco Studio 2.0?(版本计划 + 获取方式) 现在起,可在Harmon....
的头像 电子发烧友网工程师 发表于 11-19 09:36 130次 阅读
关于DevEco Studio 2.0,你想知道的都在这里!

鸿蒙系统开发之实现LED灯闪烁免费下载

先在./applications/sample/wifi-iot/app 路径下新建一个目录(或一套....
发表于 11-18 17:56 32次 阅读
鸿蒙系统开发之实现LED灯闪烁免费下载

小米将研发全新物联网操作系统Vela,鸿蒙系统又多了新的伙伴

自从谷歌禁止华为使用GMS 开始,华为鸿蒙系统已经发展两年多。最近,鸿蒙系统又多了新的伙伴,在小米开....
的头像 Les 发表于 11-17 09:35 479次 阅读
小米将研发全新物联网操作系统Vela,鸿蒙系统又多了新的伙伴

为什么国产操作系统还是无法冲出学术和技术的象牙塔

说到国产操作系统,国人都是一声叹息。但有多少人认真想过,搞了几十年,为什么国产操作系统还是不行:无法....
的头像 Les 发表于 11-16 16:28 367次 阅读
为什么国产操作系统还是无法冲出学术和技术的象牙塔

荣耀V40系列放料:高配麒麟9000,将搭载鸿蒙2.0

荣耀系列手机的发布节奏有一定程度的变动,例如荣耀Magic3发布推迟,但是根据消息称,荣耀V40还会照常发布。
的头像 鸿蒙视界 发表于 11-16 13:46 436次 阅读
荣耀V40系列放料:高配麒麟9000,将搭载鸿蒙2.0

鸿蒙技术专题:嵌入式软件最能体现开发者硬实力

本期为鸿蒙技术专题,给大家分享关于鸿蒙系统最新的学习经验、答疑解惑、在线技术直播以及开发资料汇总。 ....
的头像 电子发烧友网 发表于 11-14 10:32 338次 阅读
鸿蒙技术专题:嵌入式软件最能体现开发者硬实力

vivo全新OriginOS系统到底怎么样

事实上,vivo推出新系统并不是一时兴起,早在去年的时候,它就制定了相应的计划,OriginOS便是....
的头像 我快闭嘴 发表于 11-13 15:39 1047次 阅读
vivo全新OriginOS系统到底怎么样

华为鸿蒙系统将首次用于智能手机

重要信息 下个月,华为鸿蒙系统(HarmonyOS)将首次用于智能手机! 华为消费者业务软件部总裁王....
的头像 5G 发表于 11-13 12:00 1523次 阅读
华为鸿蒙系统将首次用于智能手机

华为启动突围Plan B,鸿蒙系统装上车

尽管拜登击败了特朗普即将出任美国下一任总统,外界认为新一届美国政府对中国科技企业的打压态势并不会因为....
的头像 如意 发表于 11-13 11:51 457次 阅读
华为启动突围Plan B,鸿蒙系统装上车

美的搭载鸿蒙系统的家电正式上市,引领智联家电潮流

双十一当天早上,美的集团官方微博正式宣布旗下搭载华为鸿蒙系统的智能家居产品上架,官方的宣传语为“碰见你,秒启懂
的头像 鸿蒙视界 发表于 11-12 14:30 473次 阅读
美的搭载鸿蒙系统的家电正式上市,引领智联家电潮流

美的产品上市,只需“碰一碰”体验鸿蒙OS生态

在9月的HDC 2020开发者大会上,华为正式推出鸿蒙2.0系统,该系统具备通过跨设备协同、大小屏互....
的头像 如意 发表于 11-11 14:56 221次 阅读
美的产品上市,只需“碰一碰”体验鸿蒙OS生态

美的官微消息:搭载 HarmonyOS 的美的产品今天上市

据美的官微消息,搭载 HarmonyOS 的美的产品今天双十一上市,据悉,美的是首批支持 Harmo....
的头像 工程师邓生 发表于 11-11 12:06 430次 阅读
美的官微消息:搭载 HarmonyOS 的美的产品今天上市

基于鸿蒙OS的按键驱动

按键作为常用的输入系统,如何准确并高效的获取按键值,是一个经常要面对的问题,今天我们看看在鸿蒙系统中....
发表于 11-11 10:03 40次 阅读
基于鸿蒙OS的按键驱动

如何实现鸿蒙系统编译、烧录不跨平台的?

鸿蒙目前的弱点,Windows 下不能编译,Linux 下又没有烧写工具。虽然 vscode有个 D....
的头像 电子发烧友网工程师 发表于 11-11 09:59 168次 阅读
如何实现鸿蒙系统编译、烧录不跨平台的?

荣耀手表 GS Pro首先升级华为鸿蒙 2.0内核能力

IT之家11月10日消息 数码博主 @长安数码君 今日爆料称,第一个升级华为鸿蒙 2.0 相关能力的....
的头像 工程师邓生 发表于 11-10 16:28 816次 阅读
荣耀手表 GS Pro首先升级华为鸿蒙 2.0内核能力

12月发布鸿蒙系统测试版,网友:支持并期待更新

华为鸿蒙OS系统最新进展, 网友们热评推荐:不管好不好用,我都用。支持坚决支持,绝对支持。做系统需要狠劲,考验
的头像 鸿蒙视界 发表于 11-10 14:38 531次 阅读
12月发布鸿蒙系统测试版,网友:支持并期待更新

失去麒麟芯片王牌的华为手机,手里还有什么筹码?

昨日晚间,据数码博主@长安数码君爆料——华为消费者业务软件部总裁王成录表示:华为鸿蒙OS 2.0手机....
的头像 如意 发表于 11-10 11:56 751次 阅读
失去麒麟芯片王牌的华为手机,手里还有什么筹码?

华为关注oppo魅族官微,暗示准备加入适配鸿蒙OS机型?

近日华为消费者业务软件部总裁王成录宣布,手机版鸿蒙OS 适配工作进展顺利,将按照计划在今年12月发布。王成录表
的头像 鸿蒙视界 发表于 11-09 14:34 502次 阅读
华为关注oppo魅族官微,暗示准备加入适配鸿蒙OS机型?

鸿蒙OS系统Beta测试版本或将来临

11月9日消息,日前,据数码博主@长安数码君爆料,华为鸿蒙OS 2.0手机系统已经暂定在12月18日....
的头像 我快闭嘴 发表于 11-09 13:46 457次 阅读
鸿蒙OS系统Beta测试版本或将来临

深度操作系统宣布已在小米6上刷入它家的UOS

国产手机采用国产操作系统一直颇受国人关注,由此各手机操作系统一直就此进行比赛,近日国产操作系统之一的....
的头像 Les 发表于 11-09 10:39 1573次 阅读
深度操作系统宣布已在小米6上刷入它家的UOS

继华为鸿蒙系统后,小米Vela加入操作系统战场

智能手机排行榜上,全球前五,中国厂商独占三席。然而,若论手机操作系统,即使是在全球范围内,除苹果之外....
的头像 如意 发表于 11-07 11:34 1054次 阅读
继华为鸿蒙系统后,小米Vela加入操作系统战场

余承东宣布华为Mate30系列正式升级EMUI11

经过一段时间的公测,余承东宣布,大家期待的EMUI 11今天可以在P40系列和Mate 30系列等8....
的头像 璟琰乀 发表于 11-06 18:04 2090次 阅读
余承东宣布华为Mate30系列正式升级EMUI11

安卓系统垄断梦灭!华为鸿蒙系统可实现全面替换

相信大家都知道,在全球智能手机圈中,谷歌的Android系统、苹果IOS系统几乎垄断着全球近乎100%智能手机
的头像 鸿蒙视界 发表于 11-06 11:47 482次 阅读
安卓系统垄断梦灭!华为鸿蒙系统可实现全面替换

鸿蒙首秀!15款华为智选产品,全套1.3万

11月5日,华为举办2020智选品鉴会,这也是华为的第一场智选专场品鉴会,一口气发布了15款新品,涵....
的头像 如意 发表于 11-06 09:27 540次 阅读
鸿蒙首秀!15款华为智选产品,全套1.3万

王成录:鸿蒙系统与现在的ios和安卓完全不在一个赛道上

10月30日下午,华为Mate40系列国内发布会正式举行,其配备的华为最新创新技术引发了行业内外的激....
的头像 如意 发表于 11-06 09:20 319次 阅读
王成录:鸿蒙系统与现在的ios和安卓完全不在一个赛道上

华为智选智能摄像头Pro:支持鸿蒙OS、一键视频通话、极速配网

11月5日下午,在2020华为智选品鉴会上,华为正式推出了华为智选智能摄像头Pro系列,这是首款支持....
的头像 工程师邓生 发表于 11-05 15:50 468次 阅读
华为智选智能摄像头Pro:支持鸿蒙OS、一键视频通话、极速配网

华为发布首款搭载鸿蒙系统的摄像头,售价299起

11月5日下午,在2020华为智选品鉴会上,华为正式推出了华为智选智能摄像头Pro系列,这是首款支持....
的头像 如意 发表于 11-05 15:30 477次 阅读
华为发布首款搭载鸿蒙系统的摄像头,售价299起

华为智选车载智慧屏将12月上市:有望搭载鸿蒙系统

10月30日,华为年度旗舰手机Mate40系列在国内发布,同时亮相的还有华为智选车载智慧屏,由于时间....
的头像 工程师邓生 发表于 11-05 15:24 304次 阅读
华为智选车载智慧屏将12月上市:有望搭载鸿蒙系统

终于官宣,华为智选车载智慧屏将于12月正式发布

10月30日,华为年度旗舰手机Mate40系列在国内发布,同时亮相的还有华为智选车载智慧屏,由于时间....
的头像 如意 发表于 11-05 15:19 4122次 阅读
终于官宣,华为智选车载智慧屏将于12月正式发布

没有人可以熄灭漫天星火,华为将走向万物互联

上周五,华为“跃见非凡”年度新品发布会如约而至。整场发布会的亮点,自然是拥有强大硬件配置和各项软实力....
的头像 如意 发表于 11-04 16:31 262次 阅读
没有人可以熄灭漫天星火,华为将走向万物互联

万众瞩目!曝华为Mate40系列将全球首升鸿蒙2.0系统

由于众所周知的原因,这次的华为Mate40系列备受关注,其身上搭载的麒麟9000芯片是华为自研手机处理器的绝唱
的头像 鸿蒙视界 发表于 11-04 11:38 304次 阅读
万众瞩目!曝华为Mate40系列将全球首升鸿蒙2.0系统

华为似乎并不担心谷歌收紧安卓系统

 之前外界一直担心,如果谷歌突然收紧安卓系统,对于华为来说,可能又是一次重要的打击,不过现在外界多虑....
的头像 电子魔法师 发表于 11-04 09:47 354次 阅读
华为似乎并不担心谷歌收紧安卓系统

华为智选车载智慧屏即将上市,搭载鸿蒙系统,已合作150多款车

10月30日,华为Mate40系列手机国行版正式发布。同时,华为智能汽车解决方案新品牌“HI”也一并亮相。有关
的头像 鸿蒙视界 发表于 11-02 15:08 1449次 阅读
华为智选车载智慧屏即将上市,搭载鸿蒙系统,已合作150多款车

鸿蒙系统加持的华为Mate50Pro概念设计图

华为Mate40系列国行版已经正式发布了,麒麟9000芯片果然没有令人失望,在某些参数方面甚至比苹果....
的头像 鸿蒙系统HarmonyOS 发表于 11-02 13:33 826次 阅读
鸿蒙系统加持的华为Mate50Pro概念设计图

鸿蒙与 iOS 安卓不同赛道,万物互联中国有巨大机会

10 月 31 日晚间消息,华为近日举行 Mate40 系列国内发布会,推出了智能手机、智能手表、智....
的头像 工程师邓生 发表于 11-01 11:57 403次 阅读
鸿蒙与 iOS 安卓不同赛道,万物互联中国有巨大机会

基于鸿蒙系统+Hi3861的WiFi小车详解

我们得有一套WiFi小车套件,其实也是Hi3861加上电机、循迹模块、超声波等模块。
的头像 电子发烧友网工程师 发表于 11-01 09:41 480次 阅读
基于鸿蒙系统+Hi3861的WiFi小车详解