当前位置: 首页 > news >正文

OpenHarmony源码解析之init进程

文章目录

  • 1、简介
  • 2、 详细流程
    • 第1步 上电启动
    • 第2步 创建设备结点,挂载文件目录
    • 第3步 启动FD代持服务
      • 代持原理
      • 发布fdholder
    • 第4步 配置文件加载
      • 服务管理
      • 服务发布
      • FD代持
      • 服务配置
      • ServiceStart
      • ServiceStop
    • 第5步 参数配置空间
      • 参数分类
      • 参数来源
      • trigger 参数
    • 第6步 服务启动
      • pre-init
      • init
      • post-init
        • early-fs 阶段
        • fs 阶段
        • post-fs段
        • late-fs 阶段
        • post-fs-data 阶段
        • boot 段

1、简介

请添加图片描述

系统上电加载内核后,按照以下流程完成系统各个服务和应用的启动:

  1. 内核加载init进程,一般在bootloader启动内核时通过设置内核的cmdline来指定init的位置。
  2. init进程启动后,会挂载tmpfs,procfs,创建基本的dev设备节点,提供最基本的根文件系统。
  3. init也会启动ueventd监听内核热插拔设备事件,为这些设备创建dev设备节点;包括block设备各个分区设备都是通过此事件创建。
  4. init进程挂载block设备各个分区(system,vendor)后,开始扫描各个系统服务的init启动脚本,并拉起各个SA服务。
  5. samgr是各个SA的服务注册中心,每个SA启动时,都需要向samgr注册,每个SA会分配一个ID,应用可以通过该ID访问SA。
  6. foundation是用户程序管理框架及基础服务;由该进程负责应用的生命周期管理。
  7. 由于应用都需要加载JS的运行环境,涉及大量准备工作,因此appspawn作为应用的孵化器,在接收到foundation里的应用启动请求时,可以直接孵化出应用进程。

2、 详细流程

第1步 上电启动

上电之后,一般在b

http://www.lryc.cn/news/612050.html

相关文章:

  • C++ 操作 Redis 客户端
  • Docker swarm 常用的命令集合
  • Pipeline功能实现Redis批处理(项目批量查询点赞情况的应用)
  • 数据结构——双向链表及makefile
  • NineData 新增支持 AWS ElastiCache 复制链路
  • windows搬运文件脚本
  • 互斥锁与条件变量
  • 自然语言处理基础—(1)
  • 深入理解 C++ 中的stdpriority_queue:从原理到实战的高效优先级管理
  • ssm复习
  • 【嵌入式电机控制#26】BLDC:三相模拟采集
  • springboot项目前后端通用下载方法、问题和解决方案
  • PyTorch生成式人工智能(26)——使用PyTorch构建GPT模型
  • AVDTP Media Packet 传输全流程解析:从 SDP 到连接终止
  • 基于AntDesign二次封装table组件
  • 思途AOP学习笔记 0806
  • nginx代理出https,request.getRequestURL()得到http问题解决
  • 界面规范的其他框架实现-列表-layui实现
  • TypeError: crypto$2.getRandomValues is not a function
  • 北大、蚂蚁三个维度解构高效隐私保护机器学习:前沿进展+发展方向
  • AlexNet训练和测试CIFAR10
  • Python金融分析:从基础到量化交易的完整指南
  • 如何定位一个高并发场景下API响应时间从200ms突增到2s的问题
  • 生成模型实战 | Transformer详解与实现
  • 需求链路追踪
  • centos配置java环境变量
  • SpringCloud -- elasticsearch(二)
  • MonoFusion 与 Genie 3
  • 如何快速掌握大数据技术?大四学生用Spark和Python构建直肠癌数据分析与可视化系统
  • Apollo中三种相机外参的可视化分析