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][topology.md#component-instances] sometimes correlates with Zircon task abstractions, but not always.
The relationship between components and Zircon tasks differs, often as defined by [component runners][capabilities/runners.md] which implement strategies for launching component instances.
- [ELF Runner][elf_runner.md] 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.