Sistemas Operacionais
Sumário System Calls Interrupções e exceções Arquitetura de um SO Tratamento de interrupções Múltiplas interrupções Estruturas de controle Arquitetura de um SO Arquitetura monolítica Arquitetura em camadas Máquina virtual Arquitetura microkernel Tendências
Introdução Sistema computacional
System Calls (1) Método empregado para um processo usuário solicitar serviços ao sistema operacional Normalmente baseada em interrupções de software (traps) Aciona a rotina de tratamento de interrupção Identifica serviço requisitado Verifica validade dos parâmetros Executa o serviço Retorna ao processo do usuário
System Calls (2) System calls
System Calls (3) Chamada a uma rotina do sistema
System Calls (4) Funções Tipos de instruções Modos de acesso Gerência de processos e threads Gerência de memória Gerência do sistema de arquivos Gerência de dispositivos Tipos de instruções Privilegiadas Não-privilegiadas Modos de acesso Usuário Kernel ou supervisor
Interrupção e Exceção (1) Tratamento de interrupções - É feito pelo SO, que determina a natureza da interrupção e dispara a Rotina de Serviço adequada para executar as ações que forem necessárias. Detalhes: A execução do programa corrente é suspensa O endereço da Rotina de Serviço é localizado na tabela de interrupções O status do programa corrente é salvo (conteúdo do PC, PSW) O controle do processador é transferido para a rotina de serviço A rotina de SV pode salvar outros dados da tarefa em execução (registradores, ...) O ponto de interrupção pode ocorrer em qualquer parte do programa As rotinas de serviço normalmente fazem parte do Sistema Operacional Existe um “Overhead” adicional para ativar e executar a rotina de serviço.
Interrupção e Exceção (2) Mecanismo de Interrupção e Exceção
Interrupção e Exceção (3) Dispositivo de controle ou outro sistema de hardware que permita ativar uma interrupção Hardware Software Processador termina a execução da instrução corrente Processador reconhece sinal de interrupção Processador coloca PSW e PC na pilha de controle Processador carrega novo valor do PC, baseado na interrupção Salva informações remanescentes sobre o estado do processo Processa a interrupção Restaura a informação do estado do processo Restaura o velho PSW e PC (Rotina de serviço) Fluxo de Proces- samento de uma Interrupção
Múltiplas interrupções (1) Programa do usuário Interrupção Rotina X Rotina Y Modelo seqüencial A Rotina de Serviço desabilita as interrupções Uma nova interrupção só é tratada após o retorno A interrupção pode demorar a ser tratada, o que pode eventualmente ocasionar uma perda de dados Finalizada a Rotina de Serviço de interrupção, o processador checa por interrupções adicionais
Múltiplas interrupções (2) Programa do usuário Interrupção Rotina X Rotina Y Modelo cascata Interrupções têm prioridade Interrupções com alta prioridade interrompem rotinas de serviço de interrupções de menor prioridade Exemplos de prioridade: impressora disco comunicação - +
Estruturas de controle Memória Dispositivos Arquivos Processos Tabelas de Memória Tabelas de E / S Tabelas de Arquivos Tabela de Processos Processo 1 Processo 2 Processo 3 Processo n imagem do processo
Modo de execução do SO Modo usuário instruções associadas ao uso não privilegiado Modo kernel instruções associadas ao uso privilegiado Configuração: Onde ?? Um bit do PSW Quando ??? em resposta a determinados eventos
Arquitetura de um SO (*) “Só por prazer” – Linus Torvalds x Tanenbaum Usuário (*) Residente Residente kernel Sistema Monolítico Sistema Modular (camadas) Cliente / Servidor (*) “Só por prazer” – Linus Torvalds x Tanenbaum
Arquitetura monolítica (1) Dominou até os primeiros grandes sistemas para Mainframes. CTSS (MIT, 1963) – 32.000 instruções de 36 bits cada OS/360 (IBM, 1964) – mais de 1 milhão de instruções MULTICS (MIT e Bell Labs) – mais de 20 milhões de instruções Problemas: Bugs Memória Complexidade Arquitetura Modular e, posteriormente, em Camadas.
Arquitetura Monolítica (2)
Drivers de Dispositivo Arquitetura do MS-DOS Vários sistemas comerciais não têm uma estrutura definida, e o MS-DOS é um deles. No MS-DOS as interfaces e níveis de funcionalidade não são bem separados nem estão unificados de forma monolítica. Drivers de Dispositivo do MS-DOS Programa aplicativo Programa SO residente Drivers de Dispositivo da BIOS (*) O excesso de liberdade torna o SO vulnerável.
Arquitetura em camadas O sistema é dividido em níveis sobrepostos. Cada nível oferece funções que só podem ser utilizadas pelas camadas mais externas. kernel Usuário Executivo Supervisor THE (Technische Hogeschool Eindhoven – 1968) – primeiro em camadas (6) MULTICS e OpenVMS foram os seguintes, projetando-as concêntricas Atualmente a maioria adota 2 camadas (kernel – privilegiado e usuário – não privilegiado) – UNIX e Win2000 Arquitetura do OpenVMS
Interface Chamada Sistema Arquitetura de um UNIX tradicional Subsistema Arquivo Programas Usuário Dispositivos Drivers Caractere Bloco Controle de Hardware Hardware Buffer Cache Controle Processo Comunicação entre processos Escalonamento Gerenciamento Memória Interface Chamada Sistema Bibliotecas Trap Nível Usuário Nível Kernel Nível Hardware
Arquitetura kernel (cliente servidor) Modo Kernel Modo Usuário Servidor Arquivos Processos Memória Rede Impressão mKernel Hardware mensagens
Arquitetura kernel do UNIX Common Facilities STREAMS Virtual Memory Framework Block Device Switch Exec Vnode/vfs Interface Scheduler Time-Sharing Processes System S5FS RFS FFS NFS Elf Coff A.out File Mappings Device Mappings Disk Driver Tape Driver Network Driver Tty Driver Anonymous Mappings
Hardware Abstraction Layer (HAL) Arquitetura Windows NT Modo Kernel Hardware Subsistema Posix Microkernel Hardware Abstraction Layer (HAL) Dispositivo Drivers Gerenciamento E/S Objeto Proteção Referente Monitor Processo Chamada Procedimento Local Memória Virtual Windows & GDI Serviços Executivos Segurança OS/2 CRS Aplicação Winlogon Win32 DOS Win 16 NTVDM Modo Usuário
Arquitetura cliente servidor do Windows NT Aplicativo Win32 Servidor OS/2 POSIX Kernel WIN NT O Kernel controla toda a troca de mensagens entre a aplicação e o respectivo servidor.
Máquina virtual Uma máquina real pode abrigar internamente diferentes ambientes virtuais, cada um simulando uma máquina distinta, com memória, SO, recursos e processos próprios. Desta forma, cada usuário (ou aplicativo) parece possuir sua própria máquina Hardware Kernel Processos Máquina Não-Virtual Hardware Máquina Virtual MV1 MV2 MV3 Processos Kernel1 Kernel2 Kernel3
Máquina virtual Java Sistema Host Aplicação JAVA Carregador de Classes Interpretador Java arquivos .class Programa Java da API Java bytecodes Sistema Host (*) Máquina Virtual JAVA Hardware Sistema Operacional Aplicação JAVA (*) Dependente do Hardware
Ambiente de desenvolvimento JAVA Prog1.java Prog2.java Compilador Java Prog1.class Prog2.class Carregador de Classes Interpretador Java arquivos .class da API Java bytecodes Sistema Host Ambiente de Compilação Ambiente de Execução (plataforma Java)
Tendências nos sistemas atuais Arquitetura MicroKernel Sistema MultiThread Múltiplos Processadores Simétricos Distribuído Projeto Orientado a Objetos
Tópicos a serem abordados Gerenciamento de Memória Descrição de Processo e Controle Concorrência de Arquivo Rede Segurança de E/S Escalonamento
FIM Sistemas Operacionais – Jorge Luiz de Castro e Silva