estruturas de sistemas operacionais
DESCRIPTION
Informações sobre sistemas operacionaisTRANSCRIPT
Estruturas de Sistemas Operacionais
Estruturas de Sistemas OperacionaisComponentes 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
ProcessoUm programa em execução
Programa - entidade estáticaProcesso - entidade dinâmica
Estruturas de Sistemas OperacionaisUm processo é composto por:
– Programas– Dados– Contexto(valores)
Características/Propriedades de um processoUm 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)
ThreadDenota 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
EscalonadorPrograma que controla/decide que thread deve ser executada a cada instante
Ciclos de um processo :Processos são:• criados
– Momento da execução– Chamada de Sistema– Normalmente associados a uma sessão de trabalho ( Login name )
• Destruídos– Término da execução– Por outros processos
Processos apresentam dois ciclos básicos de operação:• Ciclo de processador
– Tempo que ocupa a CPU
• Ciclo de Entrada/Saída– Tempo de espera de um evento E/SA troca de ciclos ocorre por:– Chamada de Sistema ( CPUÝE/S)– Interrupção ( E/S ÝCPU )– Ocorrência de Evento ( E/S ÞCPU )
• Processos CPU-boound– Ciclo de processador >> Ciclo de E/S
• Processos I/O bound– Ciclo de E/S>> Ciclo de processador
Relacionamentos entre Processos/UsuáriosProcessos Independentes– Não apresentam relacionamentos com outros processosGrupo 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
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
Pronto Executando
Bloqueado
CriaçãoTérminoEscalonador
Prazo
E/SEvento
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
EscalonadorCada 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
}
Estados de Processos UNIX
fork
Preempetd
User
Running
Kernel
Running
Created
Ready to
Run in Memory
Ready to
Run Swapped
Asleep in
MemorySleep,
SwappedZombie
Memória
Suficiente
Não há memória
suficiente
Swap out
Swap in
wakeup
Swap out
wakeup
preempt
Rescheduleprocess
Interrupt,
interrupt returnexit
sleep
returnSystem Call,interrupt
Transições de Estados UNIX
User Running Executando no Modo UsuárioKernel Running Executando no Modo KernelReady to run, in Memory Pronto para executar, tão logo o Kernel o escaloneAsleep 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á-loSleeping, 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 processoCreated O processo foi recentemente criado e ainda não está prontoZombie Processo não mais existe, mas deixou um registro para o seu
processo pai capturá-lo
fork
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
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
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
Proteção de Periféricos• Instruções de E/S são privilegiadas• Interrupções de Software (traps) para chamadas de sistema
Sistema Operacional Processo
Usuário
Int ( periférico )
Int ( proteção)
instrução
Interrupção de Software
Processos usuários realizam operações de E/S através de Chamadas de Sistema
•Normalmente baseada em Interrupção de Software
•Acionamento da Rotina de Tratamento de Interrupção
•Identificação do serviço requisitado
•Verificação da Validade dos parâmetros
•Execução do serviço
•Retorno ao processo do usuário
return
call
Processo USR
Biblioteca Serviços
Kernel SOtrap
resultado
Sistema Operacional com estrutura simples ( Monolítica )
return
Chamada Kernel
Processo USR2
Biblioteca Serviços
Kernel SOtrap
resultado
Processo USR1
•Seleção serviço
•Localização
•Execução
•Retorno
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 de terminalSistema de I/O de caracteresdrivers de terminal
Sistema de arquivosSwappingDrivers de Disco e fita
Escalonamento
Substituição de páginas
Interface do kernel para o hardware
Controladoras terminTerminais Controladora Disp
Discos e fitas
Controladora MemóriaMemória ísisca
Sistema Operacional com estrutura em Camadas
Camada M
Camada M-1Operações ocultas
Operações existentes
Novas Operaçòes
Estrutura em camadas do OS/2
Interface de chamada ao sistema para o kernel
Gerência de MemóriaAlocação de tarefasgerência de dispositivos
Aplicação Aplicação Aplicação
Extensão de API
Subsistema Subsistema Subsistema
Kernel do Sistema
Driver Disp Driver DispDriver Disp Driver Disp
Estrutura Microkernel
Aplicação Aplicação
Gerência de MemóriaGerência de ProcessosGerência de comunicação
Kernel do Sistema
Servidor
WIN32
Servidor
OS/2
Estrutura do Sistema Operacional - Máquinas Virtuais
VM!
KernelKernel Kernel
VM2 VM2
Implementação de Máquina Virtual
Hardware
Processos
Processos
Processos
Estrutura Cliente Servidor em Ambiente Distribuído
Cliente
KernelKernelKernelKernel
ServidorArquivo
Servidor de Processos
Servidor de term
Máquina 1 Máquina 2 Máquina 3 Máquina n
Máquina Virtual Java
Carregador de ClassesArquivos .classAplicação
Arquivos .classda API java
Interpretador JAVA
bytecodes
Sistema Host
ProgramaJava
ProgramaJava
ProgramaJava
ProgramaJava
Plataforma Java
Plataforma Java
Plataforma Java
Plataforma Java
Unix Windows Navegador Chip java
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