1# Process
2
3## NAME
4
5process - Process abstraction
6
7## SYNOPSIS
8
9A zircon process is an instance of a program in the traditional
10sense: a set of instructions which will be executed by one or more
11threads, along with a collection of resources.
12
13## DESCRIPTION
14
15The process object is a container of the following resources:
16
17+ [Handles](../handles.md)
18+ [Virtual Memory Address Regions](vm_address_region.md)
19+ [Threads](thread.md)
20
21In general, it is associated with code which it is executing until it is
22forcefully terminated or the program exits.
23
24Processes are owned by [jobs](job.md) and allow an application that is
25composed by more than one process to be treated as a single entity, from the
26perspective of resource and permission limits, as well as lifetime control.
27
28### Lifetime
29A process is created via `zx_process_create()` and its execution begins with
30`zx_process_start()`.
31
32The process stops execution when:
33+ the last thread is terminated or exits
34+ the process calls  ``zx_process_exit()``
35+ the parent job terminates the process
36+ the parent job is destroyed
37
38The call to `zx_process_start()` cannot be issued twice. New threads cannot
39be added to a process that was started and then its last thread has exited.
40
41## SYSCALLS
42
43+ [process_create](../syscalls/process_create.md) - create a new process within a job
44+ [process_read_memory](../syscalls/process_read_memory.md) - read from a process's address space
45+ [process_start](../syscalls/process_start.md) - cause a new process to start executing
46+ [process_write_memory](../syscalls/process_write_memory.md) - write to a process's address space
47+ [process_exit](../syscalls/process_exit.md) - exit the current process
48
49<br>
50
51+ [job_create](../syscalls/job_create.md) - create a new job within a parent job
52
53<br>
54
55+ [vmar_map](../syscalls/vmar_map.md) - Map memory into an address space range
56+ [vmar_protect](../syscalls/vmar_protect.md) - Change permissions on an address space range
57+ [vmar_unmap](../syscalls/vmar_unmap.md) - Unmap memory from an address space range
58