# 调度器 ## 基本概念 OpenHarmony LiteOS-Aå†…æ ¸é‡‡ç”¨äº†é«˜ä¼˜å…ˆçº§ä¼˜å…ˆ + åŒä¼˜å…ˆçº§æ—¶é—´ç‰‡è½®è½¬çš„æŠ¢å å¼è°ƒåº¦æœºåˆ¶ï¼Œç³»ç»Ÿä»Žå¯åŠ¨å¼€å§‹åŸºäºŽreal time的时间轴å‘å‰è¿è¡Œï¼Œä½¿å¾—该调度算法具有很好的实时性。 OpenHarmony 的调度算法将 tickless 机制天然嵌入到调度算法ä¸ï¼Œä¸€æ–¹é¢ä½¿å¾—系统具有更低的功耗,å¦ä¸€æ–¹é¢ä¹Ÿä½¿å¾— tick 䏿–按需å“应,å‡å°‘æ— ç”¨çš„ tick 䏿–å“åº”ï¼Œè¿›ä¸€æ¥æé«˜ç³»ç»Ÿçš„å®žæ—¶æ€§ã€‚ OpenHarmony 的进程调度ç–ç•¥æ”¯æŒ SCHED_RR(时间片轮转),线程调度ç–ç•¥æ”¯æŒ SCHED_RR å’Œ SCHED_FIFO(先进先出)。 OpenHarmony 调度的最å°å•元为线程。 ## è¿è¡Œæœºåˆ¶ OpenHarmony 采用进程优先级队列 + 线程优先级队列的方å¼ï¼Œè¿›ç¨‹ä¼˜å…ˆçº§èŒƒå›´ä¸º0-31,共有32个进程优先级桶队列,æ¯ä¸ªæ¡¶é˜Ÿåˆ—对应一个线程优先级桶队列;线程优先级范围也为0-31,一个线程优先级桶队列也有32个优先级队列。 **图1** 调度优先级桶队列示æ„图  OpenHarmony 在系统å¯åŠ¨å†…æ ¸åˆå§‹åŒ–之åŽå¼€å§‹è°ƒåº¦ï¼Œè¿è¡Œè¿‡ç¨‹ä¸åˆ›å»ºçš„è¿›ç¨‹æˆ–çº¿ç¨‹ä¼šè¢«åŠ å…¥åˆ°è°ƒåº¦é˜Ÿåˆ—ï¼Œç³»ç»Ÿæ ¹æ®è¿›ç¨‹å’Œçº¿ç¨‹çš„优先级åŠçº¿ç¨‹çš„æ—¶é—´ç‰‡æ¶ˆè€—情况选择最优的线程进行调度è¿è¡Œï¼Œçº¿ç¨‹ä¸€æ—¦è°ƒåº¦åˆ°å°±ä¼šä»Žè°ƒåº¦é˜Ÿåˆ—ä¸Šåˆ é™¤ï¼Œçº¿ç¨‹åœ¨è¿è¡Œè¿‡ç¨‹ä¸å‘ç”Ÿé˜»å¡žï¼Œä¼šè¢«åŠ å…¥åˆ°å¯¹åº”çš„é˜»å¡žé˜Ÿåˆ—ä¸å¹¶è§¦å‘一次调度,调度其它线程è¿è¡Œã€‚如果调度队列上没有å¯ä»¥è°ƒåº¦çš„线程,则系统就会选择KIdle进程的线程进行调度è¿è¡Œã€‚ **图2** 调度æµç¨‹ç¤ºæ„图  ## 开呿Œ‡å¯¼ ### 接å£è¯´æ˜Ž | 接å£**åç§°** | æè¿° | | -------- | -------- | | LOS_Schedule | 触å‘系统调度 | | LOS_GetTaskScheduler | èŽ·å–æŒ‡å®šä»»åŠ¡çš„è°ƒåº¦ç–ç•¥ | | LOS_SetTaskScheduler | 设置指定任务的调度ç–ç•¥ | | LOS_GetProcessScheduler | èŽ·å–æŒ‡å®šè¿›ç¨‹çš„调度ç–ç•¥ | | LOS_SetProcessScheduler | è®¾ç½®æŒ‡å®šè¿›ç¨‹çš„è°ƒåº¦å‚æ•°ï¼ŒåŒ…括优先级和调度ç–ç•¥ | ### 开呿µç¨‹ >  **说明:** > 系统å¯åЍåˆå§‹åŒ–阶段,ä¸å…许触å‘调度。