Sistemas
Operacionais
(Parte 2)
PROF SILVANO OLIVEIRA
prof.silvano.oliveira@gmail.com
Ementa da disciplina
 Estruturas de Sistemas operacionais;
 Sistemas multiprogramáveis;
 Gerência de processos;
 Gerência de memória física;
 Gerência de memória virtual;
 Gerência de sistemas de arquivos;
 Gerenciamento de dispositivos;
 Segurança e proteção;
 Introdução aos sistemas operacionais distribuídos.
2
Bibliografia básica
 Sistemas operacionais: Projeto e
implementação. Andrew S. Tanenbaum; Albert
S. Woodhull;
 Sistemas operacionais: Conceitos e aplicações.
Abraham Sílberschatz; Peter Galvin; Greg
Gagne;
 Arquitetura de sistemas operacionais. Francis B.
Machado, Luiz Paulo Maia.
3
Funcionalidades
 Para cumprir os objetivos de abstração e gerência, o S.O. atua em
várias frentes;
 Cada recurso possui suas particularidades, o que demanda exigências
específicas para gerenciá-los e abstraí-los;
 Principais funcionalidades implementadas por um S.O. típico:
 Gerência do processador;
 Gerência de memória;
 Gerência de dispositivos;
 Gerência de arquivos;
 Gerência de proteção;
 Interface gráfica;
 Suporte de rede.
4
Gerência do processador 5
Sistema
operacional
Gerência do
processador
Gerência de
memória
Gerência de
dispositivos
Gerência de
arquivos
Interface
gráfica
Gerência de
proteção
Outros
suportes
Suporte de
rede
Gerência de processador
 Primeiros sistemas operacionais eram caracterizados por apenas
um programa sendo executado por vez;
 Computadores modernos = vários tarefas ao mesmo tempo;
 Processador é alternado entre um programa e outro
 Falsa impressão de que vários programas estão rodando ao mesmo
tempo;
 Pseudoparalelismo.
 Para que isso seja possível, é necessário um monitoramento
complexo de todas as atividades;
 Foi desenvolvido um modelo que tornou o “paralelismo” mais fácil
de manipular: modelo de PROCESSOS.
6
Processos
 Processo é um programa em execução e que tem suas
informações mantidas pelo sistema operacional;
 Um processo é um programa em execução. É uma unidade de
trabalho dentro do sistema. Programa é uma entidade passiva,
processo é uma entidade ativa;
 Pode ser definido também como o ambiente onde o programa é
executado, e além das informações sobre a execução, possui:
 Recursos que o sistema pode utilizar;
 Espaço de endereçamento;
 Arquivos e outras Entradas/Saídas;
 Etc.
7
Processos
O sistema operacional deve ser
capaz de:
Criar um processo;
Reservar memória para um processo;
Organizar os processos para a espera
do uso da CPU.
8
Processos
 Os vários processos criados pelo sistema operacional
competem entre si pela atenção do processador;
 O gerenciador de processamento do sistema
operacional é responsável por estabelecer a ordem de
execução;
 Os processos podem estar em 3 estados:
 Executando;
 Pronto;
 Bloqueado.
9
Processos
 Executando:
 Quando o processo está, de fato, sendo processado pela CPU do
computador
 Pronto:
 Quando o processo possui todas as condições necessárias para sua
execução, porém, não está de posse da CPU do computador;
 Em geral, existem vários processos nesta fase, e o sistema operacional é
responsável por selecionar o próximo processo a usar a CPU.
 Bloqueado:
 Quando o processo aguarda por algum evento externo ou por algum
recurso do sistema indisponível no momento, por exemplo: informação
de algum dispositivo de I/O, etc.
10
Processos 11
Processo
 Transições
 Transição 1 – Executando para bloqueado:
 Um processo que estava utilizando o processador precisou de algum evento
externo e não pode continuar.
 Transição 2 – Bloqueado para pronto:
 O evento externo que o processo bloqueado aguardava acontece. Nesse
caso, o processo volta para a fila de pronto para usar a CPU.
 Transição 3 e 4 – Pronto para executando e Executando para pronto:
 Realizados pelo escalonador de processos, que escolhe qual o próximo
processo será executado;
 Diversas políticas e escalonadores – Exemplo: PRIORIDADE.
12
Processos
 Analisando processos na prática no
sistema operacional:
GNU/Linux: comando nice e renice modifica
prioridade. Comando ps aux mostra
processos;
Windows: gerenciador de tarefas;
Android: Dev Tools;
Etc.
13
Escalonador de processos
 Determina qual processo utilizará a CPU quando
estiver disponível;
 Age sempre sobre os processos em estado de
PRONTO;
 Segue uma política de escolha – Algoritmo de
escalonamento;
 Rotina é executada normalmente várias vezes
por segundo.
14
Escalonador de processos
 Objetivos das políticas de escalonamento:
 Maximizar a utilização da CPU;
 Maximizar o throughput (vazão);
 Minimizar o turnaround (tempo para finalização do processo);
 Minimizar o tempo de espera;
 Minimizar o tempo de resposta;
 Ser justa;
 Maximizar o número de usuários interativos;
 Ser previsível;
 Minimizar e balancear o uso de recursos;
 Etc.
15
Escalonador de processos
 Para evitar que um processo monopolize a CPU (de propósito ou
por acidente), uma interrupção por tempo é utilizada: QUANTUM
ou TIME-SLICE;
 Um processo interrompido por término do seu QUANTUM volta à fila
em estado de PRONTO;
 Um processo utiliza a CPU até:
 Voluntariamente liberá-la;
 QUANTUM expirado;
 Outro processo exija a atenção da CPU (interrupção/prioridade);
 Erro de execução.
16
Escalonador de processos -
Prioridades
Prioridades:
Podem ser fixas durante a vida do
processo ou modificáveis;
Podem ser associadas externamente ou
de forma automatizada;
Podem ser calculadas e associadas de
forma racional ou arbitrária.
17
Escalonador de processos -
Preempção
 Não-preemptivo
 Quando um processo não pode ser interrompido por um fator externo
quando está executando;
 Deixa a CPU ou por vontade própria ou porque terminou o trabalho;
 Windows 3.1, etc.
 Preemptivo
 Pode interromper a execução de um processo para executar um outro;
 Sistemas operacionais modernos utilizam algoritmos de escalonamento
preemptivos;
 Sistemas operacionais modernos – Windows 95+, GNU/Linux, MacOS,
etc.
18
Escalonador de processos
 Algoritmos de escalonamento:
 FIFO;
 SJF (Short Job First);
 Round-Robin;
 SRT (Shortest Remaining Time);
 Prioridade;
 Múltiplas filas;
 Múltiplas filas com realimentação;
 Escalonamento para vários processadores;
 Escalonamento de tempo real.
19
FIFO – First In, First Out
 Algoritmo não preemptivo (quando entra em
execução, vai até o término);
 O processo que chega primeiro (First In) é o primeiro
a ser escolhido para usar a CPU (First Out);
 Fila de processos;
 Criado originalmente para sistemas batch;
 Injusto para processos (Jobs) curtos;
 Ineficiente para sistemas de tempo compartilhado.
20
FIFO – First In, First Out
11ms
P4
6ms
P3 9ms P2
20ms
P1
21
Tempo total de execução: 46ms
20ms
29ms
35ms
46ms
FIFO – First In, First Out 22
SJF – Shortest Job First
 Não preemptivo;
 Processo com menor tempo para ser completado é
escolhido;
 Se informação sobre tempo de execução não estiver
disponível: Estimativa. Desempate pode ser feito por
FIFO.
 Algoritmo reduz o tempo de espera, com o mínimo para
um conjunto de processos;
 Problemas: grande variância no tempo de espera,
necessidade de “prever o futuro”.
23
SJF – Shortest Job First 24
Round-Robin
 Definido um QUANTUM ou TIME-SLICE (geralmente de 10 a 100ms):
tempo limite para o processo usar a CPU;
 Após o tempo de QUANTUM, processo sofre PREEMPÇÃO e é
colocado na fila com o status de PRONTO;
 A fila de PRONTO é tratada como uma fila circular (FIFO – First In,
First Out);
 Escalonador seleciona primeiro processo da fila de PRONTO para
ser executado e define 1 QUANTUM de tempo para o
processamento;
 Se o tempo necessário para o processo finalizar for maior que 1
QUANTUM, então é feito o CHAVEAMENTO DE CONTEXTO (salva o
estado, vai para o status de PRONTO, seleciona novo processo).
25
Round-Robin
 Algoritmo preemptivo;
 Tempo médio de espera alto;
 Desempenho depende diretamente do
tamanho definido para o QUANTUM:
 Se QUANTUM for muito grande, assemelha-se ao
algoritmo de escalonamento FIFO (não preemptivo);
 Se QUANTUM for muito pequeno, o overhead com o
CHAVEAMENTO DE CONTEXTO torna-se alto demais,
prejudicando o desempenho.
26
Round-Robin 27
SRT – Shortest Remaining Time
 “SJF Preemptivo”;
 É escolhido o processo com menor tempo
para ser completado;
 Um processo em execução é
interrompido quando um novo processo
com menor tempo para ser completado
aparece na fila com o status de PRONTO;
28
SRT – Shortest Remaining Time 29
Escalonamento por Prioridade
 Cada processo tem uma prioridade associada;
 CPU é alocada para processo de maior prioridade;
 SJF pode ser considerado um caso de escalonamento por
prioridade, onde considera-se o tempo como priorização;
 Geralmente a prioridade é representada por um número – não há
convenção em relação a quais números utilizar;
 Prioridade definida:
 Internamente ou externamente.
 Problema: Starvation – Processos de baixa prioridade podem ficar
indefinidamente em estado de PRONTO;
 Solução: aumentar progressivamente a prioridade dos processos em
estado de PRONTO aguardando a vez de usar a CPU.
30
Escalonamento por Prioridade 31
Starvation:
Quando os responsáveis
foram desligar o IBM 7094
no MIT em 1973,
descobriram um processo
com baixa prioridade que
estava em estado de
PRONTO desde 1967 e
ainda não havia sido
processado.
Múltiplas filas
 Processos são previamente divididos em grupos
 Em função do tipo de processamento realizado
 Sistema;
 Interativo (foreground);
 Batch (background).
 Cada um dos grupos tem um mecanismo de escalonamento
 Interativo – Round Robin;
 Batch – FIFO;
32
Múltiplas filas 33
Múltiplas filas com realimentação
 Os processos NÃO permanecem em uma mesma fila até terminar o
processamento;
 O Sistema Operacional faz um ajuste dinâmico para ajustar os
processos em função do comportamento do sistema;
 Os processos não são previamente associados às filas, mas
direcionados pelo sistema entre as diversas filas com base no seu
comportamento;
 Parâmetros para escalonamento:
 Número de filas;
 Algoritmo de escalonamento para cada fila;
 Método para mudar o processo da fila;
 Método para determinar em que fila um processo entra.
 Método mais complexo.
34
Múltiplas filas com realimentação 35
Escalonamento para vários
processadores
 Escalonamento mais complexo;
 Processadores idênticos
 Compartilhamento de carga;
 Fila por processador;
 Fila única: compartilhamento de dados.
 Abordagens do algoritmo
 Processamento simétrico: Cada processador faz seu próprio
escalonamento;
 Mestre-escravo (assimétrico): Um algoritmo é executado em um
processador reservado somente para esse fim, e escalona os outros
processos em outros processadores.
36
Escalonamento de tempo real
 Sistemas de tempo real
 Hard Real Time: Requisitos rígidos, tempo é essencial – Uma
tarefa crítica deve ser completada dentro de um tempo
GARANTIDO
 Avião, sistemas médicos, indústria, etc.
 Soft Real Time: Requisitos flexíveis – Processo crítico recebe
prioridade sobre os outros com menor importância
 Realidade aumentada, multimídia, etc.
 Sistemas de Real Time rígidos requerem processadores
dedicados.
37
Threads
 Uma forma de um processo dividir a si mesmo;
 Threads executam “dentro” de um processo;
 Conhecidas como “Processos leves”;
 Possibilidade de associar mais de um fluxo de
execução a um processo
 Compartilhamento de recursos
 Recursos do S.O., seção de dados, seção de código.
 Comunicação entre as threads facilitada;
 Chaveamento de contexto total desnecessário.
38
Threads
Ideia básicas Processos x Threads
Processos: programa em execução
que contém um único fluxo de
execução;
Threads: programa em execução
com múltiplos fluxos de execução.
39
Threads 40
Threads
 Se um processo tem várias threads, elas compartilham
quase todos os recursos e memória;
 Cada thread tem sua própria pilha de execução e
registradores;
 Em um processo com múltiplas threads, quando uma
thread está bloqueada aguardando, uma segunda
thread no mesmo processo pode executar
 Aplicações que requerem compartilhamento de dados se
beneficiam ao usar threads.
41
Threads
Benefícios:
Velocidade de criação das threads;
Capacidade de resposta;
Compartilhamento de recursos;
Economia de recursos;
Desempenho.
42
Threads
 Principais diferenças entre Processos e Threads
 Processos são geralmente independentes, enquanto threads são
subconjuntos de um processo;
 Processos carregam muito mais informações que threads, enquanto
que múltiplas threads compartilham memória e outros recursos;
 Processos tem espaço de endereçamento separado, enquanto
threads compartilham esses endereços;
 Processos interagem somente através de mecanismos de
comunicação entre processos fornecidos pelo sistema operacional;
 Troca de contexto entre threads utiliza o mesmo procedimento que nos
processos, porém é tipicamente mais rápida.
43
Threads
 Exemplos:
Editor de texto: 1 thread “lê” o teclado, 1
thread imprime na tela, 1 thread faz a
verificação de ortografia, etc;
Google Chrome: Cada aba = 1 processo;
Mozilla Firefox: Cada aba = 1 thread;
Plug-ins: 1 processo.
44
Comunicação entre processos
 Processos executam em “cápsulas” autônomas;
 O hardware oferece proteção de memória, ou seja, um processo
não acessa outro processo.
45
Comunicação entre processos
 Processos frequentemente necessitam
comunicar-se/interagir;
 Essa comunicação é feira utilizando
mecanismos de IPC: Inter-Process
Communication;
 Essa comunicação é realizada através do
Sistema Operacional através de canais de
comunicação.
46
Comunicação entre processos 47
Comunicação entre processos
 Características desejáveis para comunicações
inter-processos:
 Rapidez;
 Simplicidade na utilização e implementação;
 Modelo de sincronização bem definido;
 Versatilidade;
 Funcionamento igual em ambientes distribuídos;
 SINCRONIZAÇÃO.
48
Comunicação entre processos
 Sincronização é uma das maiores
preocupações para comunicação entre os
processos
 Deve permitir que um processo que envia uma
mensagem indique quando o dado foi transmitido;
 Deve permitir que um processo que recebe uma
mensagem saiba quando um dado está disponível;
 Deve permitir que ambos saibam o momento exato
em que podem realizar uma nova comunicação.
49
Comunicação entre processos
 Fundamentalmente duas abordagens:
 Espaço de endereçamento cooperativo
 Memória compartilhada.
 Mecanismos do próprio Sistema Operacional para
transportar dados de um processo a outro
 Pipes;
 Sinais;
 Sockets;
 Etc.
50
Comunicação entre processos
 Memória compartilhada:
 Um mesmo segmento (trecho) de memória encontra-se no
espaço de endereçamento dos processos que estão se
comunicando;
 O Sistema Operacional oferece chamadas permitindo a
criação de uma área de memória compartilhada, mas NÃO SE
ENVOLVE DIRETAMENTE COM A COMUNICAÇÃO E
SINCRONIZAÇÃO das mensagens;
 Quando um processo realiza uma modificação, todos os
processos que compartilham aquele segmento podem ver o
que foi mudado.
51
Comunicação entre processos
 Memória compartilhada
 Vantagens:
 É possível acessar uma parte específica de uma estrutura de
dados, e não necessariamente a estrutura completa
(Random Access);
 A forma mais rápida para que dois processos troquem
dados.
 Desvantagens:
 Não há um mecanismo automático de sincronização.
52
Comunicação entre processos 53
Comunicação entre processos
 Problemas de sincronização
 PRODUTOR e CONSUMIDOR
54
Comunicação entre processos 55
Comunicação entre processos
Quais os problemas?
Condições de corrida;
Produtor mais rápido que o
consumidor;
Consumidor mais rápido que o
produtor.
Deadlock.
56
Comunicação entre processos
Quais as soluções?
Monitores;
Semáforos.
57
Problemas conceituais
Produtor/consumidor;
Jantar dos filósofos;
Barbeiro sonolento;
Etc.
58

SO02 - Sistemas-Operacionais - Gerencia de Processos.pdf

  • 1.
    Sistemas Operacionais (Parte 2) PROF SILVANOOLIVEIRA prof.silvano.oliveira@gmail.com
  • 2.
    Ementa da disciplina Estruturas de Sistemas operacionais;  Sistemas multiprogramáveis;  Gerência de processos;  Gerência de memória física;  Gerência de memória virtual;  Gerência de sistemas de arquivos;  Gerenciamento de dispositivos;  Segurança e proteção;  Introdução aos sistemas operacionais distribuídos. 2
  • 3.
    Bibliografia básica  Sistemasoperacionais: Projeto e implementação. Andrew S. Tanenbaum; Albert S. Woodhull;  Sistemas operacionais: Conceitos e aplicações. Abraham Sílberschatz; Peter Galvin; Greg Gagne;  Arquitetura de sistemas operacionais. Francis B. Machado, Luiz Paulo Maia. 3
  • 4.
    Funcionalidades  Para cumpriros objetivos de abstração e gerência, o S.O. atua em várias frentes;  Cada recurso possui suas particularidades, o que demanda exigências específicas para gerenciá-los e abstraí-los;  Principais funcionalidades implementadas por um S.O. típico:  Gerência do processador;  Gerência de memória;  Gerência de dispositivos;  Gerência de arquivos;  Gerência de proteção;  Interface gráfica;  Suporte de rede. 4
  • 5.
    Gerência do processador5 Sistema operacional Gerência do processador Gerência de memória Gerência de dispositivos Gerência de arquivos Interface gráfica Gerência de proteção Outros suportes Suporte de rede
  • 6.
    Gerência de processador Primeiros sistemas operacionais eram caracterizados por apenas um programa sendo executado por vez;  Computadores modernos = vários tarefas ao mesmo tempo;  Processador é alternado entre um programa e outro  Falsa impressão de que vários programas estão rodando ao mesmo tempo;  Pseudoparalelismo.  Para que isso seja possível, é necessário um monitoramento complexo de todas as atividades;  Foi desenvolvido um modelo que tornou o “paralelismo” mais fácil de manipular: modelo de PROCESSOS. 6
  • 7.
    Processos  Processo éum programa em execução e que tem suas informações mantidas pelo sistema operacional;  Um processo é um programa em execução. É uma unidade de trabalho dentro do sistema. Programa é uma entidade passiva, processo é uma entidade ativa;  Pode ser definido também como o ambiente onde o programa é executado, e além das informações sobre a execução, possui:  Recursos que o sistema pode utilizar;  Espaço de endereçamento;  Arquivos e outras Entradas/Saídas;  Etc. 7
  • 8.
    Processos O sistema operacionaldeve ser capaz de: Criar um processo; Reservar memória para um processo; Organizar os processos para a espera do uso da CPU. 8
  • 9.
    Processos  Os váriosprocessos criados pelo sistema operacional competem entre si pela atenção do processador;  O gerenciador de processamento do sistema operacional é responsável por estabelecer a ordem de execução;  Os processos podem estar em 3 estados:  Executando;  Pronto;  Bloqueado. 9
  • 10.
    Processos  Executando:  Quandoo processo está, de fato, sendo processado pela CPU do computador  Pronto:  Quando o processo possui todas as condições necessárias para sua execução, porém, não está de posse da CPU do computador;  Em geral, existem vários processos nesta fase, e o sistema operacional é responsável por selecionar o próximo processo a usar a CPU.  Bloqueado:  Quando o processo aguarda por algum evento externo ou por algum recurso do sistema indisponível no momento, por exemplo: informação de algum dispositivo de I/O, etc. 10
  • 11.
  • 12.
    Processo  Transições  Transição1 – Executando para bloqueado:  Um processo que estava utilizando o processador precisou de algum evento externo e não pode continuar.  Transição 2 – Bloqueado para pronto:  O evento externo que o processo bloqueado aguardava acontece. Nesse caso, o processo volta para a fila de pronto para usar a CPU.  Transição 3 e 4 – Pronto para executando e Executando para pronto:  Realizados pelo escalonador de processos, que escolhe qual o próximo processo será executado;  Diversas políticas e escalonadores – Exemplo: PRIORIDADE. 12
  • 13.
    Processos  Analisando processosna prática no sistema operacional: GNU/Linux: comando nice e renice modifica prioridade. Comando ps aux mostra processos; Windows: gerenciador de tarefas; Android: Dev Tools; Etc. 13
  • 14.
    Escalonador de processos Determina qual processo utilizará a CPU quando estiver disponível;  Age sempre sobre os processos em estado de PRONTO;  Segue uma política de escolha – Algoritmo de escalonamento;  Rotina é executada normalmente várias vezes por segundo. 14
  • 15.
    Escalonador de processos Objetivos das políticas de escalonamento:  Maximizar a utilização da CPU;  Maximizar o throughput (vazão);  Minimizar o turnaround (tempo para finalização do processo);  Minimizar o tempo de espera;  Minimizar o tempo de resposta;  Ser justa;  Maximizar o número de usuários interativos;  Ser previsível;  Minimizar e balancear o uso de recursos;  Etc. 15
  • 16.
    Escalonador de processos Para evitar que um processo monopolize a CPU (de propósito ou por acidente), uma interrupção por tempo é utilizada: QUANTUM ou TIME-SLICE;  Um processo interrompido por término do seu QUANTUM volta à fila em estado de PRONTO;  Um processo utiliza a CPU até:  Voluntariamente liberá-la;  QUANTUM expirado;  Outro processo exija a atenção da CPU (interrupção/prioridade);  Erro de execução. 16
  • 17.
    Escalonador de processos- Prioridades Prioridades: Podem ser fixas durante a vida do processo ou modificáveis; Podem ser associadas externamente ou de forma automatizada; Podem ser calculadas e associadas de forma racional ou arbitrária. 17
  • 18.
    Escalonador de processos- Preempção  Não-preemptivo  Quando um processo não pode ser interrompido por um fator externo quando está executando;  Deixa a CPU ou por vontade própria ou porque terminou o trabalho;  Windows 3.1, etc.  Preemptivo  Pode interromper a execução de um processo para executar um outro;  Sistemas operacionais modernos utilizam algoritmos de escalonamento preemptivos;  Sistemas operacionais modernos – Windows 95+, GNU/Linux, MacOS, etc. 18
  • 19.
    Escalonador de processos Algoritmos de escalonamento:  FIFO;  SJF (Short Job First);  Round-Robin;  SRT (Shortest Remaining Time);  Prioridade;  Múltiplas filas;  Múltiplas filas com realimentação;  Escalonamento para vários processadores;  Escalonamento de tempo real. 19
  • 20.
    FIFO – FirstIn, First Out  Algoritmo não preemptivo (quando entra em execução, vai até o término);  O processo que chega primeiro (First In) é o primeiro a ser escolhido para usar a CPU (First Out);  Fila de processos;  Criado originalmente para sistemas batch;  Injusto para processos (Jobs) curtos;  Ineficiente para sistemas de tempo compartilhado. 20
  • 21.
    FIFO – FirstIn, First Out 11ms P4 6ms P3 9ms P2 20ms P1 21 Tempo total de execução: 46ms 20ms 29ms 35ms 46ms
  • 22.
    FIFO – FirstIn, First Out 22
  • 23.
    SJF – ShortestJob First  Não preemptivo;  Processo com menor tempo para ser completado é escolhido;  Se informação sobre tempo de execução não estiver disponível: Estimativa. Desempate pode ser feito por FIFO.  Algoritmo reduz o tempo de espera, com o mínimo para um conjunto de processos;  Problemas: grande variância no tempo de espera, necessidade de “prever o futuro”. 23
  • 24.
    SJF – ShortestJob First 24
  • 25.
    Round-Robin  Definido umQUANTUM ou TIME-SLICE (geralmente de 10 a 100ms): tempo limite para o processo usar a CPU;  Após o tempo de QUANTUM, processo sofre PREEMPÇÃO e é colocado na fila com o status de PRONTO;  A fila de PRONTO é tratada como uma fila circular (FIFO – First In, First Out);  Escalonador seleciona primeiro processo da fila de PRONTO para ser executado e define 1 QUANTUM de tempo para o processamento;  Se o tempo necessário para o processo finalizar for maior que 1 QUANTUM, então é feito o CHAVEAMENTO DE CONTEXTO (salva o estado, vai para o status de PRONTO, seleciona novo processo). 25
  • 26.
    Round-Robin  Algoritmo preemptivo; Tempo médio de espera alto;  Desempenho depende diretamente do tamanho definido para o QUANTUM:  Se QUANTUM for muito grande, assemelha-se ao algoritmo de escalonamento FIFO (não preemptivo);  Se QUANTUM for muito pequeno, o overhead com o CHAVEAMENTO DE CONTEXTO torna-se alto demais, prejudicando o desempenho. 26
  • 27.
  • 28.
    SRT – ShortestRemaining Time  “SJF Preemptivo”;  É escolhido o processo com menor tempo para ser completado;  Um processo em execução é interrompido quando um novo processo com menor tempo para ser completado aparece na fila com o status de PRONTO; 28
  • 29.
    SRT – ShortestRemaining Time 29
  • 30.
    Escalonamento por Prioridade Cada processo tem uma prioridade associada;  CPU é alocada para processo de maior prioridade;  SJF pode ser considerado um caso de escalonamento por prioridade, onde considera-se o tempo como priorização;  Geralmente a prioridade é representada por um número – não há convenção em relação a quais números utilizar;  Prioridade definida:  Internamente ou externamente.  Problema: Starvation – Processos de baixa prioridade podem ficar indefinidamente em estado de PRONTO;  Solução: aumentar progressivamente a prioridade dos processos em estado de PRONTO aguardando a vez de usar a CPU. 30
  • 31.
    Escalonamento por Prioridade31 Starvation: Quando os responsáveis foram desligar o IBM 7094 no MIT em 1973, descobriram um processo com baixa prioridade que estava em estado de PRONTO desde 1967 e ainda não havia sido processado.
  • 32.
    Múltiplas filas  Processossão previamente divididos em grupos  Em função do tipo de processamento realizado  Sistema;  Interativo (foreground);  Batch (background).  Cada um dos grupos tem um mecanismo de escalonamento  Interativo – Round Robin;  Batch – FIFO; 32
  • 33.
  • 34.
    Múltiplas filas comrealimentação  Os processos NÃO permanecem em uma mesma fila até terminar o processamento;  O Sistema Operacional faz um ajuste dinâmico para ajustar os processos em função do comportamento do sistema;  Os processos não são previamente associados às filas, mas direcionados pelo sistema entre as diversas filas com base no seu comportamento;  Parâmetros para escalonamento:  Número de filas;  Algoritmo de escalonamento para cada fila;  Método para mudar o processo da fila;  Método para determinar em que fila um processo entra.  Método mais complexo. 34
  • 35.
    Múltiplas filas comrealimentação 35
  • 36.
    Escalonamento para vários processadores Escalonamento mais complexo;  Processadores idênticos  Compartilhamento de carga;  Fila por processador;  Fila única: compartilhamento de dados.  Abordagens do algoritmo  Processamento simétrico: Cada processador faz seu próprio escalonamento;  Mestre-escravo (assimétrico): Um algoritmo é executado em um processador reservado somente para esse fim, e escalona os outros processos em outros processadores. 36
  • 37.
    Escalonamento de temporeal  Sistemas de tempo real  Hard Real Time: Requisitos rígidos, tempo é essencial – Uma tarefa crítica deve ser completada dentro de um tempo GARANTIDO  Avião, sistemas médicos, indústria, etc.  Soft Real Time: Requisitos flexíveis – Processo crítico recebe prioridade sobre os outros com menor importância  Realidade aumentada, multimídia, etc.  Sistemas de Real Time rígidos requerem processadores dedicados. 37
  • 38.
    Threads  Uma formade um processo dividir a si mesmo;  Threads executam “dentro” de um processo;  Conhecidas como “Processos leves”;  Possibilidade de associar mais de um fluxo de execução a um processo  Compartilhamento de recursos  Recursos do S.O., seção de dados, seção de código.  Comunicação entre as threads facilitada;  Chaveamento de contexto total desnecessário. 38
  • 39.
    Threads Ideia básicas Processosx Threads Processos: programa em execução que contém um único fluxo de execução; Threads: programa em execução com múltiplos fluxos de execução. 39
  • 40.
  • 41.
    Threads  Se umprocesso tem várias threads, elas compartilham quase todos os recursos e memória;  Cada thread tem sua própria pilha de execução e registradores;  Em um processo com múltiplas threads, quando uma thread está bloqueada aguardando, uma segunda thread no mesmo processo pode executar  Aplicações que requerem compartilhamento de dados se beneficiam ao usar threads. 41
  • 42.
    Threads Benefícios: Velocidade de criaçãodas threads; Capacidade de resposta; Compartilhamento de recursos; Economia de recursos; Desempenho. 42
  • 43.
    Threads  Principais diferençasentre Processos e Threads  Processos são geralmente independentes, enquanto threads são subconjuntos de um processo;  Processos carregam muito mais informações que threads, enquanto que múltiplas threads compartilham memória e outros recursos;  Processos tem espaço de endereçamento separado, enquanto threads compartilham esses endereços;  Processos interagem somente através de mecanismos de comunicação entre processos fornecidos pelo sistema operacional;  Troca de contexto entre threads utiliza o mesmo procedimento que nos processos, porém é tipicamente mais rápida. 43
  • 44.
    Threads  Exemplos: Editor detexto: 1 thread “lê” o teclado, 1 thread imprime na tela, 1 thread faz a verificação de ortografia, etc; Google Chrome: Cada aba = 1 processo; Mozilla Firefox: Cada aba = 1 thread; Plug-ins: 1 processo. 44
  • 45.
    Comunicação entre processos Processos executam em “cápsulas” autônomas;  O hardware oferece proteção de memória, ou seja, um processo não acessa outro processo. 45
  • 46.
    Comunicação entre processos Processos frequentemente necessitam comunicar-se/interagir;  Essa comunicação é feira utilizando mecanismos de IPC: Inter-Process Communication;  Essa comunicação é realizada através do Sistema Operacional através de canais de comunicação. 46
  • 47.
  • 48.
    Comunicação entre processos Características desejáveis para comunicações inter-processos:  Rapidez;  Simplicidade na utilização e implementação;  Modelo de sincronização bem definido;  Versatilidade;  Funcionamento igual em ambientes distribuídos;  SINCRONIZAÇÃO. 48
  • 49.
    Comunicação entre processos Sincronização é uma das maiores preocupações para comunicação entre os processos  Deve permitir que um processo que envia uma mensagem indique quando o dado foi transmitido;  Deve permitir que um processo que recebe uma mensagem saiba quando um dado está disponível;  Deve permitir que ambos saibam o momento exato em que podem realizar uma nova comunicação. 49
  • 50.
    Comunicação entre processos Fundamentalmente duas abordagens:  Espaço de endereçamento cooperativo  Memória compartilhada.  Mecanismos do próprio Sistema Operacional para transportar dados de um processo a outro  Pipes;  Sinais;  Sockets;  Etc. 50
  • 51.
    Comunicação entre processos Memória compartilhada:  Um mesmo segmento (trecho) de memória encontra-se no espaço de endereçamento dos processos que estão se comunicando;  O Sistema Operacional oferece chamadas permitindo a criação de uma área de memória compartilhada, mas NÃO SE ENVOLVE DIRETAMENTE COM A COMUNICAÇÃO E SINCRONIZAÇÃO das mensagens;  Quando um processo realiza uma modificação, todos os processos que compartilham aquele segmento podem ver o que foi mudado. 51
  • 52.
    Comunicação entre processos Memória compartilhada  Vantagens:  É possível acessar uma parte específica de uma estrutura de dados, e não necessariamente a estrutura completa (Random Access);  A forma mais rápida para que dois processos troquem dados.  Desvantagens:  Não há um mecanismo automático de sincronização. 52
  • 53.
  • 54.
    Comunicação entre processos Problemas de sincronização  PRODUTOR e CONSUMIDOR 54
  • 55.
  • 56.
    Comunicação entre processos Quaisos problemas? Condições de corrida; Produtor mais rápido que o consumidor; Consumidor mais rápido que o produtor. Deadlock. 56
  • 57.
    Comunicação entre processos Quaisas soluções? Monitores; Semáforos. 57
  • 58.
    Problemas conceituais Produtor/consumidor; Jantar dosfilósofos; Barbeiro sonolento; Etc. 58