Infra-Estrutura de Software Introdução
Material de Estudo Transparências das aulas http://www.cin.ufpe.br/~cagf/if677/2013-1/ Livros Parte I: Sistemas Operacionais Modernos 2ª Edição. A. Tanenbaum, 2003 Opção: Modern Operating Systems 3e. Prentice-Hall, 2008 (Já em Português, edição 2010) Parte II: Distributed Systems: Principles and Paradigms. Andrew Tanenbaum, Maarten van Steen. Prentice-Hall, 2002 Distributed Systems: Concepts and Design (4th / 5th Edition). George Coulouris, Jean Dollimore, Tim Kindberg. Addison-Wesley, 2005 / 2011 2
Algumas datas já definidas Atividades em conjunto com EC Ter, 28/05 e Qui, 20/06/2013: Aulas de Linux, monitores, à tarde Ter, 04/06/2013: Aula de ASM (Assembly) e divulgação da Lista de exercício, monitores, pela manhã Qui, 13/06/2013: Aula sobre Projeto Bootloader, monitores Entrega da lista de ASM Qui, 27/06/2013: Entrega do Projeto Bootloader, monitores Divulgação da Lista de exercício sobre Threads Ter, 16/07/2013: Entrega da Lista de exercício sobre Threads Divulgação do mini-exercício de escalonamento Qui, 25/07/2013: Entrega do mini-exercício sobre escalonamento Ter, 06/08/2013: Divulgação do mini-exercício sobre paginação Qui, 15/08/2013: Entrega do mini-exercício sobre paginação 3
Visão ampla: grande porte, desktops, tablets, celulares, TV etc. 4 grupos básicos: processamento, memória, armazenamento (arquivos), entrada e saída 4
Usuários Aplicações de software de software usam o hardware diretamente Arquitetura de hardware de um computador típico 5
Usuários Aplicações de software Software é abstrato Infra-estrutura de software de hardware e de recursos Arquitetura de hardware de um computador típico Hardware é concreto (físico) 6
E se o sistema for distribuído em rede? Ex.: Web browser e servidor É preciso gerenciar também recursos de rede/ comunicação, entre outras coisas Um middleware [é um conjunto de serviços que] dá suporte a sistemas de software distribuídos 7
Pilha TCP/IP Pilha TCP/IP 8
Computador Moderno Componentes físicos (hardware) Um ou mais processadores Memória Um Sistema Discos Impressoras Vários outros dispositivos de E/S (tela, mouse ) Complexo!!! Gerenciar todos componentes requer abstração um modelo mais simples do computador É isso que é o sistema operacional
Concreto Tangível Abstrato Intangível Hardware Software COMPLEXIDADE 10
Sistema Computacional em Camadas Não pode executar instruções que afetam o controle da máquina ou fazem E/S GUI ou shell Acesso completo a todo o hardware e pode executar qualquer instrução que a máquina seja capaz de executar Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved.
Sistema Operacional Máquina Abstrata Gerenciador de Recursos 12
Máquina Estendida Sistemas operacionais tornam o hardware pouco atraente em abstrações mais interessantes Abstrações Processos" Memória Virtual" Arquivos" Processador " Memória" Dispositivos E/S"
SO: Interface de Usuário - Shell
SO: Interface de Usuário - GUI
Gerenciador de Recursos Gerencia e protege memória, dispositivos de E/S e outros recursos (hardware) Permite o compartilhamento (multiplexação) de recursos no tempo (time-sharing) Ex.: múltiplos programas compartilham o processador (executam) ao mesmo tempo no espaço Ex.: dados de diferentes usuários/arquivos compartilham o espaço em disco
Hardware 17
Um pouco de um computador típico CPU" Register file" PC" ALU" System bus" Memory bus" Bus interface" I/O " bridge" Main" memory" USB" controller" Graphics" adapter" I/O bus" Disk " controller" Expansion slots for" other devices such" as network adapters" Mouse"Keyboard" Display" Disk" Randal E. Bryant, David R. O'Hallaron. Computer Systems: A Programmer's Perspective. Prentice Hall, 2003
CPU: Central Processing Unit Unidade de Controle ALU: Unidade Aritmética e Lógica Registradores Funcionam como memória de acesso extremamente rápida Baixa capacidade de armazenamento Funções específicas Exemplos de registradores PC (program counter): contém o endereço da próxima instrução a ser executada Instruction register: onde é copiada cada instrução a ser executada A CPU, seguidamente, executa instruções requisitadas à memória Ciclo fetch-decode-execute: 1. busca instrução na memória 2. atualiza PC 3. decodifica instrução 4. executa instrução
Barramentos e Dispositivos de E/S Barramentos: conduítes elétricos que carregam a informação entre os vários componentes da máquina Dispositivos de E/S: Conexão da máquina com o mundo externo Conectados ao barramento de E/S por controladores (chips no próprio dispositivo ou na placa mãe) ou adaptadores (quando placa separada)
Memória Logicamente, a memória principal corresponde a um enorme vetor (array) de bytes cada posição tem um endereço único (índice do vetor) Os registradores da CPU muitas são usados para armazenar endereços de memória Assim, o número de bits em cada registrador limita o número de posições de memória endereçáveis Ex.: 8 bits è 256 posições
Hierarquia de Memória Smaller," faster," and " costlier" (per byte)" storage " devices" L2:" L0:" Registers" L1:" On-chip L1" cache (SRAM)" Off-chip L2" cache (SRAM)" CPU registers hold words retrieved from cache memory." L1 cache holds cache lines retrieved from the L2 cache." L2 cache holds cache lines retrieved from memory." Larger, " slower, " and " cheaper " (per byte)" storage" devices" L5:" L4:" L3:" Main memory" (DRAM)" Local secondary storage" (local disks)" Remote secondary storage" (distributed file systems, Web servers)" Main memory holds disk " blocks retrieved from local " disks." Local disks hold files retrieved from disks on remote network servers." Trajetória de dados até a CPU
Chips Multithreaded e Multicore Cache nível 1: dentro de cada núcleo Cache nível 2: normalmente dentro do mesmo processador e fora dos núcleos Exs.: Core 2 Duo e Quad-Core (a) (b) A quad-core chip with a shared L2 cache. A quad-core chip with separate L2 caches. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved.
Software Básico 24
Software Básico [A. Raposo e M. Endler, PUC-Rio, 2008] Conhecendo mais sobre o que está por baixo do programa, você pode escrever programas mais eficientes e confiáveis Abstrações em um sistema de computação: Programa de usuário Programa em Assembly????? Sistema Operacional Hardware Aplicações: jogos, editores, browsers, media players Escritos geralmente em linguagem de alto nível (C, C++, C#, Java etc.) Linguagem de máquina: binária (0,1) pouco legível por humanos A linguagem de montagem (Assembly) é um mapeamento direto da linguagem de máquina, mas que introduz várias facilidades (ou menos dificuldades ) para o programador usa "apelidos" das instruções de máquina, mais fáceis de lembrar do que seu valor hexadecimal exigido pelo processador Ex.: mov eax, edx move o que está no registrador de dados para o acumulador
Gerando um executável unix> gcc o hello hello.c 1. #include <stdio.h> 2. int main() 3. { 4. printf( hello, world\n ); 5. } hello.c préprocessador programafonte (texto) hello.i programafonte modificado Modifica o programa em C de acordo com diretivas começadas com # Ex.: #include <stdio.h> diz ao pré-processador para ler o arquivo stdio.h e inseri-lo no programa fonte O resultado é um programa expandido em C, normalmente com extensão.i, em Unix
Gerando um executável unix> gcc o hello hello.c 1. #include <stdio.h> 2. int main() 3. { 4. printf( hello, world\n ); 5. } hello.c préprocessador programafonte (texto) hello.i programafonte modificado compilador hello.s programa Assembly (texto) Compilador traduz o programa.i em um programa em Assembly É o formato de saída comum para os compiladores nas várias linguagens de programação de alto nível i.e., programas em C, Java, Fortran, etc vão ser traduzidos para a mesma linguagem Assembly
Gerando um executável unix> gcc o hello hello.c 1. #include <stdio.h> 2. int main() 3. { 4. printf( hello, world\n ); 5. } hello.c préprocessador programafonte (texto) hello.i programafonte modificado compilador hello.s programa Assembly (texto) montador (assembler) hello.o programaobjeto relocável (binário) Montador (Assembler) transforma o programa em Assembly em um programa binário em linguagem de máquina (chamado programa-objeto) Os módulos de programas, compilados ou montados, são armazenados em um formato intermediário ( Programa-Objeto Relocável extensão.o) Endereços de acesso e a posição do programa na memória ficam indefinidos
Gerando um executável unix> gcc o hello hello.c 1. #include <stdio.h> 2. int main() 3. { 4. printf( hello, world\n ); 5. } printf.o hello.c préprocessador programafonte (texto) hello.i programafonte modificado compilador hello.s programa Assembly (texto) montador (assembler) hello.o programaobjeto relocável (binário) hello ligador (linker) programaobjeto executável (binário) O ligador (linker) gera o programa executável a partir do.o gerado pelo assembler No entanto, pode haver funções-padrão da linguagem (ex., printf) que não estão definidas no programa, mas em outro arquivo.o pré-compilado (printf.o) O ligador faz a junção dos programas-objeto necessários para gerar o executável
Execução Como acontece 30
Processo Conceito: Um programa em execução 1. Ao digitar hello, os caracteres são passados para um registrador e depois para memória principal
Programa em execução 2. Ao clicar Enter, sabe-se que acabou o comando e então é realizada uma seqüência de instruções para copiar código e dados do programa hello do disco para a memória principal
Programa em execução 3. PC aponta para o endereço de memória onde o programa hello foi escrito 4. Processador executa instruções em linguagem de máquina da função main() do programa
Mais de um programa em execução Múltiplos processos vs. um (ou [poucos] mais) processador(es) ð como pode???
Processos Comunicantes Como pode??? Dicionário Editor de Texto Gerenciador de Imagens
Sistemas Distribuídos Processos em máquinas distintas e que se comunicam Web browser Web server
Sistemas Distribuídos Como fazer funcionar aplicações distribuídas que usam diferentes sistemas Web de computador browser (hardware), sistemas operacionais e software de aplicação (ex. linguagens de programação), interconectadas por diferentes redes? Processos em máquinas distintas e que se comunicam Web server O problema da interoperabilidade
O que vimos até agora Complexidade do computador moderno, do ponto de vista do hardware Necessidade de abstrações software Sistema computacional em camadas SO como uma máquina estendida abstrações SO como um gerenciador de recursos Gerenciamento Proteção Compartilhamento Um pouco de hardware CPU: unidade de controle e execução Registradores Ciclo fetch-decodeexecute Barramentos e dispositivos de E/S Memória [hierarquia] Software básico Linguagem de programação de alto nível ð linguagem de montagem (Assembly) ð linguagem de máquina Processo: um programa em execução Comunicação entre processos Sistemas Distribuídos
Infra-estrutura de Software Introdução (II)
História dos Sistemas Operacionais Primeira geração: 1945-1955 Válvulas, painéis de programação Segunda geração: 1955-1965 transistores, sistemas em lote Terceira geração: 1965 1980 CIs (circuitos integrados) e multiprogramação Quarta geração: 1980 presente Computadores pessoais Hoje: onipresença computação ubíqua
História dos Sistemas Operacionais Estrutura de um job típico (lote de cartões) 2a. geração
História dos Sistemas Operacionais Sistema de multiprogramação Três jobs na memória 3a. geração
Diversidade de Sistemas Operacionais Sistemas operacionais de computadores de grande porte (mainframe) Sistemas operacionais de servidores / redes Sistemas operacionais de multiprocessadores (paralelismo) Sistemas operacionais de computadores pessoais Sistemas operacionais de dispositivos portáteis/ móveis (ex. celulares) Sistemas operacionais de tempo-real Sistemas operacionais embarcados Sistemas operacionais de cartões inteligentes Sistemas operacionais de sensores
Estruturação de Sistemas Operacionais Monolítico Camadas Cliente-Servidor Virtualização
Estrutura de Sistemas Operacionais: Sistema Monolítico Executam as System Calls Modelo simples de estruturação de um sistema monolítico Ajudam os Procedimentos de Serviços SO = um processo com n procedimentos
Estrutura de Sistemas Operacionais: Sistema em Camadas Modularidade Hierarquia Facilita evolução e adaptação a novos ambientes (Flexibilidade)
Estrutura de Sistemas Operacionais: Sistema em Camadas Modularidade Hierarquia Facilita evolução e adaptação a novos ambientes (Flexibilidade)
Camadas em Linux Kernel (núcleo)
Linux Kernel: Relacionamentos Process Process Process Process Process System Call Interface Process Management IPC Memory Management Network File System Device Driver Hardware
Android em Camadas 50
Estruturação de Sistemas Operacionais ü Monolítico ü Camadas Cliente-Servidor Virtualização
Estrutura de Sistemas Operacionais: Cliente-Servidor
Estrutura de Sistemas Operacionais: Cliente-Servidor (2) O modelo cliente-servidor em um sistema ( ) distribuído
Infra-estruturas para SDs: SOD, SOR e Middleware Sistemas operacionais fortemente acoplados para sistemas (computadores e programas) distribuídos, geralmente, são chamados de sistemas operacionais distribuídos (SODs) visão única e global dos recursos Sistemas operacionais fracamente acoplados são os sistemas operacionais de rede (SORs) cada computador executando seu próprio SO, e viceversa, um SO completo para cada computador Para melhor suporte à transparência de distribuição são necessários melhoramentos ou serviços adicionais aos serviços de SORs, principalmente uma camada adicional: middleware
Infra-estruturas para SDs: arquiteturas SOD Middleware Sistemas homogêneos Transparência de distribuição Alto desempenho Memória compartilhada Controle de concorrência Sistemas heterogêneos Pouca transparência Escalabilidade Comunicação Sistemas heterogêneos Transparência de distribuição e comunicação Serviços Abertura SOR
Estruturação de Sistemas Operacionais ü Monolítico ü Camadas ü Cliente-Servidor (incl. SOD, SOR, middleware) Virtualização
Estrutura de Sistemas Operacionais: Máquina Virtual (Virtualização) Linux Linux (devel) XP Windows 7 MacOS Virtual Machine Monitor Hardware VMM opera na interface de hardware, fornecendo uma interface idêntica para os SOs acima
Virtual Machines: Desde os anos 60 Figure 1-28. The structure of VM/370 with CMS. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved.
Virtual Machines: Tipos (Arquiteturas) Figure 1-29. (a) A type 1 hypervisor. (b) A type 2 hypervisor. Hardware Hardware Hipervisor Tipo 1 Hipervisor Tipo 2 Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved.
Hipervisor Virtual User Mode User mode Opera@ng System Virtual Kernel Mode Kernel mode Hypervisor Hardware Monitor Mode o Hardware-supported o Roda em modo hardware especial
Arquitetura Hosted Monitor User App Guest OS (Linux) Kernel Module Host OS (Windows XP) Virtual Machine Monitor Hardware
Arquitetura Hosted Monitor User App Guest OS (Linux) Kernel Module Host OS (Windows XP) Device I/O Network, Disk, Display, Keyboard, Timer, USB Virtual Machine Monitor Hardware
Escalonamento Hosted Monitor 3 User App User App Guest OS (Linux) Guest OS (Windows 8) 1 CPU Scheduler 2 Kernel Module Host OS (Window XP) Virtual Machine Monitor Virtual Machine Monitor Hardware
Escalonamento Hosted Monitor 8 User App User App Guest OS (Linux) Guest OS (Windows 8) 6 CPU Scheduler 5 7 Kernel Module Host OS (Window XP) 4 Virtual Machine Monitor Virtual Machine Monitor Hardware
Ex.: Cloud Computing Sob demanda VM VM VM VM Hipervisor Hardware
Mais sobre Processo Um programa em execução
Ciclo de vida de um processo e o que acontece em termos de memória, E/S, sistema de arquivos etc.
Contexto de Processo Informações CPU: Registradores Memória: Posições em uso E/S: Estado das requisições Estado do processo: Rodando, Bloqueado, Pronto Outras CPU Memória Vídeo Teclado E/S outros dispositivos
Estados de um Processo Criar Pronto desbloquear executar suspender (tempo) Bloqueado Rodando bloquear (I/O) Terminar Contexto ID do Processo Estado Prioridade Program Counter Ponteiros da Memória Contexto (outros regs.) I/O Status Informações gerais tempo de CPU limites, usuário, etc.
Criação de Processos Principais eventos que levam à criação de processos Início do sistema Execução de chamada ao sistema de criação de processos Solicitação do usuário para criar um novo processo Início de um job em lote
Término de Processos Condições que levam ao término de processos Saída normal (voluntária) Saída por erro (voluntária) Erro fatal (involuntário) Cancelamento por um outro processo (involuntário)
Hierarquias de Processos Processo pai cria um processo filho, processo filho pode criar seu próprio processo Formando uma hierarquia UNIX chama isso de grupo de processos Windows não possui o conceito de hierarquia de processos Todos os processos são criados iguais (sem conceito de pai e filho )
Conceito: Multiprogramação a) Multiprogramação de quatro programas b) Modelo conceitual de 4 processos sequenciais, independentes, mas c) Somente um processo está ativo a cada momento ð escalonamento
Escalonamento de processos Quando um ou mais processos estão prontos para serem executados, o sistema operacional deve decidir qual deles vai ser executado primeiro A parte do sistema operacional responsável por essa decisão é chamada escalonador, e o algoritmo usado para tal é chamado de algoritmo de escalonamento Para que um processo não execute tempo demais, praticamente todos os computadores possuem um mecanismo de relógio (clock) que causa uma interrupção, periodicamente
E threads? 7 5
O que vamos ver Gerenciamento de Processos / Escalonamento Gerenciamento de Memória / Memória Virtual Gerenciamento de Disco / Sistemas de Arquivos Gerenciamento de Entrada e Saída Middleware (2 a. parte)