Concurrency in Operating System
Concurrency is the execution of multiple instruction sequences at the same time. It happens in the operating system when there are several process threads running in parallel. The running process threads always communicate with each other through shared memory or message passing. Concurrency results in the sharing of resources resulting in problems like deadlocks and resource starvation.
It helps in techniques like coordinating the execution of processes, memory allocation, and execution scheduling for maximizing throughput.
There are several motivations for allowing concurrent execution
- Physical resource Sharing: Multiuser environment since hardware resources are limited
- Logical resource Sharing: Shared file (same piece of information)
- Computation Speedup: Parallel execution
- Modularity: Divide system functions into separation processes
Relationship Between Processes of Operating System
The Processes executing in the operating system is one of the following two types:
- Independent Processes
- Cooperating Processes
Its state is not shared with any other process.
- The result of execution depends only on the input state.
- The result of the execution will always be the same for the same input.
- The termination of the independent process will not terminate any other.
Its state is shared along other processes.
- The result of the execution depends on relative execution sequence and cannot be predicted in advanced(Non-deterministic).
- The result of the execution will not always be the same for the same input.
- The termination of the cooperating process may affect other process.
Process Operation in Operating System
Most systems support at least two types of operations that can be invoked on a process creation and process deletion.
A parent process and then children of that process can be created. When more than one process is created several possible implementations exist.
- Parent and child can execute concurrently.
- The Parents waits until all of its children have terminated.
- The parent and children share all resources in common.
- The children share only a subset of their parent’s resources.
- The parent and children share no resources in common.
A child process can be terminated in the following ways:
- A parent may terminate the execution of one of its children for a following reasons:
- The child has exceeded its allocation resource usage.
- The task assigned to its child is no longer required.
- If a parent has terminated than its children must be terminated.
Principles of Concurrency
Both interleaved and overlapped processes can be viewed as examples of concurrent processes, they both present the same problems.
The relative speed of execution cannot be predicted. It depends on the following:
- The activities of other processes
- The way operating system handles interrupts
- The scheduling policies of the operating system
Problems in Concurrency
- Sharing global resources: Sharing of global resources safely is difficult. If two processes both make use of a global variable and both perform read and write on that variable, then the order in which various read and write are executed is critical.
- Optimal allocation of resources: It is difficult for the operating system to manage the allocation of resources optimally.
- Locating programming errors: It is very difficult to locate a programming error because reports are usually not reproducible.
- Locking the channel: It may be inefficient for the operating system to simply lock the channel and prevents its use by other processes.
Advantages of Concurrency
- Running of multiple applications: It enable to run multiple applications at the same time.
- Better resource utilization: It enables that the resources that are unused by one application can be used for other applications.
- Better average response time: Without concurrency, each application has to be run to completion before the next one can be run.
- Better performance: It enables the better performance by the operating system. When one application uses only the processor and another application uses only the disk drive then the time to run both applications concurrently to completion will be shorter than the time to run each application consecutively.
Drawbacks of Concurrency
- It is required to protect multiple applications from one another.
- It is required to coordinate multiple applications through additional mechanisms.
- Additional performance overheads and complexities in operating systems are required for switching among applications.
- Sometimes running too many applications concurrently leads to severely degraded performance.
Issues of Concurrency
- Non-atomic: Operations that are non-atomic but interruptible by multiple processes can cause problems.
- Race conditions: A race condition occurs of the outcome depends on which of several processes gets to a point first.
- Blocking: Processes can block waiting for resources. A process could be blocked for long period of time waiting for input from a terminal. If the process is required to periodically update some data, this would be very undesirable.
- Starvation: It occurs when a process does not obtain service to progress.
- Deadlock: It occurs when two processes are blocked and hence neither can proceed to execute.
Share your thoughts in the comments
Please Login to comment...