Bacharelado em Ciência da Computação Sistemas Operacionais Prof. Diego Mello da Silva Instituto Federal de Minas Gerais - Campus Formiga 28 de novembro de 2013 fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 1 / 89 Sumário 1 Introdução 2 História dos Sistemas Operacionais 3 Fundamentos 4 Serviços do Sistema Operacional 5 Chamadas de Sistema 6 Estrutura dos Sistemas Operacionais 7 Máquinas Virtuais 8 Atividades Recomendadas 9 Referências Bibliográficas [email protected] (IFMG) Sistemas Operacionais fig/logo-ifmg 28 de novembro de 2013 2 / 89 Introdução fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 3 / 89 Introdução Sistema Computacional: hardware, S.O., aplicativos e usuários Sistema Operacional: intermediário entre o usuário e o hardware Sistema Operacional controla o hardware e coordena seu uso pelos aplicativos de vários usuários fig/logo-ifmg Logo, fornece a base para os programas aplicativos executarem usando os recursos do sistema [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 4 / 89 Visão Abstrata dos Componentes de um Sistema Computacional fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 5 / 89 Exercícios (Para Casa) 1 Apenas com seus conhecimentos prévios de computação (ou seja, sem consultar livros ou outras fontes), responda o que você entende por sistema operacional e qual(is) é(são) o(s) serviço(s) que ele fornece em um sistema computacional fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 6 / 89 Sistema Operacional na Visão do Usuário Perspectiva varia de acordo com a interface usada Computador Pessoal Monitor, teclado, mouse, CPU Único usuário monopolizando os recursos Objetivo: maximizar o trabalho em execução Facilidade de uso Mainframe/minicomputador Multiusuário: acesso via terminais Usuário compartilham recursos da máquina e podem trocar informações Objetivo: maximizar o uso dos recursos fig/logo-ifmg Utilização eficiente de recursos (CPU, I/O, Memória, Disco) [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 7 / 89 Sistema Operacional na Visão do Usuário Estações de trabalho / Servidores conectados em rede Possuem recursos dedicados à disposição dos usuários Podem compartilhar recursos (armazenamento, impressão, processamento) Compromisso entre usabilidade e utilização Computadores Móveis Unidades autônomas para usuários individuais Conectividade via rede sem fio Limitações de energia, velocidade e interface Objetivo 1: Boa usabilidade individual Objetivo 2: Desempenho em tempo de vida da bateria Sistemas Embarcados Interface limitada (indicadores numéricos, luzes) fig/logo-ifmg Sem intervenção do usuário [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 8 / 89 Sistema Operacional na Visão do Sistema É o programa mais relacionado com o hardware Neste contexto, o sistema operacional é um alocador de recursos Quais recursos? Tempo de CPU Espaço de memória Espaço de armazenamento Dispositivos de I/O Função do S.O. é atuar como gerenciador destes recursos S.O. também é um programa de controle Controle de dispositivos de I/O Execução dos programas de usuário para evitar erros e uso impróprio do computador [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 fig/logo-ifmg 9 / 89 História dos S.O. fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 10 / 89 Pré-História (1833-1849) Máquina Analítica: projeto pioneiro de computador programável de propósito geral Dispositivo inteiramente mecânico, programável por cartões perfurados Babbage (1791-1871) não chegou a finalizar a máquina em vida Tecnologia da época não permitia a construção de rodas, engrenagens e correias com precisão necessária fig/logo-ifmg Obviamente não possuía sistema operacional [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 11 / 89 Primeira Geração (1945-1955) Surgimento dos computadores eletrônicos, alguns digitais Usavam válvulas, eram lentos e ‘programados’ via cabos e painéis Atanasoff-Berry, Mark, ENIAC (USA); Zuse (GER); Colossus (ENG) Figura: Zuze Z3 (1941) Figura: Mark-I (1944) Figura: Colossus (1944) Não existiam sistemas operacionais fig/logo-ifmg Mesmas pessoas projetavam, construiam, programavam e operavam [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 12 / 89 Primeira Geração (1945-1955) Modo normal de operação: (i) ‘Programador’ reservava tempo de máquina em uma planilha de papel (ii) ‘Programador’ inseria o programa via painel de programação (iii) ‘Programador’ aguardava horas de processamento, esperando que ele não fosse interrompido por uma válvula queimada Usado exclusivamente para cálculos numéricos (senos, cossenos, log) ≈1950: perfuradora de cartões permitiu escrever programas em cartões e lê-los ao invés de usar os painéis fig/logo-ifmg Figura: (esq) leitor de cartão, (dir) perfuradora de cartão [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 13 / 89 Segunda Geração (1955-1965) Surgimento dos transistores ⇒ computadores confiáveis Computadores construídos e comercializados com expectativa de funcionamento em tempo suficiente para executar trabalho útil Mainframes eram instalados em salas especiais isoladas com ar-condicionado, e eram operados por equipes profissionais fig/logo-ifmg Separação de papéis: projetistas, fabricantes, programadores e técnicos [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 14 / 89 Segunda Geração (1955-1965) Processamento de tarefas: um programa ou conjunto de programas Dinâmica de uso de um mainframe: 1 Programador escreve programa no papel (Fortran, assembly) 2 Programador perfura programa em cartões 3 Programador levava os cartões para a sala de entrada 4 Operador carregava cartões na leitora 5 Se precisasse de um compilador Fortran, operador deveria carregar o maço de cartões correspondentes ao compilador 6 No fim da tarefa, operador ia até a impressora, retirava a saída e a levava para a sala de saída 7 Programador pegava a saída impressa e conferia os resultados Muito tempo do computador era desperdiçado nestas operações fig/logo-ifmg Alto custo ⇒ busca por maneiras de evitar desperdício de tempo [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 15 / 89 Segunda Geração (1955-1965) Redução de custos com sistemas em lote (batch) Lote de tarefas: quantidade acumulada de tarefas (jobs) que possuem necessidades semelhantes (ex: mesmo montador, mesma biblioteca) Entrada e Saída: computadores mais baratos, porém eficientes em leitura de cartões, copiar fitas e imprimir saídas (ex: IBM 1401) Processamento: computadores mais caros e poderosos (ex: IBM 7094) fig/logo-ifmg S.O. primitivo: programa que realizava leitura/execução de tarefas, uma a uma, contidas no lote (monitor residente) [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 16 / 89 Segunda Geração (1955-1965) Tarefa típica usava cartões de controle e cartões do programador Computadores de segunda geração: cálculos científicos Maioria programado em assembly ou Fortran Sistemas Operacionais Típicos: Fortran Monitor System (FMS) fig/logo-ifmg IBSYS (S.O. da IBM para o 7094) [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 17 / 89 Terceira Geração (1965-1980) CIs: melhor custo/benefício que transistores individuais IBM lança a família System/360, compatíveis em conjunto de instruções Sistema operacional OS/360 deveria executar em qualquer modelo sistemas pequenos, bons para I/O sistemas grandes, para cálculos complexos sistemas com poucos periféricos ambientes comerciais fig/logo-ifmg ambientes científicos Outros fabricantes adotaram o mesmo conceito [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 18 / 89 Terceira Geração (1965-1980) S.O. de 3a. geração popularizaram três técnicas fundamentais 1 Multiprogramação: reduzir a ociosidade da CPU durante I/O 2 Spooling (simultaneous peripheral operation online) capacidade de transferir tarefas do cartão para discos magnéticos quando uma tarefa encerrava, o S.O. carregava uma nova a partir do disco 3 Timesharing Vários usuários acessando mediante terminais interatividade entre o S.O. e os usuários fig/logo-ifmg tarefas em background quando CPU estava ociosa [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 19 / 89 Terceira Geração (1966-1980) Alguns dos principais S.O. desta geração CTSS1 (1962): MIT, desenvolvido para um IBM 7096 modificado. Primeiro S.O. de tempo compartilhado. MULTICS2 (1964): Motivados pelo CTSS e baseado no conceito de distribuição de energia elétrica, Bell Labs, General Eletric e MIT projetaram um S.O. para um ‘computador utilitário’ com usuários compartilhando tempo de processamento. UNIX (1969): Ken Thompson & Dennis Ritchie, Bell Labs. Versão simplificada do MULTICS para um PDP-7, escrito 100% em Assembly BSD (1970 ≈ 1980): UNIX-Based, U.C. Berkeley Leitura: ‘Introduction and Overview of the Multics System’ 3 1 2 3 fig/logo-ifmg CTSS: Compatible Time Sharing System MULTICS: Multiplexed Information and Computing Service http://people.cs.umass.edu/~emery/classes/cmpsci691st/readings/OS/multics-overview.pdf [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 20 / 89 Quarta Geração (1980-Atuais) Advento dos circuitos integrados de larga escala (LSI) Era dos computadores pessoais Intel lança o 8080 (1974), CPU 8 Bits de uso geral Gary Kindall, consultor da Inter, escreve o CP/M (Control Program for Microcomputers) baseado em disco para o 8080. Gary Kindall funda a Digital Research para comercializar o CP/M, e domina o mundo da microcomputação baseada em 8080, Z80 e outros IBM projeta o IBM PC (1980) e procura Bill Gates para licenciar o interpretador BASIC A Microsoft compra o DOS da Seattle Computer Products e oferece o pacote BASIC/DOS para a IBM O MS-DOS domina o mercado de IBM PC e sucessores (IBM AT com Intel fig/logo-ifmg 80286, 80386, 80486), e o CP/M perde espaço entre os PCs. [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 21 / 89 Quarta Geração (1980-Atuais) MS-DOS e CP/M eram baseados em linha de comando Figura: MS-DOS Figura: CP/M Xerox Alto (1973), do PARC: Graphical User Interface (GUI) fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 22 / 89 Quarta Geração (1980-Atuais) Jobs incorpora a idéia de GUI no computador Lisa, da Apple, no Mac OS Lisa falha comercialmente, mas Machintosh torna-se um sucesso de vendas Figura: Apple Machintosh Figura: Apple Lisa Microsoft desenvolve o shell Windows para executar sobre o MS-DOS, inspirada no sucesso do Machintosh fig/logo-ifmg Figura: Mac OS (1984) [email protected] (IFMG) Figura: Win 3.1 (1990) Sistemas Operacionais 28 de novembro de 2013 23 / 89 Quarta Geração (1980-Atuais) Microsoft lança Windows 95 (1995) como S.O. independente do MS-DOS. Win95 e Win98 eram S.O. de 16 bits Microsoft lança Windows NT, compativel com Win95 porém reescrito como 32 bits. Sucedem o Windows NT o Windows Me, Windows 2000, Windows XP, Windows 7 e Windows 8. Sucedem diversas versões do Mac OS, até 2001 Em 2001, Apple lança o OS X (Unix-Based): Cheetah (2001), Puma (2001), Jaguar (2002), Panter (2003), Tiger (2005), Leopard (2007), Snow Leopard (2009), Lion (2011), Montain Lion (2012), Mavericks (2013) System V (1983): UNIX-Based, AT&T POSIX (1985): IEEE 1003, padrão que define interface mínima de chamadas de sistema suportada pela maioria dos UNIX MINIX (1987): Tanembaum, objetivos educacionais fig/logo-ifmg Linux (1991): Linus Torvalds, inspirado no MINIX SO Mobiles: Android, iOS, Windows CE, Windows Mobile, Symbiam [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 24 / 89 Exercícios (Para Casa) 1 Nesta última seção vimos um breve histórico sobre o surgimento e evolução dos sistemas operacionais. Para fixar o conteúdo, faça uma breve pesquisa sobre 2 dos 5 itens a seguir, resumindo-os em papel. Indique a fonte. (a) Tempo Compartilhado (b) MULTICS (c) Multiprogramação (d) Fortran Monitor System (e) Sistema em Lote fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 25 / 89 Fundamentos fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 26 / 89 Sistema de Computação Moderno Uma ou mais CPUs Controladores de dispositivos conectados à um barramento (disco, audio, vídeo) Memória compartilhada, acessava via Controlador de Memória fig/logo-ifmg Memória pode ser acessada tanto pela CPU quando pelos controladores de dispositivos [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 27 / 89 Classificação de Software e Elementos do S.O. Kernel (Núcleo) Ger. Ger. Ger. Ger. Arquivos Memória Processos I/O [email protected] (IFMG) Shell Utilitários Interface usuário Linha de Comando GUI Sistemas Operacionais Formatar Disco Desfrag. Disco Comprimir arquivos fig/logo-ifmg 28 de novembro de 2013 28 / 89 Bootstrapping (Inicialização) Bootstrap: programa executado quando o computador é iniciado ou reiniciado Programa simples, gravado em firmware na ROM/EEPROM do computador 2) Carrega o S.O. 1) Inicializa sistema Registradores da CPU Aloca memória para o kernel Controladores de Dispositivos Carrega kernel na memória Memória Transfere controle para S.O. fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 29 / 89 CPU e seus componentes Componentes da CPU Unidade Aritmética Lógica (ALU) Registradores Unidade de Controle Registradores Contador de Programa (PC) Registrador de Instrução (IR) Ponteiro de Pilha (SP) Base da Pilha (PB) Palavra de Status (PSW) Acumuladores Outros fig/logo-ifmg CPU busca instruções na memória e as executa, segundo o PC [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 30 / 89 Ciclo Instrução-Execução Ciclo Instrução-Execução ou Ciclo de Von-Neuman 1) Busca instrução na memória e armazena no registrador de instrução 2) Instrução é decodificada 3) Operandos são buscados na memória e armazenados em registradores 4) Instrução é executada na ALU 5) Resultado é armazenado na memória CPU apenas interpreta instruções em memória Programas devem estar em memória para serem executados pela CPU A CPU executa instruções sequencialmente Mas pode transferir o fluxo de execução se ocorrer uma interrupção Interrupções de hardware (através de sinais no barramento) Interrupções de software (através de chamadas de sistema) [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 fig/logo-ifmg 31 / 89 Modo Usuário e Modo Núcleo Maioria das CPUs opera em dois modos: núcleo e usuário Modo em funcionamento é controlado por um bit da Palavra de Status (PSW) Modo Núcleo (0) Pode executar qualquer instrução de seu conjunto de instruções Tem acesso à todo o hardware É o modo que o Sistema Operacional executa Modo Usuário (1) Executa apenas um subconjunto de instruções Acessa apenas um subconjunto de atributos do hardware É o modo de execução de aplicações que rodam sobre o S.O. Para usar serviços do sistema, é necessário fazer uma chamada de sistema Chaveia o modo usuário para o modo núcleo Transfere o controle para o Sistema Operacional fig/logo-ifmg Quando chamada se encerra, o controle retorna para o programa do usuário, na próxima instrução após a chamada de sistema. [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 32 / 89 Modo Usuário e Modo Núcleo Quando ocorre uma chamada de sistema, exceção ou interrupção, ocorre chaveamento de modalidade Modo dual é importante para a proteção do sistema contra usuários errantes Instruções privilegiadas: instruções de máquina que podem causar erros Hardware só executa instruções privilegiadas em modo Núcleo Exemplos de instruções privilegiadas Controle de I/O fig/logo-ifmg Gerenciamento de timer Gerenciamento de interrupções [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 33 / 89 Interrupções Vetor de interrupções: ponteiros para os manipuladores de interrupção Quando uma interrupção ocorre 1) 2) 3) 4) 5) CPU interrompe o processamento atual O endereço de retorno é salvo na pilha A execução é transferida para o endereço do manipulador da interrupção A rotina que trata a interrupção é executada Ao encerrar rotina, CPU retorna para o processamento interrompido Interrupções possuem prioridade, e podem ser desativadas Interrupções são muito empregadas em operações de I/O fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 34 / 89 Interrupções (a) Inicializar dispositivo I/O e obter interrupção 1: Driver informa controlador de disco sobre escrita. Controlador inicia dispositivo. 2: Controlador de disco termina de escrever bytes. Gera interrupção para controlador de interrupções. 3: Se puder aceitar a interrupção, controlador de interrupções avisa CPU 4: O controlador de interrupções coloca o número do dispositivo no barramento para que a CPU possa lê-lo (b) Processamento de uma interrupção 1: Interrupção ocorre e é aceita pela CPU 2: Fluxo é transferido pelo manipulador de interrupção 3: Fluxo retorna para a próxima instrução na CPU [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 fig/logo-ifmg 35 / 89 Interrupções Classe Software Timer I/O Hardware Quando ocorre Gerada por alguma condição que ocorre como resultado da execução de uma instrução, como por exemplo, overflow aritmético, divisão por zero, tentativa de execução de instrução de máquina ilegal, fazer referências fora do espaço de memória do usuário Gerado pelo temporizador interno do processador. Usado para o sistema operacional realizar tarefas regulares, como chaveamento de contexto Gerado por um controlador de I/O para sinalizar término normal de operação de entrada/saída ou sinalizar uma variedade de erros Gerado por falhas no hardware, tais como queda de energia ou erro de paridade na memória fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 36 / 89 Sistemas com Único Processador Maioria dos sistemas possui único processador de propósito geral CPU principal executa processos do usuário Porém, quase todos os sistemas possuem processadores de uso específico Controladores de Disco Controladores de teclado São limitados e não executam processos do usuário, mas eliminam overheads Exemplo: microprocessador do controlador de disco Recebe sequência de solicitações da CPU Implementa sua fila e scheduling Neste caso, CPU não precisa lidar com o scheduling de disco fig/logo-ifmg Podem ainda serem componentes de baixo nível embutidos no harwdare [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 37 / 89 Sistemas Multiprocessados Sistemas com 2 ou mais processadores compartilhando o barramento, memória, relógio e periféricos Vantagens: 1) Throughput (Vazão): mais trabalho executado em menor tempo 2) Economia de Escala: economia no compartilhamento de periféricos, memória de massa e suprimento de energia 3) Confiabilidade: se carga é distribuída entre os processadores, a falha de um deles torna o sistema mais lento, mas sem interrupção. Sistemas multiprocessados são de dois tipos: assimétricos e simétricos Assimétricos Mestre: planeja e aloca trabalho para os escravos Escravo: realizam tarefas específicas ou predefinidas Simétricos fig/logo-ifmg Cada processador executa todas as tarefas do S.O. [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 38 / 89 Sistemas Multiprocessados Sistemas Multiprocessados Multi-Core (dentro de um mesmo chip) Em cada chip existem N minichips, cada qual com uma CPU completa São mais eficientes do que vários chips de Núcleo único Velocidade dentro do chip é maior do que entre chips Consomem menos energia Adequados para servidores Web de Banco de Dados fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 39 / 89 Processos Conceito fundamental de todo Sistema Operacional Programa: entidade passiva / Processo: entidade ativa Cada processo tem seu próprio espaço de endereçamento Instruções do executável Dados do programa Pilha Cada processo tem recursos associados. Alguns: Registradores: PC, SP, etc Lista de arquivos abertos Lista de processos relacionados Células de memória usadas Sinais de alarme fig/logo-ifmg Processo: container com todas as informações para executar um programa [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 40 / 89 Processos Processos usam recursos para cumprir sua tarefa Tempo de CPU Memória Arquivos Dispositivos de I/O Processos com uma única thread tem um ‘contador de programa’ Processos com várias threads tem um ‘contador de programa’ para cada thread Sistema computacional tem processos do usuário e do sistema, executados concorrentemente Gerencia de processos do Sistema Operacional: Scheduling de processos e threads Criação e exclusão de processos de usuário e sistema Suspensão e retomada de um processo fig/logo-ifmg Mecanismos de sincronização de processos Mecanismos de comunicação entre processos [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 41 / 89 Processos Processos em execução podem ser suspensos temporariamente Logo, informações relativas ao processo devem ser guardadas para seu retorno Processos são organizados na Tabela de Processos Array (ou Lista) contendo estruturas, uma para cada processo Processos tem estado Processos podem criar mais processos filhos fig/logo-ifmg Processos que cooperam entre sí precisam se comunicar [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 42 / 89 Timer Timer é um temporizador configurado para interromper o computador após um período especificado Tem por objetivo fazer com que o Sistema Operacional mantenha controle sobre a CPU Evita que o controle da CPU fique apenas em um processo usuário Pode ser fixo ou variável (implementado com contadores que decrementam) Quando o contador torna-se negativo, S.O. retoma o controle pois venceu o tempo designado para o processo do usuário fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 43 / 89 Memória Memória: array de palavras, cada qual com um endereço Memória Principal: volátil, perde conteúdo quando energia é desligada Memória Secundária: armazena grande quantidade de dados permanentemente Ideal: rápida, grande, barata. Nenhuma tecnologia atende a todos. Sistema de memória Hierárquica: registradores > cache > memória principal > disco eletrônico > disco magnético > disco óptico > fitas magnéticas fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 44 / 89 Cache Dividida em linhas de cache, com 64 bytes cada Linhas mais frequentes são mantidas em cache de alta velocidade Quando um programa precisa ler palavra da memória, 1) Hardware da memória cache verifica se linha está em cache 2) Se houver data hit, requisição é atendida sem requisições à memória principal 3) Se houver data miss, requisição adicional é enviada a memória principal, com penalidade de tempo Em geral, as CPUs tem cache em dois níveis: L1 e L2 Cache L1 Presente dentro da CPU, sem atrasos no acesso Alimenta instruções decodificadas no ciclo instrução-execução Cache L2 fig/logo-ifmg Armazena alguns megabytes de dados Acesso envolve atraso de 1 a 2 ciclos de clock [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 45 / 89 Disco São fundamentais em um sistema computacional Embora tenha um custo 2x mais barato que a RAM, o tempo de acesso aleatório é 3x mais lento Disco rígido é um dispositivo eletro-mecânico Consiste em 1 ou mais pratos metálicos que rodam a 5.400, 7.200, 10.800 fig/logo-ifmg rpm Um braço mecânico move-se sobre os pratos pela lateral [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 46 / 89 Disco Trilha: região circular onde os discos se posicionam Cilindro: Junção de todas as trilhas de uma dada posição do braço Setores: subsivisão de uma trilha Normalmente, possuem 512 Bytes Mover braço de um cilindro para o próximo: 1 ms Mover braço até um cilindro qualquer: 5 a 10 ms Na trilha correta, esperar até o setor desejado: 5 a 10 ms Leitura/escrita: de 50 Mb/s a 160 MB/s Nos Sistemas Operacionais, armazenam o sistema de arquivos Chaveamento de contexto: usa disco como memória virtual Unidade de Gerenciamento de Memória (MMU): Mapeia endereços da RAM/Física [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 fig/logo-ifmg 47 / 89 Sistemas de Arquivos Presente em todos os sistemas operacionais S.O. oculta peculiaridades de disco e I/O do programador Diretório: agrupamento de arquivos. Organizados hierarquicamente em árvores. Sistema Operacional é responsável por: Criar e apagar arquivos Criar e apagar diretórios para organizar arquivos fig/logo-ifmg Mapear arquivos para memória secundária Criar cópias de arquivos em mídias de armazenamento [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 48 / 89 Estrutura de I/O Cada controlador controla um tipo específico de dispositivo I/O pode ser feita de duas maneiras I/O dirigido por interrupção Direct Memory Access (DMA) I/O dirigido por Interrupção: adequado para pequenas qtdades de dados 1) Controlador contém buffer local e registradores específicos 2) Driver de dispositivo: interface uniforme entre SO e dispositivo 3) Driver carrega registradores apropriados no controlador 4) Controlador examina registradores e toma uma ação 5) Controlador transfere dados do dispositivo para buffer local 6) No término da transferência, controlador informa driver através de interrupção fig/logo-ifmg 7) Driver retorna controle para o S.O., retornando dados ou ponteiro para os dados (leitura) ou status (outras operações) [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 49 / 89 Estrutura de I/O I/O por DMA: adequado para movimentação de dados em massa 1) Posicionam buffers, ponteiros e contadores associados ao dispositivo 2) Controlador tranfere um bloco inteiro de memória da memória para seu próprio buffer, ou vice-versa, sem intervenção da CPU 3) Gera-se apenas um interrupção por bloco, para avisar ao driver que a operação foi concluída fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 50 / 89 Exercícios (Para Casa) 1 Leia a seção 1.5 de [Tanembaum], subseções 1.5.1 a 1.5.4. 2 Faça um resumo sobre os principais itens lidos na seção 1.5 descritas no Exercício 2, fazendo um paralelo entre o conteúdo destas seções e os slides apresentados na seção de fundamentos. fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 51 / 89 Serviços do Sistema Operacional fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 52 / 89 Serviços do Sistema Operacional S.O. fornece ambiente para execução de programas Oferece serviços para programas e usuários destes programas Tais serviços visam a conveniência do programador fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 53 / 89 Serviços do Sistema Operacional 1 Interface com o Usuário Interface de linha de comando Interface Batch: comandos e diretivas de controle em arquivos Interface Gráfica de Usuário: janelas, menus, apontadores 2 Execução de Programas Carregar programas em memória Executar programas em memória 3 Operações de I/O Programas em execução podem requerer I/O Por motivo de proteção, não podem acessar dispositivos e I/O diretamente S.O. deve oferecer um meio de executar operações de I/O 4 Alocação de Recursos fig/logo-ifmg S.O. determina melhor maneira de usar CPU, memória principal e arquivos [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 54 / 89 Serviços do Sistema Operacional 5 Manipulação do Sistema de Arquivos Leitura e escrita de arquivos e diretórios Gerenciamento de permissões para negar ou liberar acesso 6 Comunicação Existem situações em que um processo troca informações com outro processo No mesmo computador ou entre processos executando em sistemas diferentes, conectados em rede S.O. implementam comunicação por meio de memória compartilhada ou troca de mensagens 7 Detecção de Erros Existem situações em que um processo troca informações com outro processo No mesmo computador ou entre processos executando em sistemas diferentes, conectados em rede fig/logo-ifmg S.O. implementam comunicação por meio de memória compartilhada ou troca de mensagens [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 55 / 89 Exercícios (Para Casa) 1 Pesquisar sobre os seguintes shells para Linux/Unix. Indique a fonte. (a) Bash (bash) (b) C Shell (csh) (c) Bourne Shell (sh) (d) Korn Shell (ksh) (e) TC Shell (tcsh) 2 Dos shell listados acima, quais são disponíveis nas distribuições mais comuns do Linux (Ubuntu, Fedora, Suse)? 3 Pesquisar sobre os seguintes shells gráficos para Linux/Unix. Indique a fonte. (a) Gnome (b) KDE (c) Unity fig/logo-ifmg (d) XFCE (e) X-Window [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 56 / 89 Exercícios (Para Casa) 4 Pesquise sobre os seguintes sistemas de arquivos. Indique a fonte. (a) Família FAT (Fat 12, Fat 16 e Fat 32) (b) NTSF (c) ISO 9660 (d) devfs (e) Família ext (ext, ext3 e ext4) 5 Pesquise algumas chamadas de sistema definidas no POSIX que sejam relacionadas com: (a) Data/hora (b) Sistema de Arquivos (c) Dados do usuário (d) Processos 6 Pesquise sobre os seguintes recursos de comunicação entre processos fig/logo-ifmg (a) MPI (Message Passing Interface) (b) RPC (Remote Procedure Call) [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 57 / 89 Chamadas de Sistema fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 58 / 89 Chamadas de Sistema Chamadas de Sistema: interface para os serviços disponíveis pelo S.O. São em geral disponíveis como rotinas escritas em C/C++ ou Assembly API Application Programming Interface API Windows (Para programas em Windows) API Java (para programas em máquina virtual Java) API POSIX (libc, para programas em Unix/Linux) API POSIX: Chamadas descritas em <unistd.h>. Alguns exemplos: ssize_t read(int fd, void *buf, size_t count); int close(int fd); pid_t fork(void); ssize_t write(int fd, const void *buf, size_t count); fig/logo-ifmg API Win32: rotinas para GUI, além das chamadas de sistema do S.O. [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 59 / 89 Chamadas de Sistema fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 60 / 89 Chamadas de Sistema strace (Linux): mostra as chamadas de sistema. Exemplo para comando ls strace -e open -o saida.txt ls open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 open("/lib/x86_64-linux-gnu/libselinux.so.1", O_RDONLY|O_CLOEXEC) = 3 open("/lib/x86_64-linux-gnu/librt.so.1", O_RDONLY|O_CLOEXEC) = 3 open("/lib/x86_64-linux-gnu/libacl.so.1", O_RDONLY|O_CLOEXEC) = 3 open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 open("/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3 open("/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3 open("/lib/x86_64-linux-gnu/libattr.so.1", O_RDONLY|O_CLOEXEC) = 3 open("/proc/filesystems", O_RDONLY) = 3 open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3 Chamadas de sistema no Linux estão descritas no manual (man), página 2. man man man man 2 2 2 2 write mmap close open fig/logo-ifmg Detalhes sobre páginas do manual: man man [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 61 / 89 Exercício Prático (Linux) Escreva o seguinte programa em C, compile-o #include <stdio.h> #include <stdlib.h> void main() { FILE *pArq; printf("\nHello World\n\n"); pArq = fopen("output.txt", "w"); fprintf(pArq, "123"); fclose(pArq); } Grave todas as chamadas de sistema quando execuntando-o no arquivo diags.txt Edite o arquivo diags.txt e identifique chamadas relacionadas com o programa fig/logo-ifmg Escolha uma chamada de sistema desconhecida e busque-a no manual, pág. 2 [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 62 / 89 Tipos de Chamadas de Sistema (Genérico) 1 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 memory, free memory 2 Gerenciamento de Arquivo create file, delete file open, close fig/logo-ifmg read, write, reposition get file attributes, set file attributes [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 63 / 89 Tipos de Chamadas de Sistema (Genérico) 3 Gerenciamento de Dispositivos request device, release device read, write, reposition get device attributes, set device attributes logical attach device, detach device 4 Manipulação de Informações get time, get date, set time, set date get system data, set system data 5 Comunicações create connection, delete connection send messages, receive messages fig/logo-ifmg trasfer status information attach remote devices, detach remote devices [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 64 / 89 Exemplos de Chamadas de Sistemas (Win/Linux) fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 65 / 89 Passo a Passo de uma Chamada de Sistema: read 1,2,3 Parâmetros da chamada read da API são salvos na pilha 4 A rotina read da API é chamada 5 A rotina read coloca o código da chamada de sistema em um registrador 6 TRAP muda para o modo núcleo, e inicia execução no kernel 7 Código do kernel verifica chamada e despacha para a rotina correta, indexada 8 Rotina que implementa a chamada de sistema é executada 9 Rotina da chamada de sistema encerra e retorna após instrução TRAP 10 Rotina retorna para o programa do usuário, que fez a chamada original fig/logo-ifmg 11 Programa do usuário limpa a pilha, que cresce ‘para baixo’ [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 66 / 89 Estrutura de S.O. fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 67 / 89 Estrutura de Sistemas Operacionais Estrutura refere-se a forma como o S.O. é implementado internamente Abordaremos alguns modelos de projeto, em alto nível Lida com a forma em que os componentes do S.O. estão conectados e moldados no Kernel Projetos mais comuns: Sistemas Monolíticos Sistemas em Camadas Sistemas Microkernel Sistemas em Módulos fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 68 / 89 Estrutura de Sistemas Monolíticos S.O. inteiro é executado como único programa em modo núcleo S.O.: coleção de rotinadas ligadas em um binário executável Serviços (chamadas de sistema) são executados guardando-se os parâmetros em local definido MS-DOS, Unix System V, BSD, Unix-like kernels, Linux Estrutura básica de um S. O. Monolítico: 1 Programa principal invoca rotina do serviço requisitado 2 Conjunto de rotinas de serviço executam chamadas de sistema 3 Conjunto de rotinas utilitárias que auxiliam rotinas de serviço fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 69 / 89 Estrutura de Sistemas Monolíticos Exemplo: MS-DOS - sem separação interfaces e funcionalidades Aplicativos podem acessar rotinas básicas de I/O (tela, disco) Sistema torna-se vulnerável Projeto original para o 8088: hardware básico acessível fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 70 / 89 Estrutura de Sistemas Monolíticos Exemplo: UNIX Entre as chamadas de sistema e camada física está o kernel Sistema de arquivo, escalonamento de CPU, gerenciamento de memória e outras funcionalidades acessadas via chamada de sistema Enorme quantidade de funcionalidades combinadas em um único nível fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 71 / 89 Estrutura de Sistemas em Camadas S.O. é dividido em várias camadas ou níveis Camada inferior (0): hardware; mais alta (N): interface com usuário Camada: dados + operações que manipulam estes dados Camada M: estruturas de dados e rotinas chamadas por camadas superiores Cada camada é implementada com operações fornecidas pelas camadas inferiores Vantagem: facilita o projeto, implementação e depuração fig/logo-ifmg Desvantagem: tendem a ser menos eficientes (overhead) [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 72 / 89 Estrutura de Sistemas em Camadas Exemplo: S.O. em lote THE (Technische Hogeschool Eindhoven), de Dijikstra Implementado em um computador holandês Electrologica X8 (32K de 27 bits) Camadas do THE: Cada camada não se preocupa com os detalhes de como a inferior opera Nível de abstração é mais alto nas camadas mais externas fig/logo-ifmg Exemplo: MULTICS, com anéis concêntricos (privilégios diferentes) [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 73 / 89 Estrutura de Sistemas em Microkernel Mach Kernel: surgiu em meados de 80, no Carnegie Mellon University Reestruturação do S.O.: componentes não essenciais removidos do kernel Elementos removidos reimplementados como programas de sistema ou usuário Tipicamente, microkernels provêem gerenciamento mínimo de processos gerenciamento mínimo de memória facilidades de comunicação (message passing) Comunicação entre programas cliente e serviços indiretamente via microkernel fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 74 / 89 Estrutura de Sistemas em Microkernel Vantagem: é mais fácil estender o sistema operacional Novos serviços são adicionados no espaço do usuário Modificações mínimas no microkernel, apenas quando necessário Vantagem: mais segurança/confiabilidade ao sistema computacional Muitos serviços rodam como processos de usuário Se um serviço falhar, o sistema não é comprometido como um todo Sistemas operacionais famosos que usam esta abordagem: QNX: S.O. tempo real para sistemas embarcados fig/logo-ifmg Kernel do Mac OS X (Darwin), parcialmente baseado no microkernel Mach Windows NT: filosofia de microkernel, não idêntica ao microkernel Mach [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 75 / 89 Estrutura de Sistemas em Microkernel Exemplo: MINIX 3, compatível com POSIX Microkernel do MINIX é composto por: 3200 linhas C: processos, mensagens e 35 chamadas ao núcleo 800 linhas assembly: interrupções e chaveamento fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 76 / 89 Estrutura de Sistemas em Módulos Usa a abordagem de utilizar módulos carregáveis no kernel Como funciona? Kernel fornece serviços fundamentais Demais serviços são usados dinamicamente, com kernel em execução É similar à camadas, mas módulos podem conversar entre sí É similar ao microkernel, mas não tem overhead do message passing É usada por implementações modernas do UNIX, como Solaris e Linux (loadable kernel module), no e Mac OS X (kernel extension) É também empregada no Windows (kernel-mode driver ) No Linux, em \ lib \ modules, com extensão ‘*.ko’. Para listar, usar lsmod | more Normalmente usada para sistemas de arquivos e device drivers [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 fig/logo-ifmg 77 / 89 Estrutura de Sistemas Híbridos Mac OS X: Microkernel, monolítico e módulos Mach: gerência de memória, RPC, IPC, thread scheduling BSD: chamadas POSIX I/O kit: implementação de device drivers e kernel extensions fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 78 / 89 Estrutura de Sistemas Híbridos iOS Cocoa Touch: Objective C para aplicações iOS Media Services: áudio, vídeo, gráficos Core Services: banco de dados e cloud computing Core OS: Sistema operacional baseado no Mac OS X fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 79 / 89 Estrutura de Sistemas Híbridos Android Kernel Linux: monolítico, módulos Linux: processos, memória e device drivers Dalvik Virtual Machine: máquina virtual Java otimizada para Android fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 80 / 89 Máquinas Virtuais fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 81 / 89 Origens das Máquinas Virtuais Conceito de máquina virtual: sistema VM da IBM (1972) Monitor da Máquina Virtual: diretamente sobre hardware, com multiprogramação VM370 dividia o mainframe em várias máquinas virtuais Cada máquina virtual podia rodar seu próprio SO. Exemplo: OS/360: processamento em lote (batch) e transações CMS (Convertional Monitor System), interativo/timeshare/monousuário fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 82 / 89 Máquinas Virtuais Algumas vantagens: Capacidade de compartilhar o mesmo hardware Processar vários ambientes de execução (SO) concorrentemente Executar servidores sem que a falha de um afete os demais ‘Aluguel’ de máquinas virtuais para hospedagem Web4 Pesquisa e desenvolvimento de sistemas operacionais Proteção (isolamento): hospedeiro e máquinas virtuais independentes Administração e uso de recursos eficientes Hipervisores Nível 1 e 2 fig/logo-ifmg 4 Por exemplo, Amazon Web Services (http://aws.amazon.com/) [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 83 / 89 VMware VMware Workstation: máquina virtual roda em nível de usuário Simula o Intel x86 e hardware compatível em VMs isoladas Cada VM tem sua própria CPU, memória, drives de disco, interfaces de rede, etc Disco virtual é apenas um arquivo dentro do sistema de arquivos do Host fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 84 / 89 Exercícios (Para Casa) 1 Faça uma pesquisa sobre a máquina virtual Java (JVM), explicando os seguinte conceitos: (a) Carregador de classes (b) Interpretador Java (c) Java Bytecodes 2 Faça uma pesquisa sobre o ambiente .NET e explique o que é (a) Common Language Runtime (b) Microsoft Intermediate Language (c) Compilador Just-In-Time 3 Com base na sua pesquisa dos Exercícios 1 e 2, tire suas conclusões sobre as tecnologias acima. [email protected] (IFMG) fig/logo-ifmg Sistemas Operacionais 28 de novembro de 2013 85 / 89 Atividades Recomendadas fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 86 / 89 Leitura Recomendada [Silberschatz]: Seções 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 2.1, 2.2, 2.3, 2.4, 2.7, 2.8, 2.11, 2.12 [Tanembaum]: Seções 1.1, 1.2, 1.3, 1.5, 1.6, 1.7, 1.12 [Oliveira e Carissimi]: Seções 1.1, 1.2, 1.3, 1.4, 1.5 fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 87 / 89 Referências Bibliográficas fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 88 / 89 Referências Bibliográficas SILBERSCHATZ, Abraham. Fundamentos de sistemas operacionais. 8a ed. Editora LTC, 2010. ISBN 9788521617471. OLIVEIRA, R. S. ; CARISSIMI, A. Silva. Sistemas Operacionais. Editora Sagra-Luzzato. Porto Alegre, 2001. TANEMBAUM, A. S. Sistemas Operacionais Modernos. 3 ed. Editora Pearson Prentice-Hall, 2009. ISBN 978-85-7605-237-1. fig/logo-ifmg [email protected] (IFMG) Sistemas Operacionais 28 de novembro de 2013 89 / 89