Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ALGORITMOS COMPUTACIONAIS
São Luís
2018
THALYSON LUAN MENEZES PEREIRA
IGOR PINHEIRO SERRA
LAISON PEREIRA ALMEIDA
DARLISSON SANTOS DE JESUS
ALGORITMOS COMPUTACIONAIS
Trabalho apresentado ao curso de
Engenharia da Computação para a
obtenção parcial da segunda nota da
disciplina Sistemas Operacionais.
São Luís
2018
1
RESUMO
Para uma boa utilização dos recursos de hardware, é preciso que a utilização do
mesmo seja bem gerenciada, para isso, é necessário que boas técnicas de
programação propicie esta possibilidade. O presente trabalho apresenta as formas
mais elaboradas para tornar isto realidade, usando de diversos métodos que
correspondem às expectativas. Os procedimentos são conhecidos como Algoritmo
da Padaria, Problema dos Filósofos e Algoritmo do Banqueiro e eles servem como
um suporte para que os processos sejam bem favorecidos nas suas determinadas
aplicações.
2
ABSTRACT
For good use of hardware resources, it is necessary that the use of the same is well
managed, for this, it is necessary that good programming techniques provide this
possibility. The present work presents the most elaborate forms to make this reality,
using different methods that correspond to the expectations. The procedures are
known as Bakery Algorithm, Problem of the philosophers and Algorithm of the
Banker and they serve as a support for the processes to be well favored in their
particular applications.
3
SUMÁRIO
1. INTRODUÇÃO……………………………………………………….. 5
2. DESENVOLVIMENTO……………………………………………….. 5
2.1 lgoritmo do Padeiro………………………………………………….. 5
A
2.1.1 Contextualização e Problemática…………………………...…………… 5
2.1.2 Solução…………………………………………………………………. 6
2.2 roblema dos Filósofos……………………………………………….. 7
P
2.2.1 Contextualização e Problemática…...………………………………….... 7
2.2.2 Solução…………………………………………………………………. 7
2.3 Algoritmo do Banqueiro……………………………………………….. 8
2.3.1 Contextualização e Problemática…………………………………...…… 8
2.3.2 Solução…………………………………………………………………. 8
3. CONCLUSÃO……………………………………………………….... 9
4. REFERÊNCIAS………………………………………………………. 9
4
1. INTRODUÇÃO
2. DESENVOLVIMENTO
5
nem sempre é eficiente, fazendo com que haja um uso paralelo de processos na
CPU.
O algoritmo do Padeiro, também conhecido como exclusão mútua, tem como
objetivo a prevenção do problema de condição de disputa em regiões críticas, ou
seja, preservar o uso eficaz do processador, impedimento múltiplos acessos. O
conceito básico que o Algoritmo do Padeiro faz alusão do mundo real é de que o
funcionamento assemelha-se ao ambiente da padaria, em que o cliente espera a
sua vez para realizar sua função, porém, o funcionário (Processador) é que atende
os clientes, no entanto, apenas um por vez, igual à uma fila. Para uma organização
mais eficaz do ambiente, é entregue fichas aos clientes à medida em que entram na
padaria e o que define a hora em que o cliente será atendido é o número da ficha, a
ficha de menor valor será priorizada no atendimento. Após o cliente ser atendido, é
entregue a compra e dá lugar a outro cliente, no caso é o número da ficha acima
dele.
2.1.2 Solução
Em síntese, o mutex tem regras para definir da melhor como os processos
devem se comportar: dois ou mais processos não podem estar simultaneamente
dentro de uma região crítica, ou seja, a forma como se organiza a fila para a
execução do processador, não se podem fazer afirmações em relação à velocidade
e ao número CPU’s, até porque o engasgo pode acontecer até nas melhores
condições caso não seja bem utilizado. Um processo fora da região crítica não deve
causar bloqueio a outro processo, isto é, não deve haver interrupções adjacentes ao
processo em execução e um processo não pode esperar infinitamente para entrar
na região crítica. Em seguida, o algoritmo do padeiro:
escolhendo[i] = true;
num[i] = true;
num[i] = max (num[0] … num[N-1]) + 1
escolhendo[i] = false;
for (j = 0; j < N; j++)
while (escolhendo[j]);
while (num[j] != 0 && (num[j] < num[i] || num[i] == num[j] && j < i));
s = i;
print ( “Processo” , i , s);
num[i] = 0;
6
figura 1 : Região crítica sem proteção, disponível em:
https://edisciplinas.usp.br/pluginfile.php/3061851/mod_resource/content/2/36-Mutex-v27.pdf
7
determinado tempo e depois recoloca os garfos na mesa. Em seguida ele volta a
pensar. O objetivo é chegar a um algoritmo que permita cada filósofo executar as
tarefas de c omer e p
ensar sem nunca ficar travado.
2.2.2 Solução
No problema do Jantar dos filósofos a seção crítica da execução de um
filósofo é a operação de comer, que necessariamente, precisa utilizar os dois garfos.
Iremos representar cada garfo como um mutex (técnica usada em programação
concorrente para evitar que dois processos ou threads tenham acesso
simultaneamente a um recurso compartilhado, acesso esse denominado por seção
crítica). Eles serão controlados e irão trabalhar na forma de um semáforo. Logo
após o filósofo terminar de comer os dois garfos que estavam com ele serão
liberados. O sistema operacional garantirá que outras threads i nteressadas no
recurso liberado sejam escalonadas para executar e tentar pegar os garfos livres.
Dessa forma, o “sistema” não sofrerá problemas de starvation ( morte da operação
por falta de acesso ao recurso), tampouco deadlock ( onde o sistema fica preso na
seção crítica, inoperante).
2.3.2 Solução
Toda solução passa pelo cálculo de “segurança” do banqueiro (SO), ele
utiliza as informações acima expostas para determinar quando é seguro fazer um
empréstimo para determinado cliente (processo). Uma situação é segura quando o
número de unidades de créditos disponíveis (recursos do sistema) é o suficiente
para atender as necessidades de um cliente e de clientes futuros, ou atingir seu
limite máximo, fazendo com que os créditos alocados sejam devolvidos ao
banqueiro . Uma situação é insegura quando não satisfaz a necessidades do cliente
8
e não atinge o limite máximo, caracterizando assim uma situação de deadlock. A
partir de uma requisição de crédito, se o banqueiro determinar a situação como
segura o empréstimo é fornecido, caso contrário o cliente deve esperar (pilha de
processos) e seu empréstimo será realizado em outro momento.
3. CONCLUSÃO
Através desses problemas propostos, desenvolvemos abstrações do que nos
era requerido a fim de elaborarmos soluções mais palpáveis que antes não se
apresentavam dessa forma. Cada problema consta situações chaves que trazem ao
cotidiano rotinas e processos de um sistema operacional. Dessa forma ao
pensarmos em soluções para essas problemáticas também chegamos a soluções
mais concretas em termos computacionais, por exemplo o problema dos filósofos
que traz uma situação bem peculiar e sutilmente nos introduz ao problema de
sincronização de recursos por parte do sistema operacional. Esse tipo de
proposição de problemas se apresentou bastante válida para a solução de
problemas de cunho computacional, em especial ao que tange sistemas
operacionais.
4. REFERÊNCIAS
UEYMA,Jó.Comunicação de Processos.Disponível
em:<http://wiki.icmc.usp.br/images/7/76/Aula06.pdf> Acesso em 21 dez. 2018.