O problema dos leitores e escritores
LEITORES E
ESCRITORES
INTRODUÇÃO
• Devido
à evolução da tecnologia, principalmente no mundo computacional, ocorreu a necessidade de novas formas de executar processos nos sistemas operacionais, com o intuito de ganho em processamento. A partir dessas evoluções nos processos nasceu um conceito caracterizado como thread.
THREADS
• Literalmente thread significa, em português, linha de execução.
Conceitualmente falando, thread é uma forma de um processo dividir-se em duas ou mais tarefas que podem ser executadas simultaneamente. • Um exemplo simples seria um jogo, que pode ser modelado com linhas de execução diferentes, sendo uma para desenho de imagem e outra para áudio. Neste caso, há um thread para tratar rotinas de desenho e outro thread para tratar áudio
THREADS: PROBLEMAS COM O USO
DE THREADS
O uso de threads acarreta alguns problemas como:
• Os de acesso à região crítica
• Dificuldade de implementação
• Dificuldade de depuração do código
• Deadlock e o Starvation
THREADS: PROBLEMAS COM O USO
DE THREADS
• Deadlock:
• Ocorre quando há um impasse e dois ou mais processos ou
threads ficam impedidos de continuar suas execuções, ou seja, ficam bloqueados para sempre.
• Starvation:
• Ocorre quando um processo ou thread nunca é executado, pois processos ou threads de maior importância sempre tomam a posse do núcleo fazendo com que os de menores prioridades nunca sejam executados.
APRESENTANDO O PROBLEMA DOS
LEITORES E ESCRITORES
• As dependências de dados na execução de processos ou threads
caracterizaram diversos tipos de problemas. Um deles é o problema conhecido como problema dos leitores e escritores.
• O problema dos Leitores e Escritores modela o acesso a uma
base de dados, onde basicamente alguns processos ou threads estão lendo os dados da região crítica, somente querendo obter a informação da região crítica, que é o caso dos leitores, e outros processos ou threads tentando alterar a informação da região crítica, que é o caso