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
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
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
Quandoumprocessonãopodeserinterrompidoporumfatorexterno
quandoestáexecutando;
DeixaaCPUouporvontadeprópriaouporqueterminouotrabalho;
Windows3.1,etc.
Preemptivo
Podeinterromperaexecuçãodeumprocessoparaexecutarumoutro;
Sistemasoperacionaismodernosutilizamalgoritmosdeescalonamento
preemptivos;
Sistemasoperacionaismodernos–Windows95+,GNU/Linux,MacOS,
etc.
18
Escalonador de processos
Algoritmos de escalonamento:
FIFO;
SJF (Short JobFirst);
Round-Robin;
SRT (ShortestRemainingTime);
Prioridade;
Múltiplas filas;
Múltiplas filas com realimentação;
Escalonamento para vários processadores;
Escalonamento de tempo real.
19
FIFO –FirstIn, FirstOut
Algoritmo não preemptivo(quando entra em
execução, vai até o término);
O processo que chega primeiro (FirstIn) é o primeiro
a ser escolhido para usar a CPU (FirstOut);
Fila de processos;
Criado originalmente para sistemas batch;
Injusto para processos (Jobs) curtos;
Ineficiente para sistemas de tempo compartilhado.
20
FIFO –FirstIn, FirstOut
11ms
P4
6ms
P3
9ms
P2
20ms
P1
21
Tempo total de execução: 46ms
20ms29ms35ms46ms
FIFO –FirstIn, FirstOut 22
SJF –ShortestJobFirst
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 –ShortestJobFirst 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 –FirstIn,
FirstOut);
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 statusde PRONTO, seleciona novo processo).
25
SRT –ShortestRemainingTime
“SJFPreemptivo”;
Éescolhidooprocessocommenortempo
parasercompletado;
Um processo em execução é
interrompidoquandoumnovoprocesso
commenortempoparasercompletado
aparecenafilacomostatusdePRONTO;
28
SRT –ShortestRemainingTime 29
Escalonamento por Prioridade
Cadaprocessotemumaprioridadeassociada;
CPUéalocadaparaprocessodemaiorprioridade;
SJFpodeserconsideradoumcasodeescalonamento por
prioridade,ondeconsidera-seotempocomopriorização;
Geralmenteaprioridadeérepresentadaporumnúmero–nãohá
convençãoemrelaçãoaquaisnúmerosutilizar;
Prioridadedefinida:
Internamenteouexternamente.
Problema:Starvation–Processosdebaixaprioridadepodemficar
indefinidamenteemestadodePRONTO;
Solução:aumentarprogressivamenteaprioridadedosprocessosem
estadodePRONTOaguardandoavezdeusaraCPU.
30
Escalonamento por Prioridade 31
Starvation:
Quandoosresponsáveis
foramdesligaroIBM7094
no MIT em 1973,
descobriramumprocesso
combaixaprioridadeque
estavaemestadode
PRONTO desde1967e
aindanãohaviasido
processado.
Escalonamento para vários
processadores
Escalonamentomaiscomplexo;
Processadoresidênticos
Compartilhamentodecarga;
Filaporprocessador;
Filaúnica:compartilhamentodedados.
Abordagensdoalgoritmo
Processamento simétrico:Cada processadorfazseupróprio
escalonamento;
Mestre-escravo(assimétrico):Umalgoritmoéexecutadoemum
processadorreservadosomenteparaessefim,eescalonaosoutros
processosemoutrosprocessadores.
36
Escalonamento de tempo real
Sistemasdetemporeal
HardRealTime:Requisitosrígidos,tempoéessencial–Uma
tarefacríticadevesercompletadadentrodeumtempo
GARANTIDO
Avião,sistemasmédicos,indústria,etc.
SoftRealTime:Requisitosflexíveis–Processocríticorecebe
prioridadesobreosoutroscommenorimportância
Realidadeaumentada,multimídia,etc.
SistemasdeRealTimerígidosrequeremprocessadores
dedicados.
37
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
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
Processosexecutamem“cápsulas”autônomas;
Ohardwareofereceproteçãodememória,ouseja,umprocesso
nãoacessaoutroprocesso.
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
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
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
(RandomAccess);
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