O Curso de Graduação em Engenharia de Computação
Por: Welder Carlos • 9/11/2021 • Exam • 1.146 Palavras (5 Páginas) • 67 Visualizações
UNIVERSIDADE FEDERAL DE PELOTAS
Centro de Desenvolvimento Tecnológico
Curso de Graduação em Engenharia de Computação
[pic 1]
Trabalho - Sistemas Operacionais
Welder Carlos Siqueira Matrícula : 18100639
Pelotas, 2021
1 Introdução
O problema desenvolvido neste projeto foi o de um simulador de Agencia Bancaria, utilizando programação concorrente e seus paradigmas, sendo threads, locks, variáveis condicionais e semáforos os principais conceitos utilizados.
A execução simultâ nea de vá rias tarefas do computador pode ser simulada e implementada como fluxos de execu¸c˜ao diferentes chamado de threads que s˜ao criadas por um u´nico programa. As threads s˜ao definidas como tarefas diferentes que um mesmo programa realiza, podendo assim criar uma intera¸c˜ao e dividir processos em tarefas que podem ser executadas concor- rencialmente.
Com o uso de diferentes tarefas se relacionando, pode-se criar v´arios programas com um problema de implementa¸c˜ao onde os v´arios fluxos de execu¸c˜ao precisam ser controlados.
Nesse contexto, o objetivo do projeto ´e criar um problema onde existe uma desorganiza¸c˜ao em um sistema, como condi¸c˜oes de corrida. E conseguir desenvolver uma solu¸c˜ao com os recursos aprendidos no decorrer do semestre,.
2 Fundamentação Teórica
Para o desenvolvimento e implementação deste projeto, os principais conceitos utilizados foram:
2.1 Programação concorrente
Na programação concorrente instruções são executadas por diversos processos ou threads simultâneos que cooperam entre si para a realização de uma tarefa, usando entrelaçamento de ações e um processamento simultâneo lógico. Um processo é dito cooperante quando é capaz de afetar ou ser afetado (mudado), pela execução de outro processo. Os processos se relacionam através de troca de mensagens e áreas de memória (variáveis) compartilhadas. Também podem ser chamados de fluxos de execução.
2.2 Condição de Corrida
Condições de corrida são situações onde dois ou mais processos estão acessando dados ou recursos compartilhados e o resultado final do processamento depende de quem executa e quando é executado.
2.3 Threads
A diferença básica entre threads e processos é que um processo não compartilha um mesmo recurso do computador simultaneamente com outro processo, enquanto que uma thread pode compartilhar um mesmo recurso simultaneamente com outras threads (dentro do mesmo processo). Dessa forma, threads são segmentos independentes de um processo em execução e também são as entidades escalonadas para usar a CPU.
2.4 Locks
É um mecanismo de sincronização de processos ou threads, em que processos ou threads devem ser programados de modo que seus efeitos sobre os dados compartilhados sejam equivalentes serialmente, ou seja, é uma ferramenta utilizada para acessar uma variável compartilhada, uma região crítica de memória compartilhada.
2.5Variável Condicional
O processo de utilização de uma variável condicional consiste na criação de uma variável que é utilizada para sinalizar o acesso e liberação de uma thread sobre uma região crítica, ela pode ser usada para indicar uma certa preferência de umas threads em relação a outras.
2.6 Semáforos Semáforos
Sendo estes muito similares aos locks, a diferença está no fato que se forem dados vários unlocks em um mutex e, em sequência, for dado um lock, ele fecha. Já com o semáforo, se der vários up’s, ele vai contando, aumentando as permissões e, depois, quando der um down, só retira uma permissão. Se for utilizado um semáforo de apenas uma permissão e sempre der down e em seguida der up, funcionará igual a um lock
3. Formalizando o Problema
O problema consiste em utilizar Programação Concorrente para
simular o atendimento de um gerente de banco, considerando as
seguintes características:
- O local possui N cadeiras para espera e uma cadeira para o atendimento com o gerente.
- Se o gerente não tem cliente para atender, ele vai ate uma sala reservada e fica tomando café [em outras palavras, fica sem fazer nada de útil e não consome os recursos do trabalho].
- Quando chega um cliente, ele chama o gerente [somente nesse momento o gerente retorna a ativa].
- O tempo de atendimento de cada cliente varia conforme complexidade das solicitações [por exemplo, na simulação, alguns clientes podem necessitar de atendimento por 5 segundos e outros podem necessitar 12 segundos].
...