< Super Dicas |  Glossário  |  Softwares  | Cuca Sabida  |  Aprenda | Tutoriais |  Página inicial  > 

 
 
  Aulas
Internet
Linguagens
Redes
Hardware
Banco de Dado
Comp. Gráfica
I. A.
Algoritmos
S. Operacional

  Sofwares
Ms-Word
Ms-Excel
I. Explorer
Front Page
Linux
Winzip

  Instrutor.com
:: Contatos
:: Quem somos
:: Publicidade
:: Ganhamos
:: Comente
:: Parcerias

  Ferramentas
Mapa do Site
Downloads

  Eu gostei
Home Page
Papel / Parede

 

Introdução aos Sistemas Operacionais

Função dos Sistemas Operacionais

Um Sistema de Computacional é composto por um ou mais processadores, uma certa quantidade de memória, terminais, discos magnéticos, interfaces de rede e dispositivos de I/O, ou seja, estamos lidando com um sistema extremamente complexo. Assim sendo, desenvolver Softwares que gerencie e integre esses componentes de forma correta e otimizada não é tarefa fácil.

O Software de um sistema pode ser dividido, a grosso modo, em duas categorias: os Programas do Sistema, que gerenciam as operações do próprio computador e os Aplicativos, que atuam diretamente sobre o problema do usuário. O mais importante de todos os programas do Sistema Operacional é o SISTEMA OPERACIONAL, que controla todos os recursos do computador e fornece a base sobre a qual os aplicativos são escritos.

Sistemas operacionais são programas que controlam todos os recursos do computador e fornecem a base para o desenvolvimento dos programas de aplicação. É um gerenciador de recursos, responsável pela gerência do processador, gerência de memória, gerência de arquivos, gerência dos dispositivos de entrada e saída e pelos mecanismos de acesso aos dados. O SO simplifica o uso da maquina e otimiza seu desempenho global.

Classificação de SO

Quanto ao número de usuários:

Monousuário
Multiusuário

Quanto ao número de programas na Memória Principal:

Monotarefa (monoprogramado)
Multitarefa (multiprogramado)

Quanto ao número de CPU:

Monoprocessados
Multiprocessados

Quanto ao tipo de processamento:

Batch - A principal característica desse grupo é o fato de que o usuário perde o controle do programa a partir do momento em que ele o submete ao sistema.
On-line (interativo) - A característica marcante desse grupo é permitir a monitoração e o controle do programa, através de um terminal, enquanto durar o processamento.

A Evolução do Sistema Operacional

Os Sistemas Operacionais vem passando por evoluções constantes. Partimos de sistemas operacionais complexos e utilizados somente por analistas de sistemas ou usuários ligados a área de programação e hoje temos com um apenas um clique diversos tipos de acessos e conseqüentemente todos os tipos de usuários ligados à máquinas operando Windows, Linux, etc. Layout’s claros e modernos facilitaram o acesso à tarefas até então complexas demais para alguns profissionais e talvez por isso, hoje temos no mundo milhões de usuários fazendo as mais diversas transações via PC.

Mas então, como funcionavam os computadores antigamente em relação aos SO?

Na década de 50 o que tínhamos eram computadores de grande porte (mainframes) que ficavam isoladas em salas especiais com ar-condicionado, operadas por equipes profissionais. Somente grandes corporações, agências governamentais ou universidades podiam pagar os vários milhões de dólares para tê-las. Para um job (isto é, um programa ou um conjunto de programas) ser executado, o programador primeiramente escrevia o programa no papel (em FORTRAN ou em linguagem de montagem) e depois o perfurava em cartões. Ele então levava o maço de cartões para a sala de entradas, entregava-o a um dos operadores e ia tomar um café até que a saída impressa estivesse pronta. Ao fim da execução de um job pelo computador, um operador ia até a impressora e retirava a saída da mesma e a levava para a sala de saídas, de modo que o programador pudesse retirá-la mais tarde. Ele então apanhava um dos maços de cartões que foram trazidos para a sala de entradas e o colocava na leitora de cartões. Se fosse necessário um compilador FORTRAN, o operador precisava retirar do armário o maço de cartões correspondente e lê-lo. Muito tempo de computador era desperdiçado enquanto os operadores andavam pela sala das máquinas.

Por causa do alto custo do equipamento, era natural que se começasse a buscar maneiras de reduzir o desperdício de tempo no uso da máquina. A solução geralmente adotada era a do sistema em lote (batch). A idéia era gravar vários jobs em fita magnética usando um computador relativamente mais barato, como o IBM 1401, que era muito bom para ler cartões, copiar fitas e imprimir saídas, mas não tão eficiente em cálculos numéricos.

Outras máquinas mais caras, como a IBM 7094, eram usadas para a computação propriamente dita. Essa situação é mostrada na figura abaixo.

Um sistema em lote (batch) antigo. (a) Os programadores levavam os cartões para o 1401. (b) O 1401 gravava o lote de jobs em fita. (c) O operador levava a fita de entrada para o 7094. (d) O 7094 executava o processamento. (e) O operador levava a fita de saída para o 1401. (f) O 1401 imprimia as saídas.

Depois de aproximadamente uma hora acumulando um lote de jobs, a fita era rebobinada e encaminhada para a sala das máquinas, onde era montada em uma unidade de fita. O operador então carregava um programa especial (o antecessor do sistema operacional de hoje), que lia o primeiro job da fita e executava-o. A saída não era impressa, mas gravada em uma segunda fita. Depois de cada job terminado, o sistema operacional automaticamente lia o próximo job da fita e começava a executá-lo. Quando todo o lote tivesse sido processado, o operador retirava a fita de entrada e a fita de saída, trocava a fita de entrada com a do próximo lote e levava a fita de saída para um computador 1401 imprimi-la off-line, isto é, não conectada ao computador principal.

Os grandes computadores desta época foram usados, em sua maioria, para cálculos científicos,como equações diferenciais parciais, muito freqüentes na física e na engenharia. Eles eram reponderantemente programados em FORTRAN e em linguagem de montagem. Os sistemas operacionais típicos eram o FMS (Fortran Monitor System) e o IBSYS, sistema operacional da IBM para o 7094.

Na década de 60, foi criado pela IBM uma série de máquinas (System/360.) cujo objetivo era atender as diversas linhas de usuários de computadores (desde a área científica até bancos e companhias de seguros) e tornar compatível os softwares utilizados nessa máquinas.

O forte da idéia de ‘família de máquinas’ era simultaneamente sua maior fraqueza. A intenção era que qualquer software, inclusive o sistema operacional OS/360, pudesse ser executado em qualquer um dos modelos. O software precisava ser executado em sistemas pequenos e em sistemas muito grandes. Tinha de ser eficiente tanto em sistemas com poucos periféricos como com muitos periféricos. Tinha de funcionar bem em ambientes comerciais e em ambientes científicos. E, acima de tudo, o sistema operacional precisava provar ser eficaz em todos esses diferentes usos.

Não havia como a IBM (ou qualquer outro fabricante) elaborar um software que resolvesse todos esses requisitos conflitantes. O resultado foi um sistema operacional enorme e extraordinariamente complexo, provavelmente duas ou três vezes maior que o FMS. Eram milhões de linhas escritas em linguagem de montagem por milhares de programadores, contendo milhares de erros, que precisavam de um fluxo contínuo de novas versões para tentar corrigi-los. Cada nova versão corrigia alguns erros, mas introduzia novos, fazendo com que, provavelmente, o número de erros permanecesse constante ao longo do tempo.

Apesar de seu enorme tamanho e de seus problemas, o OS/360 e sistemas operacionais similares de terceira geração elaborados por outros fabricantes de computadores atendiam razoavelmente bem à maioria dos clientes; também popularizavam várias técnicas fundamentais. Provavelmente a mais importante dessas técnicas foi a multiprogramação. No 7094, quando o job atual parava para esperar por uma fita magnética terminar a transferência ou aguardava o término de outra operação de E/S, a CPU simplesmente permanecia ociosa até que a E/S terminasse. Para cálculos científicos com uso intenso do processador (CPU-bound), a E/S era pouco freqüente, de modo que o tempo gasto com ela era quase nada significativo. Para o processamento de dados comerciais, o tempo de espera pela E/S chegava a 80 ou 90 por cento do tempo total (IO-bound). Algo então precisava ser feito para evitar que a CPU ficasse ociosa todo esse tempo.

A solução a que se chegou foi dividir a memória em várias partes, com um job diferente em cada partição, conforme mostrado na Figura 1.4. Enquanto um job esperava que uma operação de E/S se completasse, um outro poderia usar a CPU. Se um número suficiente de jobs pudesse ser mantido na memória ao mesmo tempo, a CPU poderia permanecer ocupada quase 100 por cento do tempo. Manter múltiplos jobs de maneira segura na memória, por sua vez, requeria hardware especial para proteger cada job contra danos e transgressões causados por outros jobs, mas o 360 e outros sistemas de terceira geração eram equipados com hardware para isso.

Um sistema multiprogramado com três jobs na memória.

Outro aspecto importante nos sistemas operacionais desta época era a capacidade de transferir jobs de cartões perfurados para discos magnéticos logo que esses chegassem à sala do computador. Assim que um job fosse completado, o sistema operacional poderia carregar um novo job a partir do disco nessa partição que acabou de ser liberada e então processá-lo. Essa técnica é denominada spooling (termo derivado da expressão simultaneous peripheral operation online) e foi também usada para arbitrar a saída. Com o spooling, os 1401 não eram mais necessários, e muito do leva-e-traz de fitas magnética desapareceu.

O anseio por respostas mais rápidas abriu caminho para o compartilhamento de tempo ou timesharing, uma variante da multiprogramação na qual cada usuário se conectava por meio de um terminal on-line. Em um sistema de tempo compartilhado, se 20 usuários estivessem conectados e 17 deles estivessem pensando, falando ou tomando café, a CPU podia ser ciclicamente alocada a cada um dos três jobs que estivessem requisitando a CPU. Como, ao depurar programas, emitem-se normalmente comandos curtos (como, por exemplo, compile um procedimento* de cinco páginas) em vez de comandos longos (como, por exemplo, ordene um arquivo de um milhão de registros), o computador era capaz de fornecer um serviço rápido e interativo a vários usuários e ainda processar grandes lotes de jobs em segundo plano nos instantes em que a CPU estivesse ociosa. O primeiro sistema importante de tempo compartilhado, o CTSS (compatible time sharing system — sistema de compartilhamento de tempo compatível), foi desenvolvido no MIT em um 7094 modificado (Corbató et al., 1962). Contudo, o tempo compartilhado só se popularizou mais tarde, em um período em que a necessária proteção em hardware foi largamente empregada.

No início dos anos 80, a IBM projetou o IBM PC e buscou um software para ser executado nele. O pessoal da IBM entrou em contato com Bill Gates para licenciar seu interpretador Basic. Também lhe foi indagado se ele conhecia algum sistema operacional que pudesse ser executado no PC. Gates sugeriu que a IBM contatasse a Digital Research, a empresa que dominava o mundo dos sistemas operacionais naquela época. Tomando seguramente a pior decisão de negócios registrada na história, Kildall recusou-se a se reunir com a IBM, enviando em seu lugar um subordinado. Para piorar a história, o advogado dele foi contra assinar um acordo de sigilo sobre o produto PC que ainda não havia sido divulgado. Conseqüentemente, a IBM voltou a Gates perguntando-lhe se seria possível fornecer-lhes um sistema operacional.

Então Gates percebeu que um fabricante local de computadores, a Seattle Computer Products, possuía um sistema operacional adequado, o DOS (disk operating system — sistema operacional de disco). Entrou em contato com essa empresa e disse que queria comprá-la (alegadamente por 50 mil dólares), o que foi prontamente aceito.Gates então ofereceu à IBM um pacote DOS/Basic, e ela aceitou. A IBM quis fazer algumas modificações, e para isso Gates contratou a pessoa que tinha escrito o DOS, Tim Paterson, como funcionário da empresa embrionária de Gates, a Microsoft. O sistema revisado teve seu nome mudado para MS-DOS (Microsoft disk operating system — sistema operacional de disco da Microsoft) e rapidamente viria a dominar o mercado do IBM PC. Um fator decisivo para isso foi a decisão de Gates (agora, olhando o passado, extremamente sábia) de vender o MS-DOS para empresas de computadores acompanhando o hardware, em vez de tentar vender diretamente aos usuários finais (pelo menos inicialmente), como tentou Kildall fazer com o CP/M.

Quando em 1983 o IBM PC/AT foi lançado utilizando a CPU Intel 80286, o MS-DOS avançava firmemente ao mesmo tempo que o CP/M definhava. O MS-DOS foi, mais tarde, também amplamente usado com o 80386 e 80486. Mesmo com uma versão inicial bastante primitiva, as versões subseqüentes do MS-DOS incluíram aspectos mais avançados, muitos deles derivados do Unix. (A Microsoft conhecia bem o Unix, pois, nos primeiros anos da empresa, vendeu uma versão para microcomputadores do Unix denominada Xenix.)

O CP/M, o MS-DOS e outros sistemas operacionais dos primeiros microcomputadores eram todos baseados na digitação de comandos em um teclado feita pelo usuário. Isso finalmente mudou graças a um trabalho de pesquisa de Doug Engelbart no Stanford Research Institute nos anos 60. Engelbart inventou uma interface gráfica — voltada para o usuário — com janelas, ícones, menus e mouse, denominada GUI (graphical user inter-face).

A Microsoft decidiu escrever um sucessor para o MS-DOS baseado na interface GUI e desenvolveu um sistema denominado Windows, que era executado originalmente em cima do MS-DOS (isto é, era como se fosse um interpretador de comandos em vez de um sistema operacional de verdade). Por aproximadamente dez anos, de 1985 a 1995, o Windows permaneceu apenas como um ambiente gráfico no topo do MS-DOS. Contudo, em 1995 lançou-se uma versão do Windows independente do MS-DOS, o Windows 95. Nessa versão, o Windows incorporou muitos aspectos de um sistema operacional, usando o MS-DOS apenas para ser carregado e executar programas antigos do MS-DOS. Em 1998, lançou-se uma versão levemente modificada desse sistema, chamada Windows 98.

Um outro sistema operacional da Microsoft é o Windows NT (NT é uma sigla para new technology), que é compatível com o Windows 95 em um certo nível, mas reescrito internamente por completo. A Microsoft esperava que a primeira versão do NT ‘aposentasse’ o MS-DOS e todas as outras versões do Windows, já que o NT era muito superior, mas isso não aconteceu. Somente com a versão Windows NT 4.0 foi que ele finalmente deslanchou, especialmente em redes corporativas. A versão 5 do Windows NT foi renomeada para Windows 2000 no início de 1999. Seu objetivo era suceder tanto o Windows 98 quanto o Windows NT 4.0, mas também não obteve êxito, e então a Microsoft lançou mais uma versão do Windows 98 denominada Windows Me (Millenium edition).

O outro grande competidor no mundo dos computadores pessoais é o Unix (e seus vários derivados). O Unix é o mais forte em estações de trabalho e em outros computadores mais avançados, como os servidores de rede. Ele é especialmente popular em máquinas cujos processadores são chips RISC de alto desempenho. Em computadores baseados em Pentium, o Linux está se tornando uma alternativa popular para estudantes e um crescente número de usuários corporativos.

Um fato interessante, que teve início em meados dos anos 80, foi o desenvolvimento das redes de computadores pessoais executando sistemas operacionais de rede e sistemas operacionais distribuídos. Em um sistema operacional de redes, os usuários sabem da existência de múltiplos computa-dores e podem conectar-se a máquinas remotas e copiar arquivos de uma máquina para outra. Cada máquina executa seu próprio sistema operacional local e tem seu próprio usuário local (ou usuários locais).

Sistemas operacionais de rede não são fundamentalmente diferentes de sistemas operacionais voltados para um único processador: obviamente precisam de um controlador de interface de rede e de software de baixo nível para controlá-la, bem como de programas para conseguir sessões remotas e também ter acesso remoto a arquivos, mas esses acréscimos não alteram a estrutura essencial do sistema operacional.

Um sistema operacional distribuído, por outro lado, é aquele que parece aos olhos dos usuários um sistema operacional tradicional de processador único, mesmo que na realidade seja composto de múltiplos processadores. Os usuários não precisam saber onde seus programas estão sendo executados nem onde seus arquivos estão localizados, pois tudo é tratado automática e eficientemente pelo sistema operacional.

Os verdadeiros sistemas operacionais distribuídos requerem muito mais do que apenas adicionar algum código a um sistema operacional monoprocessador, pois os sistemas distribuídos e centralizados são muito diferentes em pontos fundamentais. Por exemplo, é comum que sistemas distribuídos permitam que aplicações sejam executadas em vários processadores ao mesmo tempo, o que exige algoritmos mais complexos de escalonamento de processadores para otimizar o paralelismo. Atrasos de comunicação na rede muitas vezes significam que esses (e outros) algoritmos devam ser executados com informações incompletas, desatualizadas ou até mesmo incorretas. Essa situação é radicalmente diferente de um sistema monoprocessador, em que o sistema operacional tem toda a informação sobre o estado do sistema.

 

 
 
 
Design by: Instrutor.com © - Direitos reservados