鸿蒙OpenHarmony【小型系统内核(用户态启动)】子系统开发
用户态启动
用户态根进程启动
根进程是系统第一个用户态进程,进程ID为1,它是所有用户态进程的祖先。
图1 进程树示意图
根进程的启动过程
使用链接脚本将如下init启动代码放置到系统镜像指定位置。
#define LITE_USER_SEC_ENTRY __attribute__((section(".user.entry")))
LITE_USER_SEC_ENTRY VOID OsUserInit(VOID *args)
{
#ifdef LOSCFG_KERNEL_DYNLOAD
sys_call3(__NR_execve, (UINTPTR)g_initPath, 0, 0);
#endif
while (true) {
}
}
c
上述启动代码已在 kernel/liteos_a/kernel/user/src/los_user_init.c 中,g_initPath 根据启动设置的不同,其值为 /dev/shm/init 或 /bin/init。
系统启动阶段,OsUserInitProcess启动init进程。具体过程如下:
- 由内核OsLoadUserInit加载上述代码。
- 创建新的进程空间,启动/bin/init进程。
根进程的职责
- 启动关键系统程序或服务,如交互进程shell。
说明: 在OpenHarmony 中init进程通过读取/etc/init.cfg,根据配置执行指定命令,或启动指定进程。
- 监控回收孤儿进程,清理子进程中的僵尸进程。
用户态程序运行
用户态程序启动有如下常见方式:
-
shell命令启动进程。
OHOS $ exec helloworld OHOS $ ./helloworld OHOS $ /bin/helloworld
以上就是本篇文章所带来的鸿蒙开发中一小部分技术讲解;想要学习完整的鸿蒙全栈技术。可以在结尾找我可全部拿到!
下面是鸿蒙的完整学习路线,展示如下:
除此之外,根据这个学习鸿蒙全栈学习路线,也附带一整套完整的学习【文档+视频】,内容包含如下:
内容包含了:(ArkTS、ArkUI、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、鸿蒙南向开发、鸿蒙项目实战)等技术知识点。帮助大家在学习鸿蒙路上快速成长!
鸿蒙【北向应用开发+南向系统层开发】文档
鸿蒙【基础+实战项目】视频
鸿蒙面经
为了避免大家在学习过程中产生更多的时间成本,对比我把以上内容全部放在了↓↓↓想要的可以自拿喔!谢谢大家观看!