HarmonyOS初探

0 阅读1分钟

内核种类

  • LiteOS-M:面向 资源极度受限 的微型设备(如无屏传感器),强调 极低功耗和最小内存占用
  • LiteOS-A:面向 需要图形交互或复杂功能 的小型设备(如智能面板、手持终端),提供 更强的硬件抽象和扩展能力

LiteOS启动过程

我们只针对LiteOS-A来分析

内核态启动

1.汇编启动阶段

完成CPU初始化设置,建立虚实地址映射,设置系统栈,清理BSS,调用C语言main函数

2.C语言启动阶段

调用OsMain函数开始调度,OsMain用于内核基础初始化和架构,板级初始化等。
其整体由内核启动框架主导初始化流程。
内核启动框架在执行过程中可接受外部模块注册启动的任务

用户态启动

1.启动用户进程

在系统启动阶段OsUserInitProcess启动Init进程(1号进程);启动1号进程是由内核的OSLoadUserInit执行bin/shell创建新的进程空间,启动init进程。
init-> 启动关键系统程序或服务
init-> 监听孤儿进程/回收进程
用户态程序可以使用shell启动进程,也可以通过POSIX接口fork函数创建新的进程

进程管理

LiteOS-A内核提供的进程模块主要用于实现用户态进程的隔离,其中内核态被视为一个进程空间;用户态进程的切换和通信由进程模块处理。
A内核的进程采用抢占式调度【高优先级优先+同优先级时间片轮转】,每一个用户态进程均拥有自己独立的进程空间,相互之间不可见。用户态根进程init由内核创建,其他用户态进程再由init进程fork而来。