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
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
4. 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
5. 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
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 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
9. 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
10. 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
12. 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
13. 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
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 – 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
21. FIFO – First In, First Out
11ms
P4
6ms
P3 9ms P2
20ms
P1
21
Tempo total de execução: 46ms
20ms
29ms
35ms
46ms
23. 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
25. 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
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
28. 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
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 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.
32. 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
34. 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
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 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
38. 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
39. 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
41. 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
43. 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
44. 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
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
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
56. 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