Sistemas Operacionais – Tecnologias de Informação – Aula 2

Tipos de Sistemas Operacionais Sistemas em Lote (Batch) Os primeiros computadores eram grandes equipamentos operados a partir de um console. Seus dispositivos de entrada mais comuns eram leitores de cartão e unidades de fita. Os de saída eram impressoras, unidades de fita e perfuradores de cartão. O usuário (geralmente um programador) interagia com o computador por intermédio de um operador. O usuário prepara uma tarefa (job) composta de programa, dados e informações de controle. Esta tarefa era entregue ao operador sob a forma de um conjunto de cartões perfurados. Após o processamento (que poderia durar mais de um dia) lhe era entregue a saída do processamento: uma impressão (em geral) ou alguns dados para interpretação de erros de execução. Nesta época o sistema operacional ficava residente em memória e sua principal tarefa era transferir o controle de uma tarefa para o subseqüente. Os operadores tentavam otimizar este processo reunindo tarefas em lotes com características semelhantes e executando-as como um grupo. Trabalhando neste regime, era comum a UCP (Unidade Central de Processamento, também conhecida com CPU, de Central Processing Unit) ficar ociosa durante atividades de entrada ou saída de dados (conhecida como E/S ou I/O, de Input/Output). Os dispositivos de E/S, geralmente, contém componentes mecânicos, intrisicamente mais lentos do que os dos dispositivos eletrônicos. Melhorias nos dispositivos de E/S tornaram-nos mais rápidos, mas as UCP avançaram ainda mais rápido. A solução deste problema começou a se desenhar com a introdução dos discos rígidos em 1957, pela IBM. O primeiro deles podia armazenar a incrível – para a época – quantidade de 5 MB. Um disco rígido poderia manter todas as tarefas e fornecer acesso direto a todos eles. Isso possibilitou a criação da multiprogramação. O sistema operacional pode manter várias tarefas na memória ao mesmo tempo. Estas tarefas são um subconjunto das tarefas matidas em um pool de tarefas. Uma desta tarefas é posta em execução. Em algum instante esta tarefa pode deixar a UCP ociosa (por estar esperando uma operação de E/S, por exemplo). Originalmente a UCP ficaria realmente ociosa. Em um ambiente de multiprogramação o sistema operacional passa o controle da UCP para outra tarefa e a executa. Uma das decisões que o sistema operacional precisa tomar pelo usuário é a escolha de quais tarefas do pool devem ser mantidas na memória. Esta tomada de decisão é denominada escalonamento de tarefas. Para manter diversas tarefas na memória o sistema operacional precisa implementar algum tipo de gerenciamento de memória. Outra questão delicada é selecionar qual de diversas tarefas aptas a serem executadas será alocada para a UCP, o que é conhecido como escalonamento de processador ou de processamento.

Sistemas de Tempo Compartilhado Estes são uma extensão lógica da multiprogramação e vieram permitir a interação do usuário com o sistema computacional. Um sistema de computação interativo permite a comunicação direta entre o usuário e o sistema. O tempo de resposta do sistema deve ser curto, em geral abaixo de 1 segundo. Como cada ação destas tende a ser curta, pode-se planejar um sistema com diversos usuários, pois um pequeno tempo da UCP precisa ser alocada a cada um deles. Como o sistema operacional alterna rapidamente entre um usuário e outro, cada usuário tem a impressão de que o sistema computacional está dedicado ao seu uso. Esta é a base dos sistemas de compartilhamento de tempo, que são aqueles que compartilham os recursos de um sistema computacional entre diversos usuários por intermédio da multiprogramação. Este conceito foi desenvolvido em 1957, por Bob Bemer. Neste tipo de sistema cada usuário tem ao menos um programa um programa separado na memória. Sistemas de computadores pessoais Os computadores pessoais surgiram na década de 1970. Os primeiros sistemas operacionais deste tipo de computador não eram multiusuário, nem multitarefa. Contudo, este sistemas operacionais beneficiarem-se com características desenvolvidas para os sistemas operacionais dos mainframes. Sistemas paralelos São cada vez mais comuns os sistemas computacionais que contam com mais de uma UCP. São denominados como sistemas multiprocessador. Estes têm mais de uma UCP, ou processador, em comunicação ativa, compartilhando barramento, clock e até mesmo memória e dispositivos periféricos. Estes são chamados sistemas fortemente acoplados ou tightly coupled. Com o maior número de processadores, espera-se a execução de mais tarefas, em menos tempo. Este acréscimo na produtividade dos sistemas (escalabilidade) não é diretamente proporcional ao acréscimo de número de processadores. Existem perdas relacionadas aos esforços necessários para a manutenção harmoniosa do trabalho entre os processadores e para contornar disputas por recursos compartilhados. Estes sistemas geram economia pelo compartilhamento de periféricos, memória primária e secundária e fontes de alimentação. São convenientes pois possibilitam armazenamento mais centralizado de dados. Este sistema fornece maior disponibilidade que é a probabilidade de um sistema estar operando corretamente e disponível para uso em um dado instante de tempo, mesmo na ocorrência de falhas, defeitos físicos ou imperfeições que ocorram em algum componente de hardware ou de software em um dado sistema. Outro benefício é a confiabilidade. A falha de um processador irá diminuir a eficiência do sistema, mas não o interromperá. Esta capacidade é conhecida como degradação normal e os sistemas que a implementam são conhecidos por ser tolerantes a falhas. A operação contínua na presença de falhas requer mecanismos que detectem, façam o diagnóstico e correção das falhas.

Convém esclarecer que estas falhas equivalem à expressão em inglês fault, cuja tradução recomendada pela Sociedade Brasileira de Computação (SBC) é “falha” mas pode ser encontrada na literatura como “defeito”. Trata-se de problemas em um componente de um sistema computacional. Se este problema levar a geração de um dado incorreto ou inexato, dá-se um erro (error). Ao causar a indisponibilidade de um programa ou mesmo do sistema este erro cria uma failure, interpretada como “defeito” pela SBC, “falha” em determinados casos, “avaria” em Portugal. Para minimizar possíveis confusões, talvez seja recomendável utilizar tanto as expressões “falha” ou “defeito” para fault, “erro” para error e disfunção para as failures. São comuns os sistemas multiprocessadores utilizarem multiprocessamento simétrico ou SMP (de Symmetric MultiProcessing). Nele cada processador executa uma cópia idêntica do sistema operacional, que comunicam-se entre si como for necessário e tem tempo uniforme de acesso à memória. Também é possível a arquitetura NUMA (Non-Uniform Memory Access), onde o tempo de acesso à memória varia em função da localização física dos processadores em relação à da memória. Outra forma de trabalho é a de multiprocessamento assimétrico, na qual cada processador recebe uma tarefa específica. Um processador mestre controla o sistema e os outros (escravos) recebem instruções dele. A distinção pode ser implementada em hardware ou software. Com o barateamento dos processadores, mais responsabilidades podem ser atribuídas aos processadores escravos de um sistemas com multiprocessamento assimétrico. Por exemplo, um processador escravo com sua própria memória pode gerenciar um sistema de disco (até implementando seus próprios algoritmos de escalonamento e filas de disco) ou controlar interfaces gráficas. É também comum esta arquitetura que ela não é mais considerada como multiprocessamento real. Sistemas de Tempo Real Estes são utilizados quando existem requisitos rígidos de tempo na operação de um processador ou no fluxo de dados. Geralmente o sistema operacional, os aplicativos ou ambos recebem dados de sensores, analisam estes dados e ajustam controles e atuadores. São Sistemas de Tempo Real alguns que controlam experimentos científicos, de imagens médicas, de controle industrial e de injeção de combustíveis em motores de veículos. Os sistemas de tempo real crítico garante que as tarefas críticas sejam executadas a tempo. Para tanto, todos os atrasos do sistema devem ser limitados. Geralmente o armazenamento secundário é limitado ou ausente. Sistemas de Tempo Real Crítico podem ser divididos em Sistemas de Falha Segura e de Falha Operacional. Nos de Falha Segura são garantidos um ou mais estados seguros aos quais estes sistemas podem ser levados em caso de disfunção. Os de Falhas Operacionais não possuem estes estados seguros facilmente identificáveis e devem prover um mínimo de serviços ou funcionalidades mesmo em caso de erros ou disfunções. Os sistemas de tempo real não-crítico são os que nos quais as tarefas críticas de tempo real recebam prioridade sobre as demais tarefas e mantenham esta prioridade

até a conclusão destas tarefas. Não é conveniente seu uso para controle industrial ou robótico, mas pode ser adequado para multimídia, realidade virtual, exploração submarina e extraplanetária. Estes casos exigem recursos avançados que não podem ser implementados nos sistemas de tempo real crítico. Sistemas distribuídos As redes de computadores, em especial a Internet, rompeu o limite de pessoalidade dos computadores pessoais. Uma rede de computadores pode ser vista como uma coleção de processadores que não compartilham memória ou clock. Nela os processadores comunicam-se entre si por várias linhas de comunicação que podem ser barramentos ou linhas telefõnicas. Estes são conhecidos como sistemas fracamente acoplados, loosely coupled systems ou ainda sistemas distribuídos. Como as linhas de comunicação entre os processadores não são compostas exclusivamente de barramentos, a eficiência desta comunicação é menor do que a dos sistemas fortemente acoplados. Um sistema fracamente acoplado com todos os hosts executando um mesmo grupo de aplicações é um cluster, onde dois ou mais servidores são interligados, normalmente, por algum tipo de conexão de alto desempenho. O usuário não conhece os nomes dos membros do cluster e nem sabe quantos são. Estes sistemas também são chamados de Beowulf. Sistemas em cluster são utilizados para serviços de bancos de dados, garantindo alta disponibilidade, escalabilidade e balanceamento de carga. Um formato específico de cluster é a computação em grade (grid computing) onde são utilizados recursos heterogêneos (diferentes plataformas, arquiteturas de software e hardware e sistemas operacionais), localizados em diferentes lugares, conectados por redes com padrões abertos. Graças aos recursos de rede surgiu o conceito de sistema operacional de rede, que fornece métodos de compartilhamento de arquivos e dispositivos. Eles implementam a troca de mensagens entre diferentes computadores.

Este trabalho está licenciado por Cid Rodrigues de Andrade sob uma Licença Creative Commons Atribuição-Uso NãoComercial 2.5 Brasil. Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nc/2.5/br/ ou envie uma carta para Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.