Content deleted Content added
→Multiprogramming: unclear why the article starts from describing re-entrant programs; 'concurrent execution' definition and explanation seem poorly phrased |
A multiprogramming or multitasking O.S. is a Operating System that can execute many processes concurrently. Added Operating before system for disambiguition. |
||
(47 intermediate revisions by 37 users not shown) | |||
Line 2:
{{OS}}
A process is a program in execution, and an integral part of any modern-day [[operating system]] (OS). The OS must allocate resources to [[process (computing)|processes]], enable processes to share and exchange information, protect the resources of each process from other processes and enable synchronization among processes. To meet these requirements,
== Multiprogramming ==
In any modern operating system, there can be more than one instance of a [[computer program|program]] loaded in memory at the same time. For example, more than one user
A [[multiprogramming]] or [[Computer multitasking|multitasking]]
There are two
# The process issues a [[system call]] (sometimes called a ''software [[interrupt]]''); for example, an I/O request occurs requesting to access a file on a hard disk.
# A hardware [[interrupt]] occurs; for example, a key was pressed on the keyboard, or a timer runs out (used in [[preemption (computing)|
The stopping of one process and starting (or restarting) of another process is called a [[context switch]] or context change. In many modern operating systems, processes can consist of many sub-processes. This introduces the concept of a ''[[thread (computer science)|thread]]''. A thread may be viewed as a ''sub-process''; that is, a separate, independent sequence of execution within the code of one process. Threads are becoming increasingly important in the design of distributed and [[client–server]] systems and in software run on [[Parallel computing|multi-processor]] systems.
==How multiprogramming increases efficiency==
A common trait observed among processes associated with most computer programs
: ''t''<sub>uni</sub> = ''t''<sub>1</sub> + ''t''<sub>2</sub> + ... + ''t''<sub>''N''</sub>.
Line 27:
where
''t''<sub>''i'' (processor)</sub> is the time process ''i'' spends using the CPU, and ''t''<
In fact, usually, the sum of all the processor time, used by ''N'' processes, rarely exceeds a small fraction of the time to execute any one of the processes;
: <math>\sum_{j=1}^{N} t_{j \, (\mathrm{processor})} < t_{i \, (\mathrm{execution}\!)}</math>
Therefore, in uni-programming systems, the processor
: ''t''<sub>multi</sub> = max(''t''<sub>1</sub>, ''t''<sub>2</sub>, ..., ''t''<sub>''N''</sub>)
Line 40 ⟶ 39:
== Process creation ==
{{Original research|section|date=November 2023}}
Operating systems need some ways to create processes. In a very simple system designed for running only a single application (e.g., the controller in a microwave oven), it may be possible to have all the processes that will ever be needed
There are four principal events that cause a process to be created:
* System initialization.
* Execution of process creation system call by a running process.
* A user request to create a new process.
* Initiation of a batch job.
When an operating system is booted,
Process creation in UNIX and Linux
Process creation in Windows is done through the CreateProcessA() system call. A new process runs in the security context of the calling process, but otherwise runs independently of the calling process. Methods exist to alter the security context in which a new processes runs. New processes are assigned identifiers by which
== Process termination ==
Line 56 ⟶ 55:
There are many reasons for process termination:
* Batch job issues halt instruction
* User logs off
* [[Process (computing)|Process]] executes a service request to terminate
* Error and fault conditions
Line 63 ⟶ 62:
* Memory unavailable
* Bounds violation; for example: attempted access of (non-existent) 11th element of a 10-element array
* Protection error; for example: attempted to write to a read-only file
* [[Arithmetic]] error; for example: attempted division by zero
* Time overrun; for example: the process waited longer than a specified maximum for an event
* [[I/O]] failure
* Invalid instruction; for example: when a process tries to execute data (text)
Line 76 ⟶ 75:
== Two-state process management model ==
{{original research|date=November 2023}}
The [[operating system]]'s principal responsibility is
From this model, we can identify some design elements of the OS:
* The need to represent, and keep track of each process
* The state of a process
* The queuing of ''NON RUNNING'' processes
Line 86 ⟶ 85:
{{original research|date=November 2023}}
Although the two-state process management model is a perfectly valid design for an operating system, the absence of a ''BLOCKED'' state means that the [[central processing unit|processor]] lies idle when the active process changes from CPU cycles to [[I/O]] cycles. This design does not make efficient use of the processor. The three-state process management model is designed to overcome this problem, by introducing a new state called the ''BLOCKED'' state. This state describes any process which is waiting for an I/O event to take place. In this case, an I/O event can mean the use of some device or a signal from another process. The three states in this model are:
* ''RUNNING:'' The process that is currently being executed.
* ''
* ''
At any instant, a process is in one and only one of the three states. For a single processor computer, only one process can be in the ''RUNNING'' state at any one instant. There can be many processes in the ''READY'' and ''BLOCKED'' states, and each of these states will have an associated queue for processes.
Processes entering the system must go initially into the ''READY'' state, and processes can only enter the ''RUNNING'' state via the ''READY'' state. Processes normally leave the system from the ''RUNNING'' state. For each of the three states, the process occupies space in the main memory. While the reason for most transitions from one state to another might be obvious, some may not be so clear.
* '''''RUNNING → READY:''''' The most common reason for this transition is that the running process has reached the maximum allowable time for uninterrupted execution; i.e. time-out occurs. Other reasons can be the imposition of priority levels as determined by the [[scheduling (computing)|scheduling]] policy used for the Low Level [[Scheduling (computing)|Scheduler]], and the arrival of a higher priority process into the READY state.▼
* '''''RUNNING → BLOCKED:''''' A process is put into the ''BLOCKED'' state if it requests something for which it must wait. A request to the OS is usually in the form of a system call, (i.e. a call from the running process to a function that is part of the OS code). For example, a process might become ''BLOCKED'' if it is requesting a file from disk or a saving a section of code or data from memory to a file on disk.▼
▲*'''''RUNNING → READY''''' The most common reason for this transition is that the running process has reached the maximum allowable time for uninterrupted execution; i.e. time-out occurs. Other reasons can be the imposition of priority levels as determined by the [[scheduling (computing)|scheduling]] policy used for the Low Level [[Scheduling (computing)|Scheduler]], and the arrival of a higher priority process into the READY state.
▲*'''''RUNNING → BLOCKED''''' A process is put into the ''BLOCKED'' state if it requests something for which it must wait. A request to the OS is usually in the form of a system call, (i.e. a call from the running process to a function that is part of the OS code). For example, requesting a file from disk or a saving a section of code or data from memory to a file on disk.
== Process description and control ==
Each [[process (computing)|process]] in the system is represented by a data structure called a [[Process control block|Process Control Block]] (PCB), or Process Descriptor in [[Linux]].
Line 112 ⟶ 109:
== Processor modes ==
{{Main|CPU modes}}
{{Original research|section|reason=The terminology seems inconsistent. The text appears to imply that it refers to x86 at least partially, but uses terms not commonly used in application to this architecture. The claim that OS changes protection mode on software interrupt is likely incorrect.|date=November 2023}}
Contemporary [[Processor (computing)|processors]] incorporate a mode bit to define the execution capability of a program in the processor. This bit can be set to ''[[kernel mode]]'' or ''[[user mode]]''. Kernel mode is also commonly referred to as ''[[supervisor mode]]'', ''monitor mode'' or ''[[ring 0 (computer security)|ring 0]]''.
In kernel mode, the processor can execute every instruction in its hardware repertoire, whereas in user mode, it can only execute a subset of the instructions. Instructions that can be executed only in kernel mode are called kernel, privileged, or protected instructions to distinguish them from the user mode instructions. For example, [[I/O]] instructions are privileged.
== The Kernel system concept ==
The critical parts of the [[operating system|OS]] run in [[kernel mode]], while other [[software]] (such as system utilities and application programs) run in [[user mode]]. This serves as the fundamental distinction between the OS and other [[system software]]. The part of the system executing in the kernel mode is called the [[kernel (computer science)|kernel]], or nucleus, of the OS. The kernel is designed as trusted software, meaning it implements protection mechanisms that cannot be covertly modified by untrusted software running in user mode. Extensions to the OS operate in [[user mode]], so the core functionality of the OS does not depend on these extensions for its correct operation.
A key design decision for any OS function is determining whether it should be implemented in the kernel. If implemented in the kernel, it operates in kernel mode, gaining access to other parts of the kernel and being trusted by them. Conversely, if the function executes in [[user mode]], it lacks access to kernel data structures but requires minimal effort to invoke. Although functions implemented in the kernel can be straightforward, the [[trap (computing)|trap mechanism]] and authentication process required during the call can be relatively resource-intensive. While the kernel code itself runs efficiently, the overhead associated with the call can be significant. This is a subtle but important distinction.
== Requesting system services ==
There are two techniques by which a program executing in user mode can request the [[kernel (computer science)|kernel]]'s services:
* [[System call]]
* [[Message passing]]
[[Operating systems]] are designed with one or the other of these two facilities, but not both. First, assume that a [[user mode|user process]] wishes to invoke a particular target system function. For the [[system call]] approach, the user process uses the trap instruction. The idea is that the system call should appear to be an ordinary procedure call to the application program; the [[operating system|OS]] provides a library of user functions with names corresponding to each actual system call. Each of these stub functions contains a trap to the OS function. When the application program calls the stub, it executes the trap instruction, which switches the [[CPU]] to [[kernel mode]], and then branches (indirectly through an OS table{{Technical inline|date=November 2023}}), to the entry point of the function which is to be invoked. When the function completes, it switches the processor to [[user mode]] and then returns control to the user process
In the [[message passing]] approach, the user process constructs a message
The distinction between the two approaches has important consequences regarding the
== See also ==
* [[Process isolation]]
== References ==
<references />
== Sources ==
Line 145 ⟶ 143:
* Multiprogramming, Process Description and Control
* Operating Systems – A Modern Perspective, Gary Nutt, Addison Wesley, (2nd Edition, 2001).
* Process Management Models, Scheduling, UNIX System V Release 4:
* Modern Operating Systems, Andrew Tanenbaum, Prentice Hall, (2nd Edition, 2001).
* Operating System Concepts, Silberschatz & Galvin & Gagne (
{{Operating System}}
|