Process

toc
 * Home * Programming * Process**

A **Process** is an [|instance] of a computer program, containing the program code being or about to be executed and its data in memory. A process owns ressources such one or more processors if running, and memory, including descriptors of allocated resources, such as [|file descriptors] or [|handles] for data sources and sinks, usually all provided by the [|operating system]. [|Multitasking] operating systems allow the simultaneous execution of multiple threads within one process, sharing all its common resources. Further, processes may [|spawn] or [|fork] [|child processes] who inherit most of the attributes from its parent, such as open files, but otherwise have their own memory for data, heap and stack.

=Process States=
 * [[image:http://upload.wikimedia.org/wikipedia/commons/thumb/8/83/Process_states.svg/600px-Process_states.svg.png link="https://en.wikipedia.org/wiki/File:Process_states.svg"]] ||
 * Seven [|process states] in a [|State diagram] ||

=Parallel Search= In Parallel search, multiple threads within one process are more common, because they are easier to debug as well as implement, provided the program does not already have lots of global variables. Processes are favored by some because the need to explicitly share memory makes subtle bugs easier to avoid. Also, in processes, the extra argument to most functions is not needed.

=See also=
 * Parallel Search
 * Program
 * Sequential Logic
 * Shared Hash Table
 * Thread

=Forum Posts=
 * [|Re: Stormx is this a Crafty Clone??] by Sean Empey, CCC, May 25, 2004 » Windows
 * [|threads vs processes] by Robert Hyatt, CCC, July 16, 2008
 * [|threads vs processes again] by Robert Hyatt, CCC, August 05, 2008
 * [|Weird Windows / WinBoard behavior] by Harm Geert Muller, CCC, September 15, 2016 » WinBoard, Windows
 * [|Crashing engines (Linux)] by Harm Geert Muller, CCC, September 18, 2016 » Linux, XBoard
 * [|Core behaviour] by Ed Schroder, CCC, June 28, 2017 » Engine Testing

=External Links=
 * [|Process (computing) from Wikipedia]
 * [|Parent process from Wikipedia]
 * [|Child process from Wikipedia]
 * [|Orphan process from Wikipedia]
 * [|Zombie process from Wikipedia]
 * [|Process state from Wikipedia]
 * [|Context switch from Wikipedia]
 * [|Processor affinity from Wikipedia]
 * [|exit (operating system) from Wikipedia]
 * [|Process management (computing) from Wikipedia]
 * [|Inter-process communication from Wikipedia]
 * [|Shared memory from Wikipedia]
 * [|Central processing unit from Wikipedia]
 * [|Multiprocessing from Wikipedia]

Posix
> [|Pstree from Wikipedia] > [|kill (command) from Wikipedia]
 * [|Process group from Wikipedia]
 * [|Fork (operating system) from Wikipedia]
 * [|Fork bomb from Wikipedia]
 * [|ps (Unix) from Wikipedia]

Windows
> [|Creating Processes] > [|Creating a Child Process with Redirected Input and Output]
 * [|Using Processes and Threads], [|Windows Desktop Development]
 * [|Processes and Threads, MSDN]
 * [|Processes, Threads, and Jobs] (pdf) from [|Microsoft® Windows® Internals, Fourth Edition: Windows 2000, Windows XP, and Windows Server 2003] by [|David Solomon] and [|Mark Russinovich]
 * [|Windows Task Manager from Wikipedia]

C++

 * [|QProcess | Documentation | Qt Developer Network]
 * [|Chapter 1. Boost.Process]
 * [|Brief Review to C++ / Process / Thread] (pdf)

Java

 * [|Processes and Threads (The Java™ Tutorials > Essential Classes > Concurrency)]

Misc

 * [|Process (disambiguation) from Wikipedia]
 * [|Processing (programming language) from Wikipedia]
 * [|Signal processing from Wikipedia]
 * [|Process (science) from Wikipedia]
 * [|Process control from Wikipedia]

=References= =What links here?= include page="Process" component="backlinks" limit="80"
 * Up one Level**