Trabalho
O conceito de concorrência é o princípio básico par a o projeto e a implementação dos sistemas multiprogramáveis. Os sistemas multiprogramáveis surgiram a partir de limitações existentes nos Sistemas Operacionais monoprogramáveis. Neste tipo de sistema, os recursos computacionais como processador, memória e dispositivos de E/S eram utilizados de maneira pouco eficiente, limitando o desempenho destas arquiteturas. Muitos destes recursos de alto custo permaneciam muitas vezes ociosos por longos períodos de tempo.
Nos sistemas monoprogramáveis, somente um programa pode estar em execução por vez, permanecendo o processador dedicado exclusivamente a uma tarefa. Outro aspecto a ser considerado é a subutilização da memória principal. Um programa que não ocupe totalmente a memória ocasiona a existência de áreas livres sem utilização. Nos sistemas multiprogramáveis, vários programas podem estar residentes em memória, concorrendo pela utilização do processador. Dessa forma, quando um programa solicita uma operação de E/S, outros programas poderão utilizar o processador. Nesse caso, a CPU permanece menos tempo ociosa e a memória principal é utilizada de forma mais eficiente, pois existem vários programas residentes se revezando na utilização do processador.
A utilização concorrente da CPU deve ser implementada de maneira que, quando um programa perde o uso do processador e depois retoma para continuar sua execução, seu estado deve ser idêntico ao do momento em que foi interrompido. O programa deverá continuar sua execução exatamente na instrução seguinte àquela em que havia parado, aparentando ao usuário que nada aconteceu.
Durante a execução de um programa, alguns eventos inesperados podem