Introdução Sistemas Operacionais 1 Sistema Operacional: Um conjunto de programas, executado pelo computador como os outros programas. Função: Controlar o funcionamento do computador, disponibilizando seus recursos para os usuários (humanos e programas). Sistema de computador moderno é bastante complexo, composto por processador, memória, unidades de armazenamento e dispositivos de E/S Controlar todas as operações -> complexo Uma operação simples (ler arquivo em disco) se desdobra em uma série de tarefas (acessar disco, localizar arquivo, transferir para memória e retornar controle ao chamador) Solução : SW controlador, com interface simples, oferece HW como máquina virtual Papel do SO (2 visões possíveis): top-down : oferece HW como máquina estendida, virtual -> mais fácil de utilizar bottom-up : gerente de recursos -> distribui o HW entre os usuários Histórico Fase 1 Fase 2 Fase 3 Fase 4 Fase 5 1945 1956-1965 1966-1980 1981-1990 1991-1955 Linguagem Linguagem de Multiprocessamento de máquina alto nível Processamento Sistemas especialistas Linguagem batch Assembly orientadas a objeto estruturadas Multiprogramação Time-sharing Computação gráfica micros de 8 bits APPLE e SO CP/M Processamento distribuído concorrentes Programação funcional naturais Aplicativos Programas do Sistema HW Camadas do software Jogos, editor de texto, Específicos Utilitários Sistema Operacional Linguagem de maquina Microcódigo Dispositivos Físicos Funções do SO Interpretação da Linguagem de Controle Controle de erros Multi-acesso a recursos Escalonamento de tarefas Proteção de memória Controle de recursos físicos de operações de E/S Controle de Interrupções Sequenciamento de JOB s Componentes do SO Gerente de Memória Gerente de Processador Gerente de Periféricos Gerente de Sistema de Arquivos
2 Systems calls conjunto de instruções estendidas, que definem a interface entre o sistema operacional e os programas de usuários. Programa do usuário: read Serviço do Sistema Operacional: READ Objetos: processos, memória e arquivos Processo e basicamente um programa em execução Composição: código executável, dados, pilha, valor do contador de programa (Registrador de PC), valor do apontador de pilha (Registrador de SP), valor dos demais registradores de HW Suspensão do processo -> salva das informações Chamadas mais importantes: criação e terminação de processos Processos filhos Comunicação entre processos Memória: alocação e deslocação de memória Arquivos Chamadas para criar, remover, abrir, ler, escrever, fechar Diretório agrupar e organizar conjuntos de arquivos Estrutura dos Sistemas Operacionais Os sistemas operacionais dependem muito da arquitetura do computador no qual estão executando. Muitas arquiteturas => muitas possibilidades de sistemas operacionais (mesmo iguais) Sistemas Monolíticos Mais utilizada, porém a mais confusa; Não existe estruturação formal SO = conjunto de procedimentos que podem ser chamados por todos os demais; Interface dos procedimentos bem definida (parâmetros e resultados); Não existem restrições à visibilidade das informações (todos visíveis a todos) Estrutura básica (não formal) : Programa principal que chama o procedimento de serviço; Conjunto de procedimentos de serviço que executam as chamadas de sistema Conjunto de procedimentos utilitários que auxiliam os procedimentos de serviço; A cada chamada de sistema corresponde um procedimento de serviço; Procedimentos utilitários cumprem tarefas para os de serviço (ler dados na memória) Na compilação de um programa, todos os procedimentos necessários devem ser compilados e ligados em um único programa objeto => não há restrição de informações
3 Sistemas em Camadas É uma generalização da estrutura do Sistema Monolítico, entendido como uma hierarquia de níveis Possuía 6 níveis : nível 0 (baixo) : alocação do processador nível 1 : responsável pela gerência da memória. nível 2 : responsável pela comunicação processo-console de operação. nível 3 : fazia gerência de E/S. nível 4 : continha os programas de usuário. nível 5 : operador do sistema Máquinas Virtuais Objetivo: sistema timesharing deve fornecer : 1. Ambiente para multiprogramação 2. Máquina estendida com interface amigável (SO) Centro do sistema -> Monitor da máquina virtual, executava sobre HW, oferecendo ambiente para multiprogramação na forma de várias máquinas virtuais para os níveis superiores Um SO pode então ser instalado e executado em cada máquina virtual. Máquinas diferentes podem até executar SO s diferentes (e muitas vezes assim é) : sistemas batch, monousuário, ou o sistema interativo CMS (Conversational Monitor System). Cliente - Servidor Mas a idéia de mover o código para níveis mais altos foi aproveitada por muitos SO modernos Nestes, o kernel é apenas responsável pelo contato direto com HW. As rotinas de tratamento de chamadas do sistema são implementadas como processos de usuário SO dividido em partes menores para gerenciar somente uma faceta do sistema Grande vantagem do modelo Cliente-Servidor: totalmente adaptável para ambientes distribuídos Nestes ambientes, os processos podem estar rodando em máquinas separadas, mas o SO funciona da mesma forma : serviço pedido via solicitação (msg) e resposta é recebida (msg)
4 Tipos de Sistemas Operacionais Sistemas Monoprogramáveis Foram os 1ºs SO => voltados para o controle de 1 único programa executando no computador Programa aloca o processador, memória e periféricos de forma exclusiva Surgiram nos 1ºs mainframes, mas depois foram abandonados em favor de SO s mais sofisticados, Retornaram como SO dos computadores pessoais Vantagem: Implementação simples : pouca preocupação com proteção Desvantagem: Subutilização - processador espera por E/S, programa pode não usar toda memória ou dispositivos de E/S Sistemas Multiprogramáveis Permitem que vários programas utilizem os recursos do HW Mais complexos (necessidade de proteção) SO responsável pelo controle da concorrência no acesso aos recursos Vantagem óbvia : melhor utilização dos recurso Vantagem menos óbvia : barateamento de custos (compartilha recursos) Desvantagem: Mais complexos (necessidade de proteção) Modo de gerenciar os programas: Sistemas Batch executados de forma seqüencial normalmente não interagiam com o usuário (maiores atrasos) mas tempo de resposta longo Sistemas Timesharing = tempo compartilhado fatia de tempo (time-slice) do processador simula um ambiente em que todo o computador é dedicado ao usuário são complexos, mas acabam por aumentar a produtividade com a redução do uso do sistema (interatividade) Sistemas de Tempo Real Semelhantes ao Timesharing, mas possui exigências quanto ao tempo de resposta do sistema, Não há a idéia de fatia de tempo. Depende da prioridade de execução SO não define prioridades apenas aloca recursos para os que tem a maior
5 Sistemas Multiprocessados Classificação de máquinas multiprocessadas (Taxonomia de Flynn: fluxos de instruções e dados) SISD (Single Instruction, Single Data) : todos os monoprocessados SIMD (Single Instruction, Multiple Data) : processadores vetoriais e matriciais MISD (Multiple Instruction, Single Data) : teórico, não possui implementação MIMD (Multiple Instruction, Multiple Data) : sistemas multiprocessados paralelos e distribuídos SO s para sistemas multiprocessados incorporam as características da multiprogramação, adicionando algumas Vantagens : Escalabilidade : aumentar capacidade de processamento a um custo menor Reconfiguração : adaptação automática a falhas Balanceamento : distribuição da carga para melhorar desempenho Desvantagens : Complexidade do controle Segurança Aspectos a considerar no multiprocessamento : comunicação entre processadores grau de compartilhamento da memória e dispositivos de E/S Levando em conta estes aspectos, os Sistemas Multiprocessados se dividem em : Sistemas Fortemente Acoplados: diversos processadores que compartilham a mesma memória geralmente os processadores estão muito próximos (placa), numa máquina só, controlados por um mesmo SO aplicações que utilizem muita capacidade de processamento para resolução de poucas ou uma só tarefa (aplicações científicas) Simétricos : todos os processadores são iguais Assimétricos : um processador que é mais igual que os outros máster. Sistemas simétricos X assimétricos, são mais poderosos ainda que mais complexos : mais tolerantes a falhas (?) melhor balanceamento mais eficiente (sobrecarga do master) Sistemas Fracamente Acoplados computadores autônomos ligados por um link de comunicação pode haver diferentes SO s modos de comunicação comuns
6 Sistemas Multiprocessados Fracamente Acoplados Eles evoluíram dos sistemas com terminais burros => ganharam poder de processamento próprio e descartaram o centralizador (±) Os sistemas componentes são chamados de nós, hosts ou estações. O grau de integração entre eles pode classificar o sistemas como : de Rede : nós independentes, mas com HW e SW suficientes para comunicar com outros e compartilhar recursos. Ex.: LAN Distribuídos : nós interrelacionados, normalmente com mesmo SO, que simulam ambiente único para usuários. Balanceamento e disponibilidade automáticos => redundância Sistemas Fracamente Acoplados também podem ter organização simétrica ou assimétrica, mas somente quanto a funções específicas ou partes do SO (servidores). No mais, eles são totalmente independentes Modo como a comunicação é realizada em : Barramento: Há apenas uma linha de comunicação disponível para todos os processadores (interna para fortes, externa para fracos) Em ambos os casos, o problema é que somente uma unidade pode utilizar o barramento a cada instante Em sistemas fortes => coerência da memória Em sistemas fracos => colisão Isso limita o tamanho possível do sistema, cuja eficiência está diretamente relacionada à capacidade do barramento Nos sistemas fortes, o controle do barramento não é executado pelo SO, mas sim pelo HW (muito + rápido e eficiente) Nos sistemas fracos, esse controle é praticamente um novo componente (essencial) do SO => gerência de comunicações (protocolos) Comunicação comutada Há uma linha de comunicação entre cada par de unidades (ponto-a-ponto). Neste caso, nem todos os processadores precisam estar diretamente conectados As mensagens podem ser roteadas de forma diferente a cada conexão Bibliografia MACHADO, Francis B.& MAIA, Luiz P. Arquitetura de Sistemas Operacionais, 2a Ed. LTC- RJ TANEMBAUM, A S.Sistemas Operacionais Modernos, Prentice Hall. RJ
7 VANTAGENS: Sistemas Distribuídos X Sistemas Centralizados Economia = podem oferecer melhor relação preço performance do que a oferecida pelos mainframes. Velocidade = um sistema distribuído pode ter um poder de processamento maior que o de qualquer mainframe. Distribuição = algumas aplicações envolvem maquinas separadas fisicamente. Confiabilidade = se uma maquina deixar de funcionar, o sistema como um todo pode sobreviver. Crescimento incremental = poder computacional pode crescer indefinidamente. Sistemas Distribuídos X Computadores Pessoais Compartilhamento de dados = permite que mais de um usuário acesse uma base de dados comum. Compartilhamento de dispositivos = permite que mais de um usuário possa ter acesso a periféricos muito caros. Comunicação torna muito mais fácil a comunicação pessoa a pessoa, por exemplo, empregando correio eletrônico. Flexibilidade = Espalha a carga de trabalho por todas as maquinas disponíveis ao longo da rede. DESVANTAGENS: Software: Que tipo de SO, LP, e Aplicação são apropriadas para tais sistemas? Como esta o conhecimento do usuário a respeito do assunto? Que tipo de trabalho deve ser feito pelo sistema, e qual deve ser feito pelo usuário? Rede de Comunicação: Perda de mensagens Sobrecarga: substituir por outra maior adicionar outra rede Segurança Dados secretos podem ficar acessíveis.