universidade estadual de ponta grossa setor de ciências

Propaganda
UNIVERSIDADE ESTADUAL DE PONTA GROSSA
SETOR DE CIÊNCIAS AGRÁRIAS E DE TECNOLOGIA
DEPARTAMENTO DE INFORMÁTICA
ANA CAROLINA ABREU BARBOSA
LUAN BAHRI RIBEIRO
PROBLEMAS CLÁSSICOS DE ESCALONAMENTO:
BARBEIRO DORMINHOCO
PONTA GROSSA
2017
ANA CAROLINA ABREU BARBOSA
LUAN BAHRI RIBEIRO
PROBLEMAS CLÁSSICOS DE ESCALONAMENTO:
BARBEIRO DORMINHOCO
Trabalho desenvolvido durante a disciplina de
Sistemas
Operacionais,
como
parte
da
avaliação, referente ao primeiro semestre, com a
orientação do professor:
Profº. Dierone César Foltran Júnior
PONTA GROSSA
2017
LISTA DE FIGURAS
Figura 1 - Processador ocioso: repousa. .......................................................................................... 6
Figura 2 - Processo chega e acorda processador em repouso para atendimento. ................... 6
Figura 3 - Processos só poderão aguardar atendimento se houver espaço para os mesmos.6
Figura 4 - Caso não haja espaço, processos não podem aguardar atendimento. .................... 7
Figura 5 - Processo atendido sai e processo aguardando deve ser atendido. .......................... 7
Figura 6 - Código parte 01. ................................................................................................................. 8
Figura 7 - Código parte 02. ................................................................................................................. 9
Sumário
1.
O PROBLEMA ................................................................................................................................... 5
2.
FUNCIONAMENTO........................................................................................................................... 5
3.
CÓDIGO ........................................................................................................................................... 8
4.
CONCLUSÃO .................................................................................................................................... 9
5.
REFERÊNCIAS BIBLIOGRÁFICAS ..................................................................................................... 11
5
1. O PROBLEMA
Em programação concorrente, conceito que engloba processos coexistindo
em um mesmo dado momento, surgem problemas que devem ser tratados para que
os fluxos entre essa relação – processador e processos – funcione de maneira
correta. Isso porque quando existe um processo em execução, há a possibilidade de
que uma mesma área compartilhada por vários processos seja acessada. Quando
em programação concorrente, onde esse acesso pode ser requerido por vários
processos ao mesmo tempo, conflitos podem surgir. Um deles é o chamado
“Barbeiro Dorminhoco”, denominado assim pela analogia que faz de um barbeiro – o
processador – com seus clientes – os processos.
2. FUNCIONAMENTO
O funcionamento na barbearia (relação processador-processo) segue o
seguinte fluxo:
1. Quando não há clientes na barbearia, o barbeiro pode dormir (figura 1);
2. Quando um cliente chegar, deve verificar se:
a. O barbeiro está dormindo. Nessa situação, o cliente o acorda para ser
atendido (figura 2);
b. Se o barbeiro está acordado mas já está atendendo. Nessa situação, o
cliente só pode esperar por atendimento se existirem cadeiras vagas na
barbearia (figura 3), senão, deve deixar a barbearia (figura 4).
3. Após um cliente ser atendido, o mesmo deve deixar a barbearia (figura 5) e
outro cliente, caso exista, deve ser atendido. Caso ele não exista, o item ‘a’
deve ser seguido.
6
Figura 1 - Processador ocioso: repousa.
Fonte: Os autores.
Figura 2 - Processo chega e acorda processador em repouso para atendimento.
Fonte: Os autores.
Figura 3 - Processos só poderão aguardar atendimento se houver espaço para os mesmos.
Fonte: Os autores.
7
Figura 4 - Caso não haja espaço, processos não podem aguardar atendimento.
Fonte: Os autores.
Figura 5 - Processo atendido sai e processo aguardando deve ser atendido.
Fonte: Os autores.
Para que o fluxo de atendimento seja seguido sem conflitos, devemos garantir
que:
1. Processador repouse apenas quando não existirem processos a serem
atendidos e seja sempre acordado quando algum processo precisar de
atendimento;
2. Processos não esperem por atendimento se não houver lugar disponível.
Dessa maneira, esperas infinitas por atendimento (deadlock) e ociosidade de
recursos serão evitados. Porém, para uma solução para programação concorrente
ser considerada válida, ela deve cumprir os seguintes itens:
a. Dois processos nunca podem estar simultaneamente em suas regiões
críticas;
8
b. Nenhum processo executando fora de sua região crítica pode bloquear outros
processos;
c. Nenhum processo deve esperar eternamente para entrar em sua região
crítica;
d. Nada pode ser afirmado sobre a velocidade ou sobre o número de CPUs.
3. CÓDIGO
Figura 6 - Código parte 01.
Fonte: Tiago Porto, Maio 2009.
9
Figura 7 - Código parte 02.
Fonte: Tiago Porto, Maio 2009.
4. CONCLUSÃO
Com a análise, vemos que no exemplo do “Barbeiro Dorminhoco”, quanto aos
itens:
10
a. Como o processador atende um processo por vez (cliente por cadeira), dois
processos nunca estarão simultaneamente em suas regiões críticas (área
compartilhada);
b. Como o “Barbeiro Dorminhoco” é uma solução para programação
concorrente, só entrará na barbearia processos que se encaixem no conceito
da mesma. Os processos que entrarem devem sair logo que forem atendidos
(figura 5), não bloqueando o atendimento de outros processos, como
devemos garantir;
c. Como os processos não devem aguardar atendimento se não houver lugar
(figura 4), eles não esperarão infinitamente;
d. Nada é dito sobre a quantidade de espaços disponíveis para os processos
assim como a quantidade de processadores (barbeiros) na relação
processador-processos (barbearia).
Assim, é possível afirmar que a solução apresentada pelo exemplo do
“Barbeiro Dorminhoco” é válida, resolvendo o problema clássico de escalonamento
em programação concorrente.
11
5. REFERÊNCIAS BIBLIOGRÁFICAS
COSTA, Celso Maciel da, Sistemas Operacionais Programação Concorrente
com
Pthreads,
maio
2009.
Disponível
em:
<
https://books.google.com.br/books?id=KOdf-52KERMC&printsec=frontcover&dq=pro
grama%C3%A7%C3%A3o+concorrente&hl=pt-BR&sa=X&ved=0ahUKEwj1g7OJoaf
TAhUIPJAKHe--BeAQ6AEIJDAA#v=onepage&q&f=false>. Acesso em 15 de Abril de
2017.
PORTO, Thiago, Barbeiro Sonolento., maio 2009. Disponível em: <
http://ces33.wikidot.com/tiagoporto:barbeiro-sonolento>. Acesso em 18 de Abril de
2017.
Download