HarmonyOS 轻内核进程状态转换

本文详细介绍了HarmonyOS内核中的进程管理机制,包括进程的创建、调度策略、优先级以及状态转换。HarmonyOS采用抢占式调度,支持时间片轮转和FIFO,进程有32个优先级,用户进程可配置22个。进程状态包括初始化、就绪、运行、阻塞和僵尸态,通过不同状态的转换实现进程的控制与协作。此外,还阐述了进程如何在不同状态间转换,如运行态到阻塞态、就绪态到运行态等。
摘要由CSDN通过智能技术生成

从系统的角度看,进程是资源管理单元。进程可以使用或等待 CPU、使用内存空间等系统资源,并独立于其它进程运行。HarmonyOS 内核的进程模块可以给用户提供多个进程,实现了进程之间的切换和通信,帮助用户管理业务程序流程。这样用户可以将更多的精力投入到业务功能的实现中。
HarmonyOS 内核中的进程采用抢占式调度机制,支持时间片轮转调度方式和FIFO 调度机制。
HarmonyOS 内核的进程一共有 32 个优先级(0-31),用户进程可配置的优先级有 22 个(10-31),最高优先级为 10,最低优先级为 31。
高优先级的进程可抢占低优先级进程,低优先级进程必须在高优先级进程阻塞或结束后才能得到调度。
每一个用户态进程均拥有自己独立的进程空间,相互之间不可见,实现进程间隔离。
用户态根进程 Init 由内核态创建,其它用户态进程均由 Init 进程 fork 而来。
进程状态说明:
初始化(Init):该进程正在被创建。
• 就绪(Ready):该进程在就绪列表中,等待 CPU 调度。
• 运行(Running):该进程正在运行。
• 阻塞(Pend):该进程被阻塞挂起。本进程内所有的线程均被阻塞时,进程被
阻塞挂起。
• 僵尸态(Zombies):该进程运行结束,等待父进程回收其控制块资源。
在这里插入图片描述

状态转换说明:

Init→Ready:

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

Ready→Running:

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

Running→Pend:

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

Pend→Ready / Pend→Running:

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

Ready→Pend:

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

Running→Ready:

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

  1. 有更高优先级的进程创建或者恢复后,会发生进程调度,此刻就绪列表中最高优先级进程
    变为运行态,那么原先运行的进程由运行态变为就绪态。
  2. 若进程的调度策略为 SCHED_RR,且存在同一优先级的另一个进程处于就绪态,则该进程
    的时间片消耗光之后,该进程由运行态转为就绪态,另一个同优先级的进程由就绪态转为运行态。

Running→Zombies:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道亦无名

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值