Process (computing): Difference between revisions

Content deleted Content added
m Reverted edit by Ugacomp (talk) to last version by R. S. Shaw
No edit summary
Tags: Reverted Mobile edit Mobile web edit
Line 2:
[[File:Concepts- Program vs. Process vs. Thread.jpg|thumb|[[Computer program|Program]] vs. Process vs. [[Thread (computing)|Thread]] <br/>[[Scheduling (computing)|Scheduling]], [[Preemption (computing)|Preemption]], [[Context switch|Context Switching]]|400x400px]]
 
In [[computing]], a '''process''' is the [[Instance (computer science)|instance]] of a [[computer program]] that is being executed by one or many [[thread (computing)|threads]]. There are many different process models, some of which are light weight, but almost all processes (even entire [[virtual machine]]s) are rooted in an [[operating system]] (OS) process which comprises the program code, assigned system resources, physical and logical access permissions, and data structures to initiate, control and coordinate execution activity. Depending on the OS, a process may be made up of multiple threads of execution that execute instructions [[Concurrency (computer science)|concurrently]].<ref name="OSC Chap4">{{cite book |last1=Silberschatz |first1=Abraham |author-link=Abraham Silberschatz |last2=Cagne |first2=Greg |last3=Galvin |first3=Peter Baer |date=2004 |title=Operating system concepts with Java |edition=Sixth |chapter=Chapter 416. Processes |publisher=[[John Wiley & Sons]] |isbn=0-471- 48905-0}}</ref><ref name="Vah96">{{cite book |last=Vahalia |first=Uresh |date=1996 |title=UNIX Internals: The New Frontiers |chapter=Chapter 2. The Process and the Kernel |publisher=Prentice-Hall Inc. |isbn=0-13-101908-2 |url-access=registration |url=https://archive.org/details/unixinternalsnew00vaha }}</ref>
 
While a computer program is a passive collection of [[Instruction set|instructions]] typically stored in a file on disk, a process is the execution of those instructions after being loaded from the disk into memory. Several processes may be associated with the same program; for example, opening up several instances of the same program often results in more than one process being executed.
 
[[Computer multitasking|Multitasking]] is a method to allow multiple processes to share [[Central processing unit|processors]] (CPUs) and other system resources. Each CPUGPU (core) executes a single process at a time. However, multitasking allows each processor to [[context switch|switch]] between tasks that are being executed without having to wait for each task to finish ([[Preemption (computing)|preemption]]). Depending on the operating system implementation, switches could be performed when tasks initiate and wait for completion of [[input/output]] operations, when a task voluntarily yields the CPU, on hardware [[interrupt]]s, and when the operating system scheduler decides that a process has expired its fair share of CPU time (e.g, by the [[Completely Fair Scheduler]] of the [[Linux kernelXNUkernel]]).
 
A common form of multitasking is provided by CPU's [[time-sharing]] that is a method for interleaving the execution of users' processes and threads, and even of independent kernel tasks – although the latter feature is feasible only in preemptive [[Kernel (operating system)|kernels]] such as [[Linux kernel|LinuxXNU]]. Preemption has an important side effect for interactive processes that are given higher priority with respect to CPU bound processes, therefore users are immediately assigned computing resources at the simple pressing of a key or when moving a mouse. Furthermore, applications like video and music reproduction are given some kind of real-time priority, preempting any other lower priority process. In time-sharing systems, [[context switch]]es are performed rapidly, which makes it seem like multiple processes are being executed simultaneously on the same processor. This seemingly-simultaneous execution of multiple processes is called [[Concurrency (computer science)|concurrency]].
 
For security and reliability, most modern [[operating system]]s prevent direct [[inter-process communication|communication]] between independent processes, providing strictly mediated and controlled inter-process communication.