Академический Документы
Профессиональный Документы
Культура Документы
Resumo:
O Sistema Operacional é responsável pela supervisão e execução dos programas,
alocando os recursos necessários através do administrador conveniente, e controlando a
utilização da UCP pelos diversos processos. Um sistema operacional pode ser visto
como um programa de grande complexidade que é responsável por todo o
funcionamento de uma máquina desde o software a todo hardware instalado na
máquina. Todos os processos de um computador estão por de trás de uma programação
complexa que comanda todas as funções que um utilizador impõe à máquina.
Estrutura do Processo
Contexto de Hardware
Contexto de Software
Identificação : cada processo criado pelo sistema recebe uma identificação única
representada por um número. O processo também possui a identificação do usuário ou
processo que o criou. Cada usuário possui uma identificação única no sistema, atribuída
ao processo no momento de sua criação.
Quotas: São os limites de cada recurso do sistema que um processo pode alocar. Caso
uma cota seja insuficiente, o processo poderá ser executado lentamente, interrompido
durante seu processamento ou mesmo não ser executado.
Privilégios: ou direitos definem as ações que um processo pode fazer em relação a ele
mesmo, aos demais processos e ao sistema operacional.
Espaço de Endereçamento
Estado do Processo
Execução (running)
Pronto (ready)
Espera (wait)
Pronto (ready)
Espera (wait)
É quando o processo que esta aguardando por algum evento externo ou por
algum recurso para prosseguir seu processamento. Como exemplo, podemos citar o
término de uma operação de entrada/saída ou a espera de uma determinada Dara e/ou
hora para continuar sua execução. Em alguns sistemas operacionais, o estado de espera
pode ser chamado de bloqueado (blocked).
O sistema organiza os vários processos no estado de espera também em listas
encadeadas. Em geral, os processos são separados em lista de espera associadas a cada
tipo de evento. Neste caso, quando um evento acontece, todos os processos da lista
associada ao evento são transferidos para o estado de pronto.
Pronto Execução
Execução Espera
Espera Pronto
Execução Pronto
System Calls
-Gerencia de processos.
- Gerência de memória.
- Gerência de Entrada e Saída..
5 Escalonamento de Processos
· Como memórias e terminais, a UCP é um recurso dividido para cada processo
no sistema.
· O escalonador é o componente do sistema operacional que determina qual
processo vai rodar num dado tempo e quanto tempo vai rodar.
· Sistema de partilha de tempo - permite que diversos processos funcionem
simultaneamente. Em um sistema monoprocessado cria uma ilusão de execução
simultânea, intercalando processos em uma base da partilha de tempo. O
escalonador entrega a CPU a cada processo por um pequeno período de tempo,
antes de trocar por outro processo. Este período é chamado de quantum do
tempo ou fatia do tempo.
· Dois aspectos do escalonador:
Política – As regras usadas para decidir qual
processo vai rodar e quando ele será trocado por outro.
Implementação – As estruturas de dados e algoritmos usados para cumprir tais políticas.
· Objetivos da política de escalonamento:
o Tempo de resposta rápido para aplicações interativas.
o Throughput elevado para trabalhos rodando em background.
o Execução da política eficientemente e com despesas gerais mínimas.
Escalonamento de Processos
Quando mais de um processo está ativo (pronto para executar) cabe ao
sistema operacional decidir qual terá a posse da CPU.
A parte do sistema operacional que toma esta decisão é chamada
escalonador e o algoritmo utilizado é o algoritmo de escalonamento.
Os critérios para os algoritmos de escalonamento são:
Processo: garantir que cada processo tenha acesso a CPU;
Eficiência: maximizar a utilização do processador, mantendo a CPU ocupada
praticamente 100% do tempo;
Tempo de resposta: minimizar o tempo de resposta na execução dos
processos principalmente os interativos editores planilhas etc;
tempo de espera: minimizar o tempo de espera de serviços não interativos
compilação impressão etc;
vazão: maximizar o numero de processos executados por
hora.
É importante observar que alguns desses objetivos são contraditórios como
por exemplo, se um algoritmo favorece os processos interativos estará
comprometendo os não interativos.
Tipos de escalonamento:
· não-preemptivo: processo que está executando não pode ser interrompido. Presente
nos primeiros
sistemas multiprogramáveis, onde predominava o processamento em batch. As políticas
que
implementam escalonamento não-preemptivo não são aplicáveis à sistemas de tempo
compartilhado,
pois em processos interativos é necessário um tempo de resposta ao usuário razoável.
· preemptivo: o processador pode ser retirado do processo que está executando. Permite
atenção
imediata aos processos mais prioritários (tempo real), melhores tempos de resposta
(tempo
compartilhado), compartilhamento uniforme do processador.
Algoritmos de escalonamento:
1.1 - Escalonamento Round Robin
Todos os processos tem a mesma importância.
Este e o mais antigo e simples algoritmo de escalonamento Cada
processo e executado por um intervalo de tempo quantum.
Algoritmos com Prioridades
Adequado para tratamento de situações de emergência
Múltiplas Filas
Este e um algoritmo que define classes com prioridades.
Tarefas Pequenas Primeiro
Este algoritmo e designado para aplicações não interativas onde o
tempo médio de execução é conhecido anteriormente.
Algoritmo PolicyDriven
Este algoritmo particiona a CPU de forma igual entre os usuários não entre
os processos.
Exemplo de uma thread, duas seções de copia de arquivos no Explorer são iniciadas
simultaneamente. Isto somente é possível porque cada seção corresponde a uma thread.
Benefícios de threads:
Contudo;
l Suspender um processo implica em suspender todas as threads deste processo já
que compartilham o mesmo espaço de endereçamento
l O término de um processo implica no término de todas as threads desse
processo
Para gerenciar este compartilhamento de forma que dois ou mais processos tenham
acesso a um mesmo recurso compartilhado, existe um mecanismo que controla este
acesso, chamado de MECANISMO DE SINCRONIZAÇÃO. Este mecanismo tem o
propósito de garantir a confiabilidade e a integridade da gravação dos dados, evitando
que os dados armazenados fiquem sem consistência. Como exemplo dois processos
efetuando operações de gravação, de dados diferentes, em disco exatamente no mesmo
setor ou no mesmo arquivo. Esta situação se torna mais crítica ainda em sistemas
operacionais MULTIPROGRAMÁVEIS.
Semáforos
Os semáforos fornecem um método de sincronização de acesso à recursos
compartilháveis entre múltiplos processos. Eles podem funcionar como locks(5) para
garantir acesso exclusivo ou como um contador, controlando o acesso a um número
finito de recursos. Quando um processo requisita um recurso, o contador é
decrementado, quando o recurso for liberado o contador é incrementado. Deste modo,
quando o semáforo indicar valor zero o processo solicitante bloqueia até que o recurso
seja liberado.
Esse semáforos funcionam como indicadores (flags) que sinalizam para o ambiente se o
mesmo está ou não em utilização (os métodos de sinalização não são pertinentes ao
artigo, mas podemos didaticamente imaginar que pode ser 0 e 1, respectivamente 0 para
indisponível e 1 para disponível). Assim, o processo de sinalização requer colaboração e
troca de informações entre processos.
Semáforos:
Outro tipo de semáforo usado é SEMÁFORO CONSUMIDOR onde ele pode informar
ao processo se o buffer está cheio ou está vazio
SEMÁFORO CONTADOR é aquele que notifica os processos sobre o uso dos recursos.
Sempre que um processo usa um recurso qualquer, este semáforo é incrementado
sempre que um processo liberar um recurso ele será decrementado. Este semáforo é útil
para evitar que um processo na região crítica sem que hajam recursos disponíveis no
sistema.
O uso de semáforos exige do programador muito cuidado, pois qualquer engano pode
gerar bugs em seu programa que o levem a falhas de sincronização ocasionando quedas
e travamento geral do sistema.
Monitores:
Outra característica do monitor é que os processos, quando não puderem acessar estes
procedimentos, ficarão aguardando em uma fila de espera e enquanto isto, eles poderão
executar outros procedimentos.
Como ele é escrito em uma linguagem de programação, o compilador das outras demais
linguagens deverão ser capazes de reconhecê-la e implementa-la. São raras as
linguagens que permitem tal implementação criando uma limitação para o uso deste
recurso.
DEADLOCK
- Um processo além dos recursoss já alocados, pode estar esperando por outros recursos.
- Um recurso não pode ser liberrado de um processo porque outros processos desejam o
mesmo recurso (Não-preempção)
- Um processo pode ter de esperrar por um recurso alocado a outro processo e vice-
versa (Espera circular).
Prevenção do Deadlock:
Para prevenir o Deadlock é preciso garantir que uma das quatro condições acima citada
nunca ocorra, dentre as diversas situações já citadas pode ser feito um minucioso
trabalho de determinar muito bem que recursos, quais recursos e quando estes recursos
deverão ser disponibilizados aos processos.
Detecção do Deadlock:
Correção do Deadlock:
Abaixo vemos a caixa de dialogo do Windows que tentará fechar o processo que pode
estar parado por falta de comunicação com o sistema.
Conclusão: