Skip to content

Latest commit

 

History

History
125 lines (106 loc) · 5.38 KB

File metadata and controls

125 lines (106 loc) · 5.38 KB

Zircon 基础知识

<<../../_common/intro/_zircon_intro.md>>

<<../../_common/intro/_zircon_syscall.md>>

<<../../_common/intro/_zircon_processes.md>>

<<../../_common/intro/_zircon_ipc.md>>

练习:作业(job)与进程(process)

让我们在运行中的系统上探索这些基础概念。 在本练习中,您将看到作业与进程间是如何交互以形成一棵树的。

<<../_common/_start_femu.md>>

导出进程列表

连接到设备命令行,并使用 ps 命令导出运行中的作业和进程的列表。

fx shell ps

下面是一个截断的输出样例:

TASK                     PSS PRIVATE  SHARED   STATE NAME
j: 1027               507.8M  507.4M                 root
  p: 1061             564.4k    564k     36k         bin/bootsvc
  p: 1150            4264.4k   4264k     36k         bin/component_manager
  j: 1479             228.4k    228k
    p: 1583           228.4k    228k     36k         pwrbtn-monitor.cm
  j: 1484             532.4k    532k
    p: 1599           532.4k    532k     36k         svchost.cm
  j: 1544             402.4k    304k
    p: 1633           402.4k    304k    232k         netsvc.cm
  j: 1681             296.4k    296k
    p: 1733           296.4k    296k     36k         console-launcher.cm
  j: 1799            7232.4k   7232k
    p: 1825          7232.4k   7232k     36k         archivist.cm
  j: 1927             660.4k    660k
    p: 1955           660.4k    660k     36k         base-resolver.cm
  j: 2072            1016.4k   1016k
    p: 2088          1016.4k   1016k     36k         driver_manager.cm
  j: 2239             348.4k    348k
    p: 2252           348.4k    348k     36k         device-name-provider.cm
  j: 2364             275.3M  275.3M
    p: 2380          1012.4k   1012k     36k         fshost.cm
    p: 6544           252.1M  252.1M     36k         /pkg/bin/blobfs
    p: 10205         9744.4k   9744k     36k         /pkg/bin/minfs
    p: 10475           12.8M   12.8M     36k         pkgfs

我们暂时关注其中两列:

  • TASK(任务):这一列告诉您每个条目是作业(j)还是进程(p),其后紧接着它的唯一 id。
  • NAME(名称):这一列提供了稍多的详细信息,告诉您正在运行的是系统的哪一部分。

基于之前讨论的内容,我们可以发现一些有趣的事情:

  1. 每个进程都连接到一个父作业。有些作业有多个进程。
  2. 所有作业都能追溯到 root 这个终极作业,形成了一棵树。
  3. 在系统启动时,有一些进程直接在 root 作业中启动。大多数其他进程会在它们自己的父作业中启动。
  4. 在系统启动的初始阶段之后,有许多条目带有 .cm 的扩展名。它们指的是 组件(component)。 您将在稍后了解有关组件的更多知识。
  5. 有些组件是核心服务,它们独立于内核而存在于用户空间,如文件系统(fshost.cm)和驱动(driver_manager.cm)。

接下来,我们将探索 Zircon 如何奠定了 Fuchsia 安全模型的基础。

附加题:Fuchsia 启动

探索运行中的进程树也是了解 Fuchsia 设备启动过程的好方法。 请稍微花些时间回顾一下 设备启动,并比较初始启动过程与模拟器上 ps 的输出是否相符。