Você está na página 1de 26

UNIVERSIDADE GREGÓRIO SEMEDO

Faculdade de Engenharia e Novas Tecnologias


Curso de Engenharia Informática

Sistema Operativo

GESTÃO E ESCALONAMENTO DE PROCESSOS:


ALGORITMOS DE ESCALONAMENTO
ALGORITIMOS DE DETENÇÃO E PREVENÇÃO DE DEADLOKS

O Docente

____________________________
Nome: Lucas Dos Santos Ngola
Número: 170608
Turma: ENGIF31N
RESUMO

O presente trabalho consiste em, apresentar os conceito escalonamento ,tipos de escalonadores, critérios de rendimento
,gestão de Escalonamento de Processos de um Sistema Operacional Distribuído, conceituaremos termos importantes de
Sistemas Operacionais, como Multiprogramação, Comportamento de Processos e as Categorias de Algoritmos de
Escalonamento de Processos.
Tambem abordaremos tópicos como Deadlocks ,Deadlocks em Sistemas Distribuídos, como gerenciá-los, detetar e prevenir
deadlocks e por fim abordaremos Algoritmo de deteção de deadlock

Palavras Chaves :Gestao e Escalonamento de Processos ,processos ,deadlocks,algoritimos de Escalonamento e deadloks.


ABSTRACT

The present work consists in presenting the concepts of scheduling, scheduler types, performance criteria, process
management of a distributed operating system, conceptualize important operating system terms such as multiprogramming,
process behavior and categories of scheduling algorithms of processes.
We will cover topics such as Deadlocks, Deadlocks in systems
Distributed, how to manage them, detect and prevent deadlocks and finally we will approach algorithm of detection of
deadlock

Keywords: Process Management and Scheduling, processes, deadlocks, Scheduling algorithms and deadlocks.
INTRODUÇÃO

Ex, quando a D. Maria pensa fazer um bolo de laranja vai ao seu livro de receitas e tira a receita do bolo de laranja. É
como se fosse ao HDD buscar o ficheiro Bolo de Laranja, que corresponde ao programa (ou receita) de como fazer um
bolo de Laranja. É uma simples receita, ou um programa.
Mas, quando a D.Maria começa a executar a receita ,começa a usar os recursos de que dispõe na sua cozinha
(tigelas ,pírex, batedeiras, fornos, lava louças, etc) e o programa começa a transformar-se naquilo que é o seu objetivo,
o bolo de laranja.
Pois, da receita (programa) até ao bolo, estamos precisamente no processo de confeção do bolo de laranja.
E, durante esse processo de confeção, o tipo de língua em que a receita foi escrita não importa (português, Inglês,
Mandarim ou outras) bem como o tipo, as características, a marca ou modelo do equipamento em que se executa. Só
importam os ingredientes, as suas quantidades, a forma como se misturam e o tempo de cozedura.
Portanto o processo é alheio à língua em que a receita foi escrita e ao equipamento em que é executado.
Assim resulta a definição de Processo:
PROCESSOS

O processo é aquilo que executa o objetivo de um programa. É a abstração da execução de um programa, alheia às características da
máquina onde executa à linguagem em que foi programada.
Mantêm a capacidade de operações pseudoconcorrentes, mesmo quando há apenas uma CPU disponível. Então quando nos referirmos a
um programa, em um sistema operacional, estamos falando do processo referente a esse programa. A CPU executa cada um deles por
dezenas ou centenas de milissegundos. A cada instante a CPU executa somente um programa, no decorrer de um segundo ela pode
trabalhar sobre vários programas, dando aos usuários a ilusão de paralelismo.
Multiprogramação
Conceitualmente, cada processo tem sua própria CPU virtual. Na prática, a CPU troca, a todo momento, de um processo para outro.
Portanto, um conjunto de processos executando paralelamente é conceitual quando há uma CPU apenas. O mecanismo de trocas rápidas,
onde a CPU faz esses chaveamentos(trocas) é a Multiprogramação.
O que é Escalonador de Processos
Um Escalonador de Processos é um subsistema do Sistema Operacional responsável por decidir o momento em que cada processo
obterá a CPU. É utilizado algoritmos de escalonamento que estabelecem a lógica de tal decisão. Nesse momento de decidir qual
escalonador será utilizado no sistema operacional, cabe avaliar o cenário que o sistema será utilizado.

Deadlock (interbloqueio, blocagem, impasse), no contexto de sistemas operacionais (SO), refere-se a uma situação em que ocorre um
impasse, e dois ou mais processos ficam impedidos de continuar suas execuções - ou seja, ficam bloqueados, esperando uns pelos outros.
Trata-se de um problema bastante estudado em sistemas operacionais e banco de dados, pois é inerente à própria natureza desses
sistemas.
GESTOR DE PROCESSOS

É uma entidade do núcleo responsável por suportar a execução dos processos


– Gestão das Interrupções – Multiplexagem do Processador
• Despacho – efectua a transferência de controlo entre dois processos
• Escalonamento –optimiza a gestão dos recursos – Sincronização no núcleo
– Implementação das funções sistema relacionadas com os processos e sincronização
Um processo pode estar em um dos três estados: ou Bloqueado ou Pronto ou Executando. E um
processo ao passar de um estado a outro chamamos de transição. Então, o processo pode passar
de bloqueado a pronto(4), pronto a executando(3), executando para pronto(2), ou executando para
bloqueado(1).

Segue abaixo uma figura que demonstra os estados e as transições possíveis de um processo.
Diagrama de Estado dos Processos
Estados de um processo

Executando: o processo está usando a CPU naquele instante; Bloqueado: o processo é incapaz de executar enquanto
não ocorrer um evento externo; Pronto: o processo está pronto para ser executado. Temporariamente parado para dar
lugar a outro processo.

A transição 1 é quando o processo bloqueia aguardando uma entrada; a transição 2 é quando o escalonador seleciona
outro processo; a transição 3 é quando o escalonador seleciona esse processo e a transição 4 é quando a entrada de
dados torná-se disponível.
ESCALONAMENTO

O escalonamento consiste em distribuir o acesso aos recursos do sistema entre os processos que o
solicitam.
Tendo como objetivo:
- Otimizar o rendimento dos recursos.
- Priorizar o acesso aos recursos disponíveis.
- Recursos que necessitam escalonamento:
- Dispositivos E/S (discos)
- Processador
- Memória
Multiprogramação:
O S.O. gerência múltiplos processos na memória principal de forma simultânea.
Os processos devem compartilhar o acesso ao processador.

Escalonamento de processos:
Decidir sobre: que trabalhos serão admitidos pelo sistema
Que processos serão mantidos na memória principal
Que processo utilizará CPU quando ela estiver livre
Escalonamento de processos:

Decidi sobre: que trabalhos serão admitidos pelo sistema


Que processos serão mantidos na memória principal
Que processo utilizará CPU quando ela estiver livre

Tipos de Escalonadores:

Escalonador de longo prazo


É o responsável de controlar o grau de multiprogramaçãodo sistema
Número de processos que serão executados “ao mesmo tempo”.
Admite novos trabalhos no sistema, convertendo estes em processos

Escalonador de médio prazo


Éo responsável de escolher os processos que serão removidos total ou parcialmente da memória para serem
levados ao disco (suspensos)
Algoritmos de Escalonamento

Algumas políticas de escalonamento podem funcionar em modo não preemptivo ou em modo preemptivo.
Modo não preemptivo:
O processo que possui a CPU somente a libera quando quer (quando acaba sua execução)
Não necessita suporte de hardware adicional
Um processo pode monopolizar a CPU
Não são convenientes para ambientes de tempo compartilhado.
Exemplo: Windows 3.1 e Apple Macintosh OS
Não Preemptivos
Fisrt-Came, Fisrt-Served –FCFS (FIFO)
Shortest-Job-First –SJF

Modo preemptivo:
O escalonador pode desalocar um processo da CPU em qualquer instante de tempo. Maior custo, porém,
evita-se que um processo tenha 100% da CPU
Por prioridades
Turno rotativo ou Circular (Round-Robin)
Filas multi-nivel
Tempo Real
Algoritmo FCFS (First-Come First-Served)

Funcionamento:
O processador é alocado seguindo a ordem de chegada dos processos àfila de processos prontos.
O processo que tem a CPU não a libera até que acabe sua execução ou até que fique bloqueado por uma operação de E/S.
Implementação:
A fila de processos prontos é implementada mediante uma fila FIFO (First-In First-Out).

Características FCFS:

Simples de implementar
Dependente da ordem de chegada dos processos.

Altos tempos de espera


Tende a favorecer aos processos com muita carga de CPU, prejudicando aos processos intensivos de E/S
Diagrama de Grant FCFS(First-Come First-Served)
O que isso tem haver com Processos em SO ?
DeadLoks

Por exemplo, a figura acima. Temos carros em quatro sentidos diferentes. Os que estão no sentido "A" pedem espaço para
os que estão no sentido "B". Mas o pedido é negado. E em vez de liberar espaço para os que estão no sentido "A", os que
estão no sentido "B" solicitam espaço para os que estão no sentido "C". Mas o pedido é negado. E em vez de liberar
espaço para os que estão no sentido "B", os que estão no sentido "C" solicitam espaço para os que estão no sentido "D".
Mas o pedido é negado. E em vez de liberar espaço para os que estão no sentido "C", os que estão no sentido "D"
solicitam espaço para os que estão no sentido "A". E assim, estamo em um impasse, ou seja, em Deadlock.

Formalmente, Deadlock é definido da seguinte forma: Um conjunto de processos do Sistema Operacional está em situação
de Deadlock se todo processo pertencente ao conjunto estiver esperando por um evento que somente outro processo
desse mesmo conjunto poderá fazer acontecer.
Condições para ocorrência de Deadlock

Assim, nenhum processo consegue executar recurso que precisa, ou liberar recurso que está de posse, ou ser acordado,
pois o recurso que precisa está ocupado.
Vale detalhar que recurso é uma sequência de eventos necessários ao uso de um processo, assim pode ser dispositivos
ou qualquer item compartilhado.
Abaixo as condições para se entrar no estado de Deadlock:
Exclusão Mútua: todo recurso está ou associado a um único processo ou disponível;
Posse e Espera: processos que retêm recursos podem solicitar novos recursos;
Não Preempção: recursos concedidos previamente não podem ser forçosamente tomados;
Espera Circular: deve haver uma cadeia circular de dois ou mais processos, na qual cada um está à espera de recursos
retido pelo membro seguinte dessa cadeia.
OBS : Todas essas condições devem ocorrer simultaneamente para que ocorra Deadlock. Se uma dessas condições não
ocorrer, não haverá deadlock.
Algoritmo de Deteção de DeadLoks

O algoritmo de detecção de deadlock com vários recursos de cada tipo baseia-se em um ambiente que
possua vários recursos do mesmo tipo e os processos solicitam apenas pelo tipo de recursos, não
especificando qual recurso desejam utilizar.
Assim, um processo pode requisitar uma unidade de CD para leitura. Se o sistema possuir duas, o processo
pode utilizar a que estiver disponível, em vez de especificar uma delas. Dessa forma, o processo solicita o
recurso pelo tipo, sem discriminação.
Faça (para detecção do deadlock):
• Inicialmente, desmarcar todos os processos;
• Para um processo Pi desmarcado, verificar se todos os elementos da linha i na Matriz R são
menores ou iguais aos da Matriz A;
• Se for, então marque o execute o processo P i e libere os recursos requisitados pelo processo na
Matriz C (adicionar a linha i da Matriz C na Matriz A);
• Retornar ao passo 2.
A lógica do algoritmo é a seguinte: cada processo é considerado como apto a ser executado até que a
detecção prove o contrário. A detecção apenas verifica se os processos requisitam mais recursos do que
estão disponíveis, o que caracteriza um deadlock. Caso o processo requisite uma quantidade disponível,
então ele pode ser executado, e os recursos que foram solicitados antes podem também ser liberados de
volta ao sistema, o que pode permitir que outros processos também concluam suas execuções e liberem os
recursos.
Um exemplo do preenchimento das matrizes encontra-se na figura abaixo,
considerando-se n=2 e m=3.
Algoritmo de Prevenção – Algoritmo do Banqueiro

O Algoritmo do banqueiro é um algoritmo muito difundido quando o objetivo é


evitar a ocorrência de deadloc ks.
O algoritmo propõe o mesmo que ocorre em uma instituição financeira. O
Banqueiro pode conceder empréstimos a diversos clientes, porém quando o faz,
só o faz se houver um reserva de capital que possa utilizar.
O cliente por sua vez, compromete -se a devolver o valor emprestado para que
o banqueiro possa reintegrar ao seu capital.
O que acontece no algoritmo do banqueiro é exatamente o mesmo: o sistema
empresta seus recursos, armazenados, a medida que estes estejam
disponíveis. O sistema, por tanto, reserva tipos de recursos, onde cada tipo de
recurso representa todos os recursos disponíveis que executam a mesma
função.
O Algoritmo segue uma deter minada lógica de proprie dades:

O SO compar tilha T recursos com N processos (ambos valores fixos)

Cada processo tem por responsabilidade especificar o número máximo de recursos necessários para concluir seu
trabalho.

O SO aceita o pedido de um processo caso o número de recursos solicitados não seja maior que o número tota l de recur
sos disponíveis.

Em caso de espera, o SO garante um tempo finito.

Sabendo que um processo, cuja execução dependa de um número T de recursos, poderá garantir um tempo satisfatório
de execu ção (e definido) apenas se o SO garantir o número máximo de recursos.

Antes precisamos convencionar que:


Max(Pi) - representa o número máximo de recursos que um processo i necessita
Loan(Pi) - representa o número de recursos emprestados atualmente ao processo i
Claim(Pi) representa uma solicitação de recurso resultante de max(Pi) –loan(Pi)
a representa o número de processos disponíveis para alocação e é calculado a par tir
da soma de todos os recursos disponíveis para alocação subtraídos dos recursos
totais.
Por tanto podemos chegar a algumas conclusões:
Caso algum processo devolva ao SO um recurso emprestado, existe a possibilidade de que um
dos
processos consiga alocar o número necessário de recursos necessário para o término de seu
processa mento.
Caso o recurso seja alocado por um dos processos, pode haver um deadlock caso os outros
processos decidam solicitar o recurso restante.

É importante que, ao solicitar a alocação de recursos, a política de alocação leve em


consideração to das os recursos necessários para todas as possíveis situações, caso contrário
um estado seguro pode migrar para um estado inseguro.

Durante a execução do algoritmo do Banqueiro pode-se perceber que as condições de exclusão


mútua, espera e não-preempção são permitidas . O sistema tem por objetivo manter-se e m
estado seguro durante todo o tempo, ou seja, todas as requisições de recursos que levem ao
estado de insegurança serão negadas até que uma operação segura seja possível.

Desta for ma, se pensar mos que o SO estará se mpre em estado seguro, to das as requisições
serão atendidas em deter minado te mpo e o usuário poderá e fetuar todas as operações
desejadas.
Algoritmo do avestruz (ignorar a situação)

A estratégia mais simples para tratamento (ou não) do "deadlock", conhecida como
Algoritmo do Avestruz, é simplesmente ignorá-lo.
Muitos defendem que a frequência de ocorrência deste tipo de evento é baixa
demais para que seja necessário sobrecarregar a CPU com códigos extras de
tratamento, e que, ocasionalmente, é tolerável reiniciar o sistema como uma ação
corretiva.
Conclusão

A definição textual de deadlock por ser muito abstrata, é mais difícil de se compreender do que a
representação por grafos, que será resumida mais adiante. No entanto, algumas observações
são pertinentes:
• O deadlock pode ocorrer mesmo que haja somente um processo no SO, considerando que
este processo utilize múltiplos threads e que tais threads requisitem os recursos alocados a
outros threads no mesmo processo;
• O deadlock independe da quantidade de recursos disponíveis no sistema;
• Normalmente o deadlock ocorre com recursos, tais como dispositivos, arquivos, memória
etc. Apesar de a CPU também ser um recurso para o SO, em geral é um recurso facilmente
preemptível, pois existem os escalonadores para compartilhar o processador entre os diversos
processos, quando trata-se de um ambiente multitarefa.
Bibliografia

S. TANENBAUM Prentice-Hall,
Secção 2.5: Scheduling I
Secção 10.3: Processes in Unix I
Secções 4.1, 4.2, 4.3 e 4.4 de José Alves Marques e outros,
Sistemas Operativos, FCA - Editora Informática, 2009

Você também pode gostar