# Components vs. processes

This document explains how the concept of components differs from processes and
related concepts.

The Zircon kernel defines [processes] and other [task objects] that are common
in modern operating systems. The abstraction of [component instances] sometimes
correlates with Zircon task abstractions, but not always.

## Examples

The relationship between components and Zircon tasks differs, often as defined
by [component runners], which implement strategies for launching component
instances.

-   [ELF Runner] launches components by creating a new [job] that contains a
    process that's created from a given executable file in ELF format.
-   Dart Runner launches a new Dart isolate in a Dart Virtual Machine. A Dart
    VM is implemented as a process that can host one or more Dart isolate.
    Dart isolates execute on [threads], but don't necessarily have an
    assigned thread (this is a VM implementation detail).
-   Web runner can launch one or more web pages as components, and host them
    the same web engine container or in separate containers per its isolation
    policy. Web pages are typically isolated by being hosted in separate
    processes.

[processes]: /docs/reference/kernel_objects/process.md
[task objects]: /docs/reference/kernel_objects/objects.md#tasks
[component instances]: /docs/concepts/components/v2/topology.md#component-instances
[component runners]: /docs/concepts/components/v2/capabilities/runner.md
[ELF Runner]: /docs/concepts/components/v2/elf_runner.md
[job]: /docs/reference/kernel_objects/job.md
[threads]: /docs/reference/kernel_objects/thread.md
