Escolar Documentos
Profissional Documentos
Cultura Documentos
1/23 2/23
Concorrência Concorrência
Multiprogramação Ambiente que admite a execução paralela ou
Processos (cap. 3) concorrente de vários processos
Sub-processos Ocorrem eventos em que mais de um processo
requisita um mesmo recurso.
Threads (cap. 4)
O recurso não pode ser distribuído para mais de
Fluxo de instruções independentes de um programa
um processo ao mesmo tempo
Facilitam execução paralela de atividades
Providências devem ser tomadas de forma a evitar
concorrentes dentro de um processo inconsistências que venham a prejudicar a execução
dos processos.
NOTA: processo ~ thread
3/23 4/23
Exemplo Exemplo
P1 invoca echo() e é interrompido imediatamente após
a conclusão da função input(); suponha que x tenha
sido o caractere digitado, que agora está armazenado
na variável in.
P2 é despachado e também invoca echo(); suponha
que y seja digitado (in recebe y), sendo então exibido
no dispositivo de saída.
P1 retoma a posse do processador; o caracter exibido
não é o que foi digitado (x), pois ele foi sobreposto por
y na execução do processo P2.
Conclusão: o caracter y é exibido 2 vezes.
9/23 10/23
13/23 14/23
15/23 16/23
Monitores
Introduz uma estrutura especial chamada
variável de condição [Deitel 6.2.1] com as seguintes
operações:
wait(condição):
libera o lock do monitor e coloca o proc. para dormir;
quando o processo acorda, ele tenta re-adquirir o lock do
monitor imediatamente.
signal(condição):
acorda um dos processos que estão esperando pela
variável de condição;
o processo que executa o signal sai do monitor
imediatamente;
se nenhum processo estiver esperando, nada acontece;
se mais de um estiver esperando, apenas um deles,
determinado pelo escalonador do S.O. (FIFO, por
exemplo), é acordado.
23/23