Processo Threads

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 62

Gerência do Processador

• Surgimento dos sistemas


multiprogramáveis.
• Vários processos na memória principal
• Compartilhamento do uso da CPU
• Política de escalonamento
• Vários processos no estado de “pronto”.
• Dependendo do algoritmo o processo vai
escolha.
• Maximizar utilização do processador e
throughput.
• Diminuir os tempos de turnaround,
espera e resposta.
Funções Básicas
• Manter o processador ocupado a maior parte do tempo
• Balancear o uso da CPU entre os processos
• Privilegiar o uso da aplicações críticas
• Maximizar o throughput do sistema
• Oferecer tempos de respostas razoáveis aos usuários
• Escalonador (Scheduler)
• Rotina do SO responsável por implementar os critérios da política de
escalonamento.
• Todo compartilhamento da CPU é dependente dessa rotina.
• Dispatcher
• Rotina do SO responsável pela troca de contextos dos processos.
• O período de tempo gasto na troca do processo por outro chama-se
latência do dispatcher.
Critérios de Escalonamento
• São implementadas com as características de cada SO.
• Exemplos:
• Tempo Compartilhado (Time Sharing): é um método que
permite que todos os processos sejam executados de forma
justa.

• Tempo Real (Real Time): é um método que garante que os


processos críticos sejam executados antes dos demais
processos.
Principais critérios em uma política de
escalonamento
• Utilização do processador: Maximização do uso do
processador.
• Throughput: número de processos executados em um
determinado intervalo de tempo.
• Tempo de Processador (CPU): tempo que um processo leva
no estado de execução.
• Tempo de Espera: tempo total de um processo na fila de
pronto.
• Tempo de Turnaround: tempo de um processo desde sua
criação até seu término (alocação de memória, fila de
pronto (tempo de espera), tempo de CPU, e na fila de
espera).
• Tempo de Resposta: tempo decorrido entre uma requisição
ao sistema e o instante da resposta. Mais limitada pela
velocidade dos dispositivos de E/S do que do
processamento.
Escalonamentos Não-Preemptivo e Preemptivo

• São classificação segundo a possibilidade de o SO


interromper um processo em execução e substituí-lo por
um outro.
• Escalonamento Não-Preemptivo: Nenhum evento externo pode
ocasionar a perda do processador.
• Saindo de execução em duas situações:
• Término de sua execução
• Instrução do próprio código, mudando seu estado para “espera”.
• Escalonamento Preemptivo: O SO pode interromper um processo
em execução, passando para o estado de “pronto”
• Alocando outro processo para uso da CPU.
Escalonamento First-In-First-Out
• First-Come-First-Served (FCFS).
• Primeiro processo na fila de pronto é o selecionado para
execução. Não-preemptivo.
Problemas: Impossibilidade de prever quando
o processo terá sua execução iniciada.
Escalonamento SJF (Shortest-Job-First) e
SRT (Shortest Remaining Time) ou SJF com preempção.

• SJF: Seleciona o processo


que tiver o menor tempo
de processador por
executar. Não-
Preemptivo.
• SRT: O SO realiza a
preempção dos processos
em execução por
processos com menor
tempo de processamento.
Escalonamento Cooperativo

• Aumentam o grau de multiprogramação em


políticas de escalonamentos nãopreemptiva,
como o FIFO e o SJF não-preemptivo.
•O processo em execução pode
voluntariamente liberar o processador,
retornando a fila de pronto
Escalonamento Circular (Round Robin)

• Semelhante ao FIFO.
• Trabalha com conceito de fatia de tempo (time-slice) ou
quantum de uso do processador.
• Preempção por tempo
Escalonamento Circular (Round Robin)

• Vantagem: não permitir que um processo monopolize a CPU.


• Fatia de tempo muito pequena > muitas preempções >
excessivas mudanças de contexto > aumento do tempo de
turnaround (desempenho do sistema).
Escalonamento por Prioridades
• Baseado em um valor associado a cada processo.
• Preemptivo (preempção por prioridade).
• Processo:
• Maior prioridades são escalonados
• Mesma prioridade utilizam critério FIFO

• Preempção implementada por interrupção de clock.


Escalonamento por Prioridades

 Problema: starvation.
 Técnica de aging: incremento gradual de prioridade nos processos há
tempo na fila de pronto.
Escalonamento Circular por Prioridades

 Baseado nos conceitos de: fatia de tempo e prioridade de execução.

 Permite o melhor balanceamento no uso da CPU em sistemas time-


sharing.
Escalonamento por Múltiplas Filas
• Implementa diversas filas de processo em estado de “pronto”.
• Cada qual com prioridades especificas.
• Associação dos processos por características:
• Importância para a aplicação
• Tipo de processamento
• Área de memoria necessária
• O SO só poderá escalonar processos de determinada fila, estando
TODAS as outras filas de MAIOR PRIORIDADE vazias.
Escalonamento por Múltiplas Filas

 Vantagem: convivência de mecanismos distintos em um mesmo SO.


 Desvantagem: mudando o comportamento do processo, ele não
poderá ser redirecionado para outra fila mais adequada.
Escalonamento por Múltiplas Filas com Realimentação
 Semelhante ao Escalonamento por Múltiplas Filas.
 Mas, os processos podem trocar de filas durante seu processamento.
 Utiliza um mecanismo FIFO Adaptado:
• Fatia de tempo em todas as filas
• Exceto, a fila de menor prioridade, usa escalonamento circular.

 Escalonamento em uma fila acontece somente quando todas as


outras filas estiverem vazias.
 Fatia de tempo, quanto MAIOR a prioridade da fila, MENOR a fatia de
tempo.
Escalonamento por Múltiplas Filas com Realimentação
Gerência de Processos

 Possibilita aos programas:


 Alocação de recursos;
 Compartilhamento dos dados;
 Troca de informações; e
 sincronizações de execução.

 Um programa em execução estará sempre associado a um


processo.
• Sistemas Multiprogramáveis
• Um único processador execute vários processos.

• Os processos são executados de forma concorrente.

• Compartilhando recursos (CPU, memória, E/S)

• Sistemas com Múltiplos Processadores


• Concorrência de processos;

• Execução simultânea pelos diversos processadores.


Estrutura do Processo

• Processador funciona por ciclos de busca e execução de instruções.


• Busca da instrução na memória;
• Armazena no registrador de instruções (IR);
• Decodifica os bits;
• Realiza a instrução.

• Cabe ao S.O implementar a concorrência entre os programas.


Processo - Conceitos
• Um programa em execução. A instância de um programa.

• Segundo Maia,
• É um conjunto necessário de informações para que o SO
implemente a concorrência de programas.

• Mudança de contexto: troca de um processo por outro no processador pelo


S.O.
Composição do Processo

 Processo é formado por três partes:

 Contexto de hardware

 Contexto de software

 Espaço de endereçamento
Contexto de Hardware

• Serve paraarmazenar o conteúdo nos registradores do


processo em execução.
• Registradores de uso geral e de uso específicos (PC - Program
Counter, SP - Stack Pointer, Status).
Contexto de Software
• Especifica limites e características dos recursos que podem
ser alocados pelo processo.
• Número máximo de arquivos abertos simultâneos.
• Prioridade de execução.
• Tamanho do buffer para execução de operações de E/S.
• Algumas características são determinadas durante a
criação do processo, outras alteradas durante a existência
do processo.
Contexto de Software
• É composto por três grupos de informações
• Identificação:
• PID (Process Identification), número único dado ao processo na sua
criação.
• UID (User Identification), identifica o usuário ou processo que o criou
(owner).
• Quotas: Limites de recursos no sistema de cada processo.
• Privilégios ou direitos: definem as ações que um processo
pode realizar
Espaço de Endereçamento
• É a área de memória pertencente ao processo.
• São armazenados instruções e dados.
• Cada processo possui seu espaço próprio de
endereçamento.
Bloco de Controle de Processo
• Process Control Block - PCB
• É uma estrutura de dados implementada pelo S.O.
• Armazena as informações de contexto de hardware,
contexto de software e espaço de endereçamento dos
processos.
• Os PCBs dos processos ativos residem na memória
principal,na parte exclusiva do S.O.
• O S.O. localiza as informações do PCB através de uma
tabela de processos.
• Processos Independentes, Subprocessos e Threads
• São maneiras diferentes de implementação de concorrência dentro de
uma aplicação.

• Processos Independentes
• Divisão do código em várias partes para trabalharem de forma
cooperativa.
• Ex.: Banco de dados de produtos consultado por vários vendedores

• Processos independentes possuem seu próprio PCB com contexto de hardware,


contexto de software e espaço de endereçamentos próprios.
Subprocessos
• São criados dentro de uma estrutura hierárquica.
• Processo criador é chamado processo-pai.
• O novos processos criados são chamados subprocessos ou
processo-filho.
• Um subprocesso pode criar outros subprocessos.
• Há dependência entre o processo criador e o
subprocesso.
Processos Independentes e Subprocessos

• A criação de processos independentes e subprocessos gera


consumo de diversos recursos do sistema.
• Alocação de recursos
• Desalocação dos recursos
Thread
 Conceito criado para reduzir os tempos de criação, eliminação e
troca de contextos de processos.

 Possuem contexto simplificado, com contexto de hardware e


software, mas compartilham o espaço de endereçamento.

 Como compartilham o espaço de endereçamento, não existe


proteção no acesso à memória.

 Uma thread pode alterar dados de outros!


 Ambientes monothread: suportam apenas uma única thread em
execução.

 Ambientes multithread, temos:


 Um único processo
 Suportando múltiplos threads
 Cada qual associado a uma parte do código da aplicação
Ambiente Multithread
Implementação de Threads
 Podem ser três tipos:

 Threads Modo Usuário (TMU)

 Threads Modo Kernel (TMK)

 Threads Modo Híbrido


Implementação de Threads

• Threads Modo Usuário (TMU)


• Implementados pela aplicação, não
pelo S.O.

• São rápidos e eficientes por não


acessarem o kernel.
Implementação de Threads

• Threads Modo Kernel (TMK)


• Implementados diretamente pelo
núcleo do S.O.

• Pelas chamadas a rotinas do


sistema.
Implementação de Threads
• Threads Modo Híbrido
• Combina as vantagens de threads implementadas em
modo usuário e modo kernel.

• O núcleo reconhece os TMKs e pode escaloná-los de forma


individual

• Um TMU pode ser executado em um TMK, em um


determinado momento, e no instante seguinte ser
executado em outro.
• Threads Modo Híbrido
Comunicação entre Processos
• Aplicações Concorrentes
• Computadores com multiprocessadores
• Código dos programas divididos em várias partes
interdependentes
• Múltiplos processos ou threads
• Aplicações concorrentes compartilham recursos do
sistema (arquivos, registros, dispositivos E/S e
memória)
Comunicação entre Processos
• Interprocess Communication – IPC
• Por conta do compartilhamento de recursos entre os
processos faz-se necessário a comunicação entre eles.
• A comunicação se dá por diversos mecanismos de
sincronização como: variáveis compartilhadas na MP
ou troca de mensagens.
• Visam a integridade e a confiabilidade na execução
de aplicações concorrentes
Condição de Corrida
• Conjunto de eventos que geram resultados não
determinísticos.
• Quando dois ou mais processos estão lendo ou gravando
dados compartilhados e a ordem de execução interfere no
resultado final.
• Considere duas threads que compartilham as variáveis A e B
inicialmente com valor 1. Em função da ordem de execução os
resultados finais são diferentes.
• Região Crítica ou seção crítica.
• É a parte do código onde a memória
compartilhada é acessada.
• Exclusão Mútua
• Garantir que apenas um processo terá acesso
à região crítica de um recurso compartilhado.
• Enquanto não obtém exclusividade mútua o
processo deve permanecer em espera
Deadlock (ou Impasse)
• Sistemas computacionais estão cheios de recursos que
podem ser usados somente por um processo de cada vez.
• Ex.: impressoras, unidades de fita para backup, um registro em um
banco de dados, etc.
• Os S.O. têm a capacidade de conceder (temporariamente)
acesso exclusivo a um processo a determinados recursos.
• Deadlock: Situação em que dois ou mais processos
entram em um impasse aguardando um recurso
que nunca estará disponível.
Deadlock – Condições Necessárias
• Para que ocorra o deadlock, quatro condições são
necessárias (simultaneamente):
1. Exclusão mútua: todo recurso está alocado a processo ou
disponível.
2. Posse e espera: processos que retêm recursos podem solicitar novos
recursos.
3. Não-preempção: recursos concedidos não pode ser tomados por
outros.
4. Espera circular: cada um está à espera de recurso retido pelo
membro seguinte dessa cadeia.
Deadlock – Prevenção
• Exclusão mútua: usar spool em tudo.
• Posse e espera: requisitar inicialmente todos os recursos
necessários.
• Não preempção: retomar recursos alocados.
• Espera circular: forçar o processo a ter apenas um recurso
por vez.
Deadlock – Tratamento
• Algumas estratégias para se tratar um deadlock:
• Algoritmo da Avestruz: Ignorar o problema. Solução mais
utilizada devido a baixa probabilidade de ocorrência e
de custo.
• Detecção e Recuperação: O S.O. realiza o
monitoramento de requisições e liberações de recursos.
Ocorrendo ciclos, um dos processos será morto.
• Algumas estratégias para se tratar um deadlock:
• Negar uma das quatro condições necessárias.
• Algoritmo do banqueiro:
• Basicamente, os processos devem informar o número máximo
de cada tipo de recurso necessário para sua execução.
• Estado de alocação de recursos: relação entre números de
recursos alocados e disponíveis, e número de processos que
precisam dos recursos.
Starvation (Inanição)
• Um processo nunca é executado (fica em inanição,
“morre de fome”), pois processos de prioridade
maior sempre o impedem de entrar em execução.

Você também pode gostar