Sistemas operacionais

Sistemas operacionais

(Parte 1 de 6)

UNIVERSIDADE DO SUL DE SANTA CATARINA – UNISUL

CENTRO DE CIÊNCIAS EXATAS, AGRÁRIAS E DAS ENGENHARIAS

CURSO DE CIÊNCIA DA COMPUTAÇÃO

SISTEMAS

OPERACIONAIS I

Professor Alessandro Zanini

E-Mail : zanini@ati.unisul.rct-sc.br

http://www.unisul.rct-sc.br/so1

Tubarão - 2000

1.Conceitos Básicos

1.1Introdução

Antes de começarmos a estudar os conceitos e os principais componentes de um sistema operacional, devemos saber primeiramente quais são suas funções básicas.

Por mais complexo que possa parecer, um sistema operacional e apenas um conjunto de rotinas executado pelo processador, da mesma forma que qualquer outro programa.. Sua principal função e controlar o funcionamento do computador, como um gerente dos diversos recursos disponíveis no sistema.

O nome sistema operacional não e único para designar esse conjunto de programas. Nomes como monitor, executivo, supervisor ou controlador possuem, normalmente, o mesmo significado.

Um sistema operacional possui inúmeras funções e resumimos essas funções, basicamente, em duas, descritas a seguir:

1.1.1Facilidade de acesso aos recursos do sistema

Um sistema de computacão, ao possui, normalmente, diversos componentes, como terminais, impressoras, discos e fitas. Quando utilizamos um desses dispositivos, não nos preocupamos com a maneira como e realizada esta comunicação e os inúmeros detalhes envolvidos.

Para a maioria de nós uma operação cotidiana, como, por exemplo, a leitura de um arquivo em disquete, pode parecer simples. Na realidade, existe um conjunto de rotinas específicas, controladas pelo sistema operacional, responsável por acionar a cabeça, a de leitura e gravação da unidade de disco, posicionar na trilha e setor onde estão os dados, transferir os dados do disco para a memória e, finalmente, informar ao programa a chegada dos dados.

O sistema operacional, então, serve de interface entre o usuários e os recursos diponíveis no sistema, tornando esta comunicação transparente e permitindo ao usuário um trabalho mais eficiente e com menores chances de erros (Figura 1).

Este conceito de ambiente simulado, criado pelo sistema operacional, e denominado máquina virtual (virtual machine) e está presente, de alguma forma, na maioria dos sistemas atuais.

É comum pensar-se que compiladores, linkers, bibliotecas, depuradores e outras ferramentas fazem parte do sistema operacional, mas, na realidade, estas facilidades são apenas utilitários, destinados a ajudar a interação do usuário com o computador.

1.1.2Compartilhamento de recursos de forma organizada e protegida

Quando pensamos em sistemas multiusuário, onde vários usuários podem estar compartilhando os mesmos recursos, como, por exemplo, memória e discos, é necessário que todos tenham oportunidade de ter acesso a esses recursos, de forma que um usuário não interfira no trabalho do outro.

Se imaginarmos, por exemplo, que uma impressora possa ser utilizada por vários usuários do sistema, deverá existir algum controle para impedir que a impressão de um usuário interrompa a impressão de outro. Novamente, o sistema operacional é responsável por permitir o acesso concorrente a esse e a outros recursos, de forma organizada e protegida, dando ao usuário a impressão de ser o único a utilizá-los.

O compartilhamento de recursos permite, também, a diminuição de custos, na medida em que mais de um usuário possa utilizar as mesmas facilidades concorrentemente, como discos, impressoras, linhas de comunicação etc.

Não é apenas em sistemas multiusuário que o sistema operacional é imporntate. Se pensarmos que um computador pessoal nos permite executar várias tarefas, como imprimir um documento, copiar um arquivo pela internet ou processar uma planilha, o sistema operacional deve ser capaz de controlar a execução concorrentes de todas essas tarefas.

Figura 1 - Visão do sistema operacional como interface entre os usuários e os recursos do sistema.

1.2Máquinas de Níveis

Um computador, visto somente como um gabinete composto de circuitos eletrônicos, cabos e fontes de alimentação (hardware), não tem nenhuma utilidade. É através de programas (software) que o computador consegue armazenar dados em discos, imprimir relatórios, gerar gráficos, realizar cálculos, entre outras funções. O hardware é o responsável pela execução das instruções de um programa, com a finalidade de se realizar alguma tarefa.

Uma operação efetuada pelo software pode ser implementada em hardware, enquanto uma instrução executada pelo hardware pode ser simulada via software. Esta decisão fica a cargo do projetista do computador em função de aspectos como custo, confiabilidade e desempenho. Tanto o hardware como o software são logicamente equivalentes, interagindo de uma forma única para o usuário.

Nos primeiros computadores, a programação era realizada em painéis, através de fios, exigindo um grande conhecimento do hardware e de sua linguagem de máquina. Isso era uma grande dificuldade para os programadores da época.

A solução para esse problema foi o surgimento do sistema operacional, que tornou a interação entre usuário e computador mais simples, confiável e eficiente. A partir desse acontecimento, não existia mais a necessidade de o programador se envolver com a complexidade do hardware para poder trabalhar; ou seja, a parte física do computador tornou-se transparente para o usuário.

Figura 2 - Visão modular do computador pelo usuário.

Partindo desse princípio, podemos considerar o computador como uma máquina de níveis ou camadas, onde inicialmente existem dois níveis: o nível 0 (hardware) e o nível 1 (sistema operacional). Desta forma, o usuário pode enxergar a máquina como sendo apenas o sistema operacional, ou seja, como se o hardware não existisse. Esta visão modular e abstrata é chamada máquina virtual.

Na realidade, um computador não possui apenas dois níveis, e sim tantos níveis quanto forem necessários para adequar o usuário às suas diversas aplicações. Quando o usuário está trabalhando em um desse níveis, não necessita da existência das outras camadas, acima ou abaixo de sua máquina virtual.

Atualmente, a maioria dos computadores possui a estrutura mostrada na Figura, podendo conter mais ou menos camadas. A linguagem utilizada em cada um desses níveis é diferente, variando da mais elementar (baixo nível) à mais sofisticada (alto nível).

Figura 3 - Máquina de níveis.

1.3Histórico

A evolução dos sistemas operacionais está, em grande parte, relacionada ao desenvolvimento de equipamentos cada vez mais velozes, compactos e de custos baixos, e à necessidade de aproveitamento e controle desses recursos.

Neste histórico dividimos essa evolução em fases, once destacamos, em cada uma, sues principals características de hardware, software, interação com o sistema e aspectos de conectividade.

1.3.1Primeira Fase (1945-1955)

No início da Segunda Guerra Mundial, surgiram os primeiros computadores digitais, formados por milhares de válvulas, que ocupavam areas enormes, sendo de funcionamento lento e duvidoso.

O ENIAC (Electronic Numerical Integrator and Computer) foi o primeiro computador digital de propósito geral. Criado pare a realização de cálculos balísticos, sue estrutura possuía 18 mil válvulas, 10 mil capacitores, 70 mil resistores e pesava 30 toneladas. Quando em operação, consumia cerca de 140 quilowatts e era capaz de realizar 5 mil adições por segundo.

Para trabalhar nessas máquinas, era necessário conhecer profundamente o funcionamento do hardware, pods a programação era feita em painéis, através de fios, utilizando linguagem de máquina. Nessa fase, ainda não existia o conceito de sistema operacional.

Outros computadores foram construídos nessa mesma época, como o EDVAC (Electronic Discrete Variable Automatic Computer) e o IAS (Princeton Institute for Advanced Studies), mas eram utilizados, praticamente, apenas nas universidades e nos órgãos militares.

Com o desenvolvimento da indústria de computadores, muitas empresas foram fundadas ou investiram no setor, como a Sperry e a IBM, o que levou a criação dos primeiros computadores pare aplicações comerciais. A primeira máquina fabricada com esse propósito e bem-sucedida foi o UNIVAC I (Universal Automatic Computer), criado especialmente pare o censo americano de 1950.

1.3.2Segunda Fase (1956-1965)

A criação do transistor e das memórias magnéticas contribui pare o enorme avanço dos computadores da época. O transistor permitiu o aumento da velocidade e da confiabilidade do processamento, e as memórias magnéticas permitiram o acesso mais rápido aos dados, major capacidade de armazenamento e computadores menores.

Com o surgimento das primeiras linguagens de programação, como Assembly e Fortran, os programas deixaram de ser feitos diretamente no hardware, o que facilitou enormemente o processo de desenvolvimento de programas.

Já não era mais possível conviver com tantos procedimentos manuais como os anteriores, que não permitiam o uso eficiente do computador e de seus recursos. Os primeiros sistemas operacionais surgiram, justamente, pare tentar automatizar as tarefas manuais

Figura 4 - Processamento batch

Inicialmente, os programas passaram a ser perfurados em cartões, que, submetidos a uma leitora, eram gravados em uma fita de entrada (Figura 4a). A fita, então, era lida pelo computador, que executava um programa de cada vez, gravando o resultado do processamento em uma fita de saída (Figura 4b). Ao terminar de todos os programas, a fita de saída era lida e impressa (Figura 4c). A esse tipo de processamento, onde um lote (batch) de programas era submetido ao computador, deu-se o nome de processamento batch.

Pode não parecer um avanço, mas anteriormente os programas eram submetidos pelo operador, um a um, fazendo com que o processador ficasse ocioso entre a execução, ao de um programa e outro. Com o processamento batch, um grupo de programas era submetido de uma só vez, o que diminuía o tempo existente entre a execução dos programas, permitindo, assim, melhor uso do processador.

Os sistemas operacionais passaram a ter seu próprio conjunto de rotinas pare operações de entrada/saída (Input/Output Control System—IOCS), que veio facilitar bastante o processo de programação. O IOCS eliminou a necessidade de os programadores desenvolverem sues próprias rotinas de leitura/gravação específicas para cada dispositivo periférico. Essa facilidade de comunicação criou o conceito de independência de dispositivos.

Importantes avanços, em nível de hardware, foram implementados no final dessa fase, principalmente na linha 7094 da IBM. Entre eles, destacamos o conceito de canal, que veio permitir a transferência de dados entre dispositivos de entrada/saída e memória principal de forma independente da UCP. Ainda nessa fase, destacamos os sistemas FMS (Fortran Monitor System) e IBSYS.

1.3.3Terceira Fase (1966-1980)

Através dos circuitos integrados (CIs) e, posteriormente, dos microprocessadores, foi possível viabilizar e difundir o uso de sistemas computacionais por empresas, devido a diminuição de seus custos de aquisição. Além disso, houve grande aumento do poder de processamento e diminuição no tamanho dos equipamentos.

Com base nessa nova tecnologia, a IBM lançou em 1964 a Série 360. Esse lançamento causou uma revolução na indústria de informática, pois introduzia uma linha (família) de computadores pequena, poderosa e, principalmente, compatível. Isso permitiu que uma empresa adquirisse um modelo mais simples e barato e, conforme sues necessidades, mudasse pare modelos com mais recursos, sem comprometer sues aplicações já existentes. Para essa série, foi desenvolvido o sistema operacional OS/360, que tentava atender todos os tipos de aplicações e periféricos. Apesar de todos os problemas desse equipamento e de seu tamanho físico, a Série 360 introduziu novas técnicas, utilizadas ate hoje.

Na mesma época, a DEC lançou a linha PDP-8, também revolucionária, pois apresentava uma linha de computadores de porte pequeno e baixo custo, se comparada aos mainframes ate então comercializados, criando um novo mercado, o de minicomputadores.

A evolução dos processadores de entrada/saída permitiu que, enquanto um programa esperasse por uma operação de leitura/gravação, o processador executasse um outro programa. Para tal, a memória foi dividida em partições, onde cada programa esperava sue vez pare ser processado. A essa técnica de compartilhamento da memória principal e processador deu-se o nome de multiprogramação.

Com a substituição das fitas por discos no processo de submissão dos programas, o processamento batch tornou-se mais eficiente, pois permitia a alteração na ordem de execução das tarefas, ate então puramente seqüencial. A essa técnica de submissão de programas chamou-se spooling, que, mais tarde, também viria a ser utilizada no processo de impressão.

Os sistemas operacionais, mesmo implementando o processamento batch e a multiprogramação, ao, ainda estavam limitados a processamentos que não exigiam comunicação com o usuário. Para permitir a interação rápida entre o usuário e o computador, foram adicionados terminais de vídeo e teclado (interação on-line).

A multiprogramação evoluiu preocupada em oferecer aos usuários tempos de respostas razoáveis e uma interface cada vez mais amigável. Para tal, cada programa na memória utilizaria o processador em pequenos intervalos de tempo. A esse sistema de divisão de tempo do processador chamou-se time-sharing (tempo compartilhado).

Outro fato importante nessa fase foi o surgimento do sistema operacional Unix (1969). Concebido inicialmente em um minicomputador PDP-7, baseado no sistema MULTICS (Multiplexed Information and Computing Service), o Unix foi depois rescrito em uma linguagem de alto nível (linguagem C), tornando-se conhecido por sue portabilidade.

No final dessa fase, com a evolução dos microprocessadores, surgiram os primeiros microcomputadores, muito mais baratos que qualquer um dos computadores ate então comercializados. Entre eles, destacamos os micros de 8 bits da Apple e o sistema operacional CP/M (Control Program Monitor).

(Parte 1 de 6)

Comentários