What are the major challenges that an OS designer faces in supporting efficient concurrency that she would not face if the OS could just run one program at a time?
- Concurrency of programs and processes which are executing are a must have on the OS of today. And thus, to implement this concurrency and so that the programs and processes behave concurrently in the system, we have major challenges to implement. Let's talk about a processor in a OS executes one instruction at a time. Here there will be no challenges since the processor is serially executing each program or process at a time.
After the processor is done with executing a program or process it will move to the next one. And thus there will be no problems. Where in multi-processor systems and also in single processor systems the concurrency has to be handled nowadays by interleaving the execution of different tasks. This interleaving of the tasks with one another and the interactions are complex and thus achieving concurrency is complex.
Concurrent use of the shared resources can lead to deadlocks which has to be handled by the OS. Concurrent use of the processor to support parallel execution of programs for coordinating their execution is a problem and has to be very precise, otherwise the OS will be faulty and won't be able to execute programs. The main problems are deadlocks, co-ordination of the execution, data exchange between processes and OS, memory allocations and process scheduling. Above all of this in a OS which supports concurrency we should expect that it reduces the response time and provides maximum throughput for the program execution.