Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com
Introdução Um sistema operacional é um programa que atua como intermediário entre o usuário e o hardware de um computador. O propósito de um sistema operacional é fornecer um ambiente no qual o usuário possa executar programas. O principal objetivo de um sistema operacional é, portanto tornar o uso do sistema de computação conveniente. Uma meta secundária é usar o hardware do computador de forma eficiente. 2/12
O que é um Sistema Operacional? Um sistema de computação pode ser dividido em quatro componentes básicos: o hardware, o sistema operacional, os programas aplicativos e os usuários. Visão abstrata dos componentes de um sistema de computação 3/12
Introdução O hardware CPU (Central Processing Unit), a memória e os dispositivos de entrada/saída (I/O, Input/Output) fornece os recursos básicos de computação. Os programas aplicativos processadores de texto, planilhas eletrônicas, compiladores e navegadores Web definem as maneiras em que esses recursos são usados para resolver os problemas de computação dos usuários. Pode haver muitos usuários diferentes (pessoas, máquinas, outros computadores) tentando resolver problemas diferentes, assim como pode haver muitos programas aplicativos diferentes. O sistema operacional controla e coordena o uso do hardware entre os vários programas aplicativos para os vários usuários. Um sistema operacional é semelhante a um governo. O sistema operacional não executa nenhuma função útil por si mesma. Simplesmente fornece um ambiente no qual os outros programas podem realizar tarefas úteis. 4/12
Introdução Sistema Operacional como um alocador de recursos Um sistema de computação possui muitos recursos (hardware e software) que podem ser necessários para resolver um problema: tempo de CPU, espaço de memória, espaço de armazenamento de arquivos, dispositivos de entrada/saída, entre outros. O sistema operacional atua como gerente desses recursos e os aloca conforme necessário para a execução de tarefas. Sistema operacional é um programa de controle Controla a execução dos programas de usuários e preocupa-se especialmente com a operação e o controle de dispositivos de I/O. É mais fácil definir um sistema operacional pelo que ele faz do que pelo que ele é. O principal objetivo de um sistema operacional é a conveniência do usuário. Os sistemas operacionais existem porque tem como missão tornar a tarefa computacional mais fácil. Uma meta secundária é a operação eficiente do sistema de computação. No passado, a eficiência era frequentemente mais importante que a conveniência. 5/12
Sistemas em lote (batch) Os primeiros computadores eram máquinas exageradamente grandes (em termos físicos) Os dispositivos de entrada comuns eram leitoras de cartões e unidades de fita. Os dispositivos de saída comuns eram impressoras de linhas, unidades de fita e perfuradoras de cartões. O usuário não interagia diretamente com os sistemas de computação. Em vez disso, ele preparava um job (tarefa) e o submetia ao operador de computador. A tarefa geralmente tinha a forma de cartões perfurados. Algum tempo depois (minutos, horas ou dias), a saída aparecia. Para acelerar o processamento, os operadores reuniam os jobs em lotes com necessidades semelhantes e os executavam no computador como um grupo Neste ambiente de execução, a CPU ficava muitas vezes ociosa, porque as velocidades dos dispositivos mecânicos de I/O são intrinsecamente mais lentas que as dos dispositivos eletrônicos 6/12
Sistemas em lote (batch) A introdução da tecnologia de disco permitiu que o sistema operacional mantivesse todos os jobs em um disco Com acesso direto a vários jobs, o escalonamento de jobs poderia ser executado para usar recursos e realizar tarefas de forma eficiente. O aspecto mais importante do escalonamento de jobs é a capacidade de multiprogramação. A multiprogramação aumenta a utilização de CPU organizando jobs de forma que a CPU sempre tenha um job a executar O sistema operacional mantém vários jobs na memória ao mesmo tempo. O sistema operacional escolhe e começa a executar um dos jobs. Em alguns momentos, o job terá de esperar a conclusão de alguma tarefa, com uma operação de I/O. Em um sistema não-multiprogramado, a CPU ficaria ociosa. Em um sistema de multiprogramação, o sistema operacional simplesmente passa para outro job e o executa. 7/12
Sistemas de tempo compartilhado Tempo compartilhado, ou multitarefa, é uma extensão lógica da multiprogramação. A CPU executa vários jobs alternando entre eles, mas as trocas ocorrem com tanta freqüência que os usuários podem interagir com cada programa durante sua execução. Como o sistema alterna rapidamente de um usuário para outro, cada usuário tem a impressão de que todo o sistema de computação está dedicado ao seu uso, enquanto, na verdade, um computador está sendo compartilhado por muitos usuários. Embora alguns processamentos em batch ainda ocorram, a maioria dos sistemas de hoje é de tempo compartilhado. Por essa razão, a multiprogramação e o tempo compartilhado são os temas centrais dos sistemas operacionais modernos.. 8/12
Sistemas de computadores pessoais Os computadores pessoais (PCs) apareceram nos anos 70. Os sistemas operacionais para PC não eram nem multiusuário nem multitarefa. No entanto, as metas desses sistemas mudaram com o tempo; em vez de maximizar a utilização de CPU e periféricos, os sistemas optam por maximizar a conveniência e a capacidade de resposta ao usuário. Os sistemas operacionais para esses comutadores se beneficiaram de várias formas do desenvolvimento de sistemas operacionais para mainframes. Por exemplo, a proteção de arquivos em princípio não era necessária em uma máquina pessoal. No entanto, esses computadores muitas vezes estão ligados a outros computadores em redes locais ou conexões Internet. 9/12
Sistemas paralelos Existe uma tendência em direção aos sistemas multiprocessadores. Tais sistemas têm mais de um processador em comunicação ativa, compartilha o barramento, o clock e, às vezes, a memória e os dispositivos periféricos. Esses sistemas são chamados de sistemas fortemente acoplados Existem vários motivos para construir sistemas assim. Uma vantagem é a maior produção (throughput). Aumentando o número de processadores, espera-se realizar mais trabalho em menos tempo. Outro motivo para a existência de sistemas com múltiplos processadores é o aumento da confiabilidade. Se as funções puderem ser distribuídas adequadamente entre vários processadores, a falha de um processador não vai interromper o sistema, apenas reduzirá sua velocidade. Se houver dez processadores e um falhar, cada um dos nove processadores restantes deverá pegar uma parte do trabalho do processador que falhou. Os sistemas projetados com esta capacidade de continuar a fornecer serviço mesmo com uma degradação são chamados de tolerante a falhas. 10/12
Sistemas de tempo real Um sistema de tempo real é usado quando existem requisitos rígidos de tempo Geralmente é usado como um dispositivo de controle em uma aplicação dedicada. Os sistemas que controlam experimentos científicos, sistemas de controle industrial e sistemas de injeção de combustível em motores de veículos são de tempo real. Um sistema de tempo real tem limitações de tempo bem definidas. O processamento tem de ser feito dentro dos limites definidos ou o sistema falhará. Praticamente todos os PCs e estações de trabalho modernas são capazes de executar um navegador Web para acessar documentos hipertexto na Web. 11/12
Sistemas distribuídos Em contraste com os sistemas chamados de fortemente acoplados discutidos anteriormente, as redes de computadores usadas nesses tipos de aplicações consistem em uma coleção de processadores que não compartilham memória ou clock. Em vez disso, cada processador tem sua própria memória local. Os processadores se comunicam entre si através de várias linhas de comunicação, tais como linhas telefônicas de alta velocidade. Taxonomia de Tanenbaum Esses sistemas geralmente são chamados de sistemas fracamente acoplados. A principal diferença entre eles é que, em um sistema distribuído, a existência de diversos computadores autônomos é transparente (ou seja, o usuário não tem conhecimento deles). 12/12