2. Estruturas de Sistemas Operacionais
Componentes do Sistema
– Gerência de processos
– Gerência de memória principal
– Gerência de arquivos
– Gerência de I/O
– Gerência de armazenamento secundário
– Sistemas de Proteção
– Gerência de Redes/Sistemas distribuídos
Processos/Multiprogramação
Por que executar vários programas simultaneamente?
– Permitir que vários usuários usem uma máquina simultaneamente
– Melhorar a eficiência do sistema
Processo
Um programa em execução
Programa - entidade estática
Processo - entidade dinâmica
3. Estruturas de Sistemas Operacionais
Um processo é composto por:
– Programas
– Dados
– Contexto(valores)
Características/Propriedades de um processo
Um processo é uma abstração que representa um programa em execução
– Um processo tem execução sequencial
– O resultado da execução de um processo independe da velocidade do processador em que for
executado
– O mesmo programa executado por dois usuários gera dois processos
– Um programa pode chamar(criar) vários processos
– Um processo tem duas partes:
• Ativa - fluxo de controle
• Passiva - espaço de endereçamento (memória, registradores, arquivos)
Thread
Denota um fluxo de controle ( Processo leve)
– Por questão de eficiência, processos podem ter múltiplas threads que compartilham o espaço de
endereçamento do processo
Escalonador
Programa que controla/decide que thread deve ser executada a cada instante
5. Relacionamentos entre Processos/Usuários
Processos Independentes
– Não apresentam relacionamentos com outros processos
Grupo de Processos
– Apresentam algum tipo de relacionamento , por exemplo, hierarquia de processos com mesma
filiação
• Processo criador é o processo pai
• Processo criado é o processo filho
• Representação através de uma árvore
• Evolução dinâmica
– O que fazer na destruição de um processo?
– Toda descendência morre?
– A descendência é herdada pelo processo “avô”?
– Postergar a destruição efetiva do processo pai até o final de todos os filhos?
Estados de um processo:
Após ser criado, um processo precisa entrar num ciclo de processador
– Possibilidades:
• Processador não está disponível
• Vários processos estão sendo criados
– O que fazer então?
• Criar uma fila de processos prontos para executar
6. Diagrama de transição de estados de um processo
• Um escalonador, através do uso da fila de processos prontos(aptos para a execução)
atribui a cada instante, o processador a um dos processos
Criação
Escalonador Término
Pronto Executando
Prazo
Evento
E/S
Bloqueado
7. Término de processos
– Final normal da execução
– Excesso de tempo
– Falta de memória
– Violação de limites
– Erros de proteção
– Erros aritiméticos
– Timeout de eventos
– Erro em periféricos de E/S
– Execução de instruções inválidas
– Intervenção do SO
– Logoff de usuários
Tipos de Chamadas de Sistemas para Controle de Processos
– end, abort
– load, execute
– create process, terminate process
– get process attributes, set process attributes
– wait for time
– wait event, signal event
– allocate, free memory
8. Escalonador
Cada processo é representado por um PCB ( Process Control Block) que contém
– Estado do processo: ( Rodando, Pronto ou bloqueado)
– Número do processo
– Contador de Programa
– Registradores
– Localização da pilha de execução
– Prioridade de execução, etc
While (true) {
espera_evento( ); // Espera por E/S; Espera por outro processo; pausa, erro
salva_processo_corrente( ); // guarda os dados dos registradores no PCB do processo corrente
escolhe_novo_processo( ); // escolhe um processo da fila de prontos
// FIFO, Round-robin, prioridades, etc
carrega_novo_processo( ) // Carrega os dados do PCB do processo escolhido nos registradores
}
9. fork
Estados de Processos UNIX
Preempetd
Created
Não há memória
Memória
User suficiente
preempt
Suficiente
Running
return Ready to Swap out Ready to
System Call, Reschedule
interrupt process Run in Memory Swap in Run Swapped
Kernel
Running
sleep
Interrupt, wakeup
exit wakeup
interrupt return
Asleep in Swap out Sleep,
Zombie
Memory Swapped
10. fork
Transições de Estados UNIX
User Running Executando no Modo Usuário
Kernel Running Executando no Modo Kernel
Ready to run, in Memory Pronto para executar, tão logo o Kernel o escalone
Asleep in Memory Desabilitado para Execução até que ocorra um evento; processo
está na memória principal ( estado bloqueado)
Ready to Run, swapped O processo está pronto, mas o swapper precisa transferí-lo para a
memória principal, antes do kernel poder escaloná-lo
Sleeping, swapped O processo está aguardando um evento e se encontra em memória
secundária (estado bloqueado)
Preempeted O processo está retornando do modo kernel para o modo usuário;
o kernel o retira do estado rodando e escalona outro processo
Created O processo foi recentemente criado e ainda não está pronto
Zombie Processo não mais existe, mas deixou um registro para o seu
processo pai capturá-lo
11. Suporte de Hardware a Multiprogramação
• A implementação da multiprogramação explora características de Hardware dos processadores
• Mecanismos básicos
– Dois modos de operação
• Kernel/Supervisor (privilegiado)
• Usuário
• Interrupção
• Proteção de periféricos, memória e processador
Mecanismo de Interrupção
• Sinaliza a ocorrência de algum evento
• Provoca a execução de uma rotina especial
– Tratador de interrupção
• Ciclo de Execução de interrupção
– Preparação da transferência do controle para o tratador - salvamento do contexto de execução
– Desvio do controle para o tratador
– Retorno da execução - Restauração do contexto original
12. Mecanismos de Interrupção
• Tipos de Interrupção
– Hardware- evento externo
– Software - execução de uma instrução específica (trap)
– Exceção - Erros de execução( overflow, underflow)
– Identificadas por um número - Endereço (Vetor de Interrupção )
• Prioridades
• Instruções privilegiadas
Modos de operação do processador
• O compartilhamento de recursos deve garantir que a execução incorreta de um programa não interfira
na execução de outro programa
• A arquitetura de processadores oferecem mecanismos para diferenciar pelo menos dois tipos
diferentes de operação
• Modos de operação do processador
– Modo usuário
• Certas instruções não podem ser executadas
• Modo de execução dos processos usuários
– Modo Kernel/Supervisor(protegido)
• Possibilita a execução de todas as instruções do processador
• Modo de execução do sistema operacional
• Chaveamento entre modos
– Interrupção - modo usuário ¨ modo protegido
– Instrução - modo protegido ¨ modo usuário
13. Proteção de Memória
• Necessário para evitar que um usuário não altere a memória pertencente a outros processos
• Baseado em facilidades de arquiteturas de processadores
– Registro de base
– Registro de limite
• Faixa de memória fora da fronteira delimitada pelos registradores base e limite é protegida
• Técnica aplicada para proteger dispositivos de E/S - mapeamento de memória
Proteção de Processador
• Para garantir a execução do Sistema Operacional, uma interrupção de tempo deve
ocorrer periodicamente
• Interrupção de tempo
– Empregada para implementar multiprogramação
– Mantém contabilização do tempo para o Sistema Operacional
14. Proteção de Periféricos
• Instruções de E/S são privilegiadas
• Interrupções de Software (traps) para chamadas de sistema
instrução
Int ( periférico )
Sistema Operacional Processo
Int ( proteção) Usuário
Interrupção de Software
Processos usuários realizam operações de E/S através de Chamadas de Sistema
Processo USR
•Normalmente baseada em Interrupção de Software
resultado
•Acionamento da Rotina de Tratamento de Interrupção call
• Identificação do serviço requisitado Biblioteca Serviços
• Verificação da Validade dos parâmetros
return
• Execução do serviço trap Kernel SO
• Retorno ao processo do usuário
15. Sistema Operacional com estrutura simples ( Monolítica )
Processo USR1
Processo USR2
Chamada Kernel resultado
Biblioteca Serviços
return
trap Kernel SO
•Seleção serviço
•Localização
•Execução
•Retorno
16. Estrutura do Sistema Operacional UNIX
Usuários
Shells e comandos
Compiladores e Interpretadors
Bibliotecas do sistema
Interface de chamada ao sistema para o kernel
Tratamento de sinal Sistema de arquivos Escalonamento
de terminal Swapping
Substituição de páginas
Sistema de I/O de Drivers de Disco e
fita
caracteres
drivers de terminal
Interface do kernel para o hardware
Controladoras termin Controladora Memória
Terminais Controladora Disp
Memória ísisca
Discos e fitas
17. Sistema Operacional com estrutura em Camadas
Camada M
Novas
Operaçòes
Camada M-1
Operações ocultas
Operações
existentes
18. Estrutura em camadas do OS/2
Aplicação Aplicação Aplicação
Extensão de API
Interface de chamada ao sistema para o kernel
Subsistema Subsistema Subsistema
Gerência de Memória
Kernel do
Alocação de tarefas
Sistema
gerência de dispositivos
Driver Disp Driver Disp Driver Disp Driver Disp
19. Estrutura Microkernel
Aplicação Aplicação
Servidor Servidor
WIN32 OS/2
Gerência de Memória
Kernel do
Gerência de Processos
Sistema
Gerência de comunicação
20. Estrutura do Sistema Operacional - Máquinas Virtuais
Processos
Processos
Processos
Kernel Kernel Kernel
VM! VM2 VM2
Implementação de Máquina Virtual
Hardware
21. Estrutura Cliente Servidor em Ambiente Distribuído
Máquina 1 Máquina 2 Máquina 3 Máquina n
Servidor Servidor
Servidor de
Cliente Arquivo de term
Processos
Kernel Kernel Kernel Kernel
22. Máquina Virtual Java
Arquivos .class Carregador de Classes Arquivos .class
Aplicação da API java
bytecod
es
Interpretador JAVA
Sistema Host
Programa Programa Programa Programa
Java Java Java Java
Plataforma Plataforma Plataforma Plataforma
Java Java Java Java
Unix Windows Navegador Chip java
23. Princípios para Projeto e Implementação de Sistemas
• Separação entre Políticas e Mecanismos (Flexibilidade)
– Política denota o que fazer (pode mudar frequentemente)
– Mecanismo determina como fazer
• Implementação
– Linguagens: de baixo nível: assembly
– Linguagens de alto nível: C, Java