You are on page 1of 24

SISTEMAS OPERACIONAIS NOTAS DE AULA

INTRODUO

NDICE:
1. Introduo ........................................................................................................ 2 2. O que um Sistema Operacional .................................................................. 4 3. Histrico dos Sistemas Operacionais ........................................................... 6 4. Tipos de Sistemas Operacionais ................................................................. 13 5. Softwares Utilitrios ...................................................................................... 20 6. Estrutura dos Sistemas Operacionais ........................................................ 24 7. Arquitetura de Sistemas Operacionais ....................................................... 28 8. Projeto ............................................................................................................ 31 8. Bibliografia ..................................................................................................... 32 9. Lista de Exerccios ........................................................................................ 33

1 de 24

SISTEMAS OPERACIONAIS NOTAS DE AULA

1. INTRODUO
Um computador sem seu software nada mais do que um pedao intil de metal. No entanto, quando equipado com o software adequado, ele capaz de armazenar e recuperar informao, encontrar erros de sintaxe em textos, executar uma imensa variedade de jogos eletrnicos e de engajar seu usurio em muitas atividades produtivas. O software de um computador pode ser dividido, grosso modo, em duas categorias: os programas de sistemas, que gerenciam a operao do prprio computador, e os programas de aplicao, que resolvem problemas para o usurio. O mais importante dos programas de sistema o sistema operacional, que controla todos os recursos do computador, e fornece a base sobre a qual os programas aplicativos so escritos. Um sistema de computador moderno composto por um ou mais processadores, uma certa quantidade de memria principal, terminais, discos magnticos, interfaces de rede e um conjunto de dispositivos de entrada e sada. Escrever programas que tomem conta de todos esses componentes, fazendo-os trabalhar corretamente e de maneira otimizada uma tarefa bastante difcil de realizar. Se todo programador tivesse que se preocupar como o disco magntico trabalha e com as dezenas de coisas que podem dar errado quando da realizao de uma leitura, muito provvel que muitos programas hoje em operao simplesmente no tivessem sido escritos ou no estivessem funcionando a contento. H muitos anos, ficou claro que dever-se-ia encontrar uma maneira de afastar o usurio da complexidade do hardware. A forma encontrada, que evoluiu gradativamente, foi a de colocar uma camada de software em cima do hardware, para gerenciar todos os componentes do sistema, apresentando-o ao usurio com uma interface muito simples de entender e de programar. Tal interface conhecida como mquina virtual. A camada de software construda sobre o hardware nada mais do que o sistema operacional. Esta situao mostrada na figura 1. Na parte de baixo est o hardware, o qual em muitos casos composto de duas ou mais camadas. A mais baixa delas contm os dispositivos fsicos, representados por chips de circuitos integrados, fios, fontes de alimentao, e assim por diante. A seguir, vem uma camada composta por um tipo de software bastante primitivo, que controla diretamente os dispositivos anteriormente citados, fornecendo uma interface bastante simples para a prxima camada. Tal software, denominado microcdigo, composto de microprogramas, usualmente est gravado numa memria do tipo read-only. Ele na verdade um interpretador, que busca as instrues de mquina na memria principal (add, move, jump, etc.), gerando o conjunto de sinais de controle necessrios execuo de tais instrues pelo hardware. Para executar uma instruo de ADD, por exemplo, o microprograma especfico precisa determinar onde esto
2 de 24

SISTEMAS OPERACIONAIS NOTAS DE AULA

armazenados os valores a serem adicionados, busc-los na memria, adicion-los e armazenar o resultado em um registrador ou na prpria memria. O conjunto de instrues que o microcdigo interpreta denominado linguagem de mquina do processador. A linguagem de mquina composta por um conjunto de 50 a 300 instrues, a maioria das quais movimenta dados dentro da mquina, realiza operaes aritmticas e compara valores. Nesta camada, os dispositivos de entrada/sada so controlados pela carga de valores em registradores especiais, denominados registradores de dispositivos. Por exemplo, podemos comandar um disco, carregando em seus registradores os valores do endereo inicial no disco e na memria principal e um bloco de informaes a ser movimentado entre estes meios de armazenamento, o valor de um contador de bytes a serem transferidos, e a direo da transferncia das informaes. A questo da temporizao das operaes de entrada/sada tambm muito importante na programao de tais dispositivos. A principal funo do sistema operacional a de esconder toda esta complexidade, oferecendo ao programador um conjunto de instrues mais convenientes para o desenvolvimento de seu trabalho. Por exemplo, READ BLOCK FROM FILE conceitualmente mais simples do que se preocupar com o movimento das cabeas do disco. Acima do sistema operacional, esto os demais softwares do sistema, usualmente conhecidos como interpretadores de comando (shell), compiladores, editores, etc. importante observar que tais programas no fazem parte do sistema operacional, apesar de serem normalmente fornecidos pelo fabricante do computador. Este ponto crucial em nossa anlise. O sistema operacional a poro de software que roda no modo kernel ou modo supervisor, com o objetivo de proteger o hardware da ao direta do usurio final da mquina, ao esta que pode vir a ser desastrosa. Os demais componentes do software do sistema, tal como os compiladores e editores, rodam no modo usurio. Caso um determinado usurio no simpatize com um compilador, ele pode escrever o seu prprio, no entanto, ele no pode escrever o programa de tratamento de interrupes de disco, que faz parte integrante do sistema operacional, geralmente protegido contra tentativas do usurio de modific-lo. Finalmente, acima dos programas do sistema, encontram-se os programas de aplicao. Tais programas so escritos pelos usurios para resolver problemas especficos, que envolvem o processamento de informaes, clculos cientficos, jogos, etc.

3 de 24

SISTEMAS OPERACIONAIS NOTAS DE AULA

Sistema bancrio Compiladores

Sistema de reserva de passagens areas Editores de texto Sistema operacional Linguagem de mquina Microcdigo Dispositivos fsicos

Jogos Interpretador de comandos

Figura 1: Nveis de mquina

2. O QUE UM SISTEMA OPERACIONAL


Na dcada de 1960 a definio de um sistema operacional como o software que controla o hardware estava de acordo com aquela realidade, contudo, desde ento, o panorama dos sistemas de computador evoluiu significativamente, exigindo uma descrio mais rica. Hoje, o hardware executa uma grande variedade de aplicaes de software. Para aumentar a utilizao do hardware, as aplicaes so projetadas para ser executadas concorrentemente. Se elas no forem cuidadosamente programadas podero interferir umas nas outras. Isso resultou na existncia de uma camada de software, denominada sistema operacional, que separa as aplicaes do hardware que elas acessam e fornece servios que permitem que cada aplicao seja executada com segurana e efetivamente. Sistema operacional um software que habilita as aplicaes a interagir com o hardware de um computador. O software que contm os componentes centrais do sistema operacional denominado ncleo. O sistema operacional realiza duas funes que no possuem nenhuma relao uma com a outra, e dependendo de quem est tentando passar a idia, poder dar um colorido maior a uma ou a outra funo. Vamos dar uma olhada em ambas as funes do sistema operacional. 2.1 O Sistema Operacional visto como uma Mquina Estendida A arquitetura (conjunto de instrues, organizao da memria, estrutura de entrada/sada e estrutura do barramento) da maioria dos computadores bastante primitiva e difcil de programar, em especial a entrada/sada. Para tornar este ponto mais claro, vamos examinar rapidamente como feita a entrada/sada em uma unidade de disco flexvel, usando o chip controlador NEC PD765, que utilizado no IBM PC. O PD765 tem 16 comandos, cada um deles especificado pela carga de entre um e nove bytes no registrador do dispositivo. Tais comandos so para leitura/escrita
4 de 24

SISTEMAS OPERACIONAIS NOTAS DE AULA

de dados, movimento da cabea, formatao de trilhas e inicializao, sensoreamento, reinicializao e calibrao do controlador e do driver do disquete. Os comandos mais bsicos so o READ e o WRITE, cada um dos quais requerendo 13 parmetros, acondicionados em 9 bytes. Tais parmetros especificam o endereo do bloco a ser lido do disco, o nmero de setores por trilha, o modo de gravao no meio fsico, o espaamento entre setores, entre outras coisas. Quando a operao se completa, o chip controlador retorna ao processador, 23 campos de estado, acondicionados em 7 bytes. Como se isto no bastasse, o programador da unidade de disco flexvel tem de se preocupar com o fato do motor do disco estar ligado ou desligado. Se o motor estiver desligado, ele precisa ser ligado antes que o dado possa ser lido ou gravado. O motor no pode permanecer ligado por muito tempo sob pena de danificar o disquete. Desta forma, o programador forado a optar entre desligar/ligar constantemente o motor, com um consumo excessivo de tempo, e a possibilidade de danificar o disquete, com a conseqente perda das informaes nele armazenadas. Fica claro que o programador no quer ou no pode envolver-se com detalhes da programao das unidades de disco flexvel. O programador deseja lidar com uma abstrao de alto nvel e bastante simples. No caso dos discos, uma abstrao tpica poderia fazer com que o disco fosse visto como uma coleo de arquivos identificados por nome. Cada arquivo deve ser aberto para leitura ou escrita, em seguida deve ser lido ou escrito e finalmente deve ser fechado. Detalhes a respeito do tipo de modulao a ser usado no processo de gravao ou a respeito do estado corrente do motor no devem aparecer na abstrao apresentada ao usurio. O programa que esconde o verdadeiro hardware do usurio e apresenta-lhes um esquema simples de arquivos identificados que podem ser lidos ou escritos o sistema operacional. Da mesma forma que o sistema operacional isola o usurio dos detalhes da operao do disco, ele tambm trata de uma srie de outras questes tais como interrupes, os temporizadores, a gerncia da memria e outras. Em cada caso, a abstrao apresentada ao usurio do sistema operacional mais simples e mais fcil de utilizar que o prprio hardware. Neste aspecto, a funo do sistema operacional a de apresentar ao usurio uma mquina estendida ou mquina virtual equivalente ao hardware, porm muito mais simples de programar. 2.2 O Sistema Operacional visto como um Gerente de Recursos O conceito do sistema operacional como fornecedor de uma interface conveniente a seus usurios uma viso top-down. Uma viso alternativa, bottom-up, mostra o sistema operacional como um gerente de recursos de hardware disponveis na mquina. Os computadores modernos so compostos de processadores, memrias,
5 de 24

SISTEMAS OPERACIONAIS NOTAS DE AULA

temporizadores, discos, terminais, dispositivos de fita magntica, interfaces de rede, impressoras e outros dispositivos. Nesta viso, a funo do sistema operacional a de fornecer um esquema de alocao dos processadores, das memrias e dos dispositivos de entrada/sada entre os vrios processos que competem pela utilizao de tais recursos. Imagine o que poderia acontecer se trs processos, rodando em um dado computador, resolvessem imprimir suas sadas simultaneamente na mesma impressora. As trs primeiras linhas da listagem poderiam ser do processo 1, as seguintes do processo 2 e assim por diante, at que os trs terminassem a impresso. Fica claro que tal situao no admissvel em nenhum sistema que se preze. O sistema operacional tem por funo colocar ordem neste caos potencial, armazenando em disco todas as sadas destinadas impressora, durante a execuo dos processos. No caso do computador possuir mltiplos usurios, a necessidade de gerncia e proteo da memria, dos dispositivos de entrada/sada e dos demais recursos do sistema fica ainda mais aparente. Pelo exposto acima, esta outra viso da funo de um sistema operacional mostra que sua tarefa principal a de gerenciar os usurios de cada um dos recursos da mquina, contabilizando o tempo de uso de cada um e garantindo o acesso ordenado de usurios a recursos atravs da mediao dos conflitos entre as requisies dos diversos processos usurios do sistema.

3. HISTRICO DOS SISTEMAS OPERACIONAIS


3.1 A Primeira Gerao (1945-1955): Vlvulas e Painis Aps infrutferos esforos desenvolvidos por Babbage, quase no houve progresso nessa rea at o incio da Segunda Guerra Mundial. Em torno de 1940, Howard Aiken em Harvard, John Von Neumann no Instituto de Estudos Avanados de Princeton, J. Presper Eckert e William Mauchley na Universidade da Pennsylvania e Konrad Zuse na Alemanha, tiveram sucesso na construo de computadores primitivos, baseados em vlvulas. Tais mquinas eram enormes, ocupavam salas imensas e empregavam dezenas de milhares de vlvulas em sua construo. Nesta poca, um nico grupo de pessoas era responsvel pelo projeto, construo, programao, operao e manuteno de cada mquina. Toda a programao era feita em cdigo absoluto, muitas vezes atravs da fiao de painis para controlar as funes bsicas da mquina. O conceito de linguagem de programao ainda no existia e os sistemas operacionais tambm no. O acesso ao computador por parte do
6 de 24

SISTEMAS OPERACIONAIS NOTAS DE AULA

usurio era feito atravs da reserva antecipada de tempo de mquina. Ao chegar sua vez de usar o computador, o usurio fazia sua prpria programao nos painis da mquina e passava a torcer para que nenhuma das 20.000 vlvulas do computador viesse a queimar enquanto ele estivesse trabalhando. Nessa poca, os programas processados pelos computadores eram constitudos essencialmente por clculos numricos repetitivos. No incio dos anos 50, houve uma sensvel melhora no uso de tais mquinas com o advento do carto perfurado que tornou possvel a codificao de programas em cartes e sua leitura pela mquina, dispensando a programao atravs de painis. Os demais procedimentos no tiveram qualquer modificao. 3.2 A Segunda Gerao (1955-1965): Transistores e Sistemas Batch O desenvolvimento do transistor em meados de 1950 veio a alterar substancialmente o quadro acima. Com o emprego desta nova tecnologia, os computadores tornaram-se confiveis a ponto de serem comercializados. Nesta poca, passou a haver uma distino entre as pessoas envolvidas no projeto, na construo, na operao e na manuteno dos computadores. Eles eram instalados em salas isoladas e operados por pessoal especializado. Somente as grandes empresas e rgos governamentais ou universidades podiam pagar os muitos milhes de dlares necessrios aquisio destas mquinas. Para executar um job, o programador primeiro escrevia seu programa em uma folha de papel (em FORTRAN ou em linguagem de montagem), para depois perfur-los em carto. Depois disso, ele entregava a massa de cartes a um dos operadores da mquina para que a mesma fosse processada. Ao final do processamento do programa corrente, um dos operadores ia at a impressora e retirava o relatrio emitido. Ento o operador escolhia uma outra massa de cartes e providenciava os recursos necessrios ao processamento do novo job. Grande parte do tempo da mquina era gasto pelos operadores providenciando recursos necessrios ao processamento de determinada tarefa. Em vista do alto custo de tais equipamentos, encontrou-se uma soluo para reduzir o tempo de mquina desperdiado. A soluo encontrada, denominada de sistema batch (lote), consistia em coletar um conjunto de jobs e fazer a leitura dos mesmos para uma fita magntica empregando um computador pequeno e relativamente barato, tal como o IBM 1401, que era muito bom na leitura de cartes, na cpia destes cartes em fita e na impresso de resultados. Outras mquinas mais sofisticadas e mais caras, tal como o IBM 7094, eram empregadas no processamento. Aps cerca de uma hora de coleta de jobs, a fita gravada era rebobinada e levada a sala do computador, onde era montada em sua unidade de fita. O operador ento
7 de 24

SISTEMAS OPERACIONAIS NOTAS DE AULA

carregava um programa especial que lia e processava o primeiro job da fita. A sada era gravada numa segunda fita, em vez de ser diretamente impressa. Aps o trmino de cada um dos jobs, o sistema operacional lia e processava automaticamente o prximo. Quando todo o lote tivesse sido processado, o operador removia as fitas de entrada e de sada, levando a fita de sada para ser impressa off line, com auxlio do 1401. Os computadores da segunda gerao eram utilizados na realizao de clculos cientficos e de engenharia. Eles eram normalmente programados em linguagem FORTRAN. Os sistemas operacionais tpicos da poca eram o FMS (Fortran Monitor System) e o IBSYS, ambos desenvolvidos pela IBM para rodar no 7094.

Figura 2: Sistemas batch 3.3 A Terceira Gerao (1965-1980): CIs e Multiprogramao No incio dos anos 60, a maioria dos fabricantes de computador tinha duas linhas de produtos distintas e totalmente incompatveis. De um lado estavam as imensas e poderosas mquinas orientadas a palavra, adequadas ao processamento cientfico pesado, como o IBM 7094. Do outro lado, estavam as mquinas comerciais, orientadas a caractere, como o IBM 1401, utilizado pelos bancos e companhias seguradoras para pesquisar arquivos em fita e para impresso de extensos relatrios. O desenvolvimento e a manuteno de duas linhas de produtos completamente independentes representava uma carga bastante pesada para os fabricantes. Alm do mais, muitos de seus clientes precisavam inicialmente de uma mquina pequena, mas
8 de 24

SISTEMAS OPERACIONAIS NOTAS DE AULA

com o passar do tempo vinham a necessitar de uma mquina maior, capaz de armazenar uma quantidade maior de informaes e de processar com mais rapidez. A IBM conseguiu solucionar ambos os problemas com a introduo do Sistema 360. Tal sistema era composto de uma srie de mquinas, todas elas compatveis em nvel de software, abrangendo a faixa que comeava no 1401 e chegava at a do 7094. Estes computadores s diferiam no preo e na performance. Uma vez que todas estas mquinas tinham a mesma arquitetura e o mesmo conjunto de instrues bsicas, os programas escritos para qualquer uma delas rodavam em qualquer outra. Alm do mais, a srie 360 foi projetada com caractersticas para suportar tanto o processamento cientfico quanto o comercial. A srie 360 foi a primeira famlia de mquinas a usar circuitos integrados em sua fabricao, conseguindo uma relao preo/performance muito melhor do que as mquinas da segunda gerao. A idia de famlia de mquinas compatveis foi logo adotada por outros fabricantes. Esta idia criou um srio problema. A inteno era de que qualquer software, incluindo o sistema operacional, rodasse em todos os membros da famlia. Ele deveria ser adequado tanto para sistemas com poucos perifricos quanto para sistemas com um grande nmero de perifricos. Deveria funcionar tanto em ambientes para processamento comercial quanto para processamento cientfico. Alm disso, o sistema operacional deveria ser eficiente em todas as aplicaes onde fosse utilizado. O resultado da tentativa foi um sistema operacional enorme e extremamente complexo, duas a trs vezes maior que o FMS. Este sistema era composto de milhes de linhas de cdigo em linguagem de montagem, programado por milhares de pessoas e continha um sem-nmero de bugs que originaram uma srie incontvel de novos releases na tentativa de corrigi-los. Este sistema operacional foi chamado de OS360. Apesar do seu tamanho e dos problemas que surgiram em seu desenvolvimento, o OS360 e os sistemas operacionais similares de terceira gerao produzidos por outros fabricantes atenderam relativamente bem grande maioria de seus usurios. Tais sistemas vieram a popularizar vrias tcnicas, dentre elas a multiprogramao. Nas operaes comerciais, o tempo de espera por entrada/sada pode chegar a 80 ou 90 por cento do tempo total de processamento, de maneira que algo precisava ser feito para evitar desperdcio do tempo do processador. A soluo inicial foi dividir a memria em diversas partes, com um job alocado a cada uma delas. Enquanto um job esperava a concluso de sua operao de entrada/sada, um outro job poderia estar utilizando o processador. O fato de se manter na memria vrios jobs ao mesmo tempo tornou necessria a utilizao de um hardware especial para proteger cada job contra acessos indevidos. O 360 e os demais sistemas de terceira gerao estavam

9 de 24

SISTEMAS OPERACIONAIS NOTAS DE AULA

equipados com este hardware. Com o passar dos anos, a IBM desenvolve sua arquitetura 360 passando para a srie 370 e para a 390. Outra caracterstica importante dos sistemas operacionais de terceira gerao era sua capacidade de ler jobs de carto direto para o disco. Desta forma, assim que um job ativo terminasse, o sistema operacional carregava um novo job na partio livre da memria, proveniente do disco. Esta tcnica foi denominada de SPOOL (Simultaneous Peripheral Operation On Line) e era tambm empregada para as operaes de sada. Com o SPOOL, o 1401 deixou de ser necessrio. Apesar dos sistemas operacionais de terceira gerao serem adequados para processamento cientfico e comercial, eles ainda eram sistemas batch. Com estes sistemas, o tempo entre a submisso do job e a disponibilizao de sua sada passou a ser medido em horas, de maneira que o simples esquecimento de uma vrgula poderia fazer com que o programador viesse a perder a metade do dia. A necessidade de obter bons tempos de resposta levou ao desenvolvimento dos sistemas com compartilhamento de tempo (timesharing), uma variao dos sistemas multiprogramados, onde cada usurio tinha um terminal on-line sua disposio. Em tais sistemas, se existissem 20 usurios ativos, com 17 deles parados, o processador seria alocado ciclicamente a cada um dos trs jobs que lhe esto requisitando servio. O primeiro sistema de compartilhamento de tempo, o CTSS (Compatible Time-Sharing System), foi desenvolvido no MIT para um 7094 especialmente modificado. Aps o desenvolvimento do CTSS, o MIT, o Bell Labs e a GE decidiram desenvolver um projeto de um computador que suportasse centenas de usurios simultaneamente, em regime de compartilhamento de tempo. Este projeto foi denominado de MULTICS (Multiplexed Information and Computing Service). Devido rpida evoluo tecnolgica dos parmetros que foram tomados como base no projeto e com o desenvolvimento de tcnicas de integrao de circuitos, o projeto fracassou. Apesar disso, o MULTICS teve uma grande influncia nos sistemas operacionais construdos depois dele. Outros sistemas operacionais de tempo compartilhado desenvolvidos foram os TSS (Time Sharing System) e o CP/CMS (Control Program/Conversational Monitor System), ambos da IBM. Um outro fato ocorrido durante a terceira gerao de sistemas foi o fenomenal crescimento dos minicomputadores, iniciado com o EC PDP-1, lanado em 1961. O PDP tinha somente 4K palavras de 18 bits, mas custava 5% do valor do 7094. Para algumas aplicaes no numricas, sua performance era muitas vezes to boa quanto a do 7094. Um dos cientistas da Bell Labs que trabalhou no projeto MULTICS, Ken Thompson, encontrou um pequeno PDP-7 e escreveu para ele uma verso monousurio do MULTICS. Este trabalho foi o incio do projeto que resultou no desenvolvimento do
10 de 24

SISTEMAS OPERACIONAIS NOTAS DE AULA

sistema operacional UNIX que hoje domina o mercado para minicomputadores e estaes de trabalho. 3.4 A Quarta Gerao: Computadores Pessoais Com o desenvolvimento da integrao de circuitos em grande escala (LSI), apareceram chips com milhares de transistores encapsulados em um centmetro quadrado de silcio, nascendo da a idia de computador pessoal. Em termos de arquitetura, os computadores pessoais no eram diferentes dos minicomputadores. A grande diferena estava no preo. Da mesma forma que os minicomputadores tornaram possvel que um departamento de uma empresa ou de uma universidade adquirisse seu prprio computador, o chip microprocessador tornou isto possvel para pessoas fsicas. A grande disponibilidade de poder computacional levou ao crescimento de uma indstria voltada para a produo de software para estas mquinas. A maioria desses softwares user-friendly, significando que eles so voltados para pessoas que no tm nenhum conhecimento de computadores. Foi uma grande mudana no desenvolvimento dos sistemas operacionais. Atualmente dois sistemas operacionais vm dominando o mercado de computadores pessoais e de estaes de trabalho: o Windows da Microsoft e o Unix. O Windows foi derivado do MS-DOS que dominou as mquinas baseadas nos processadores da Intel, mais precisamente o 8088 e seus sucessores, 80286, 80386 e 80486. Apesar da primeira verso do MS-DOS ter sido um tanto primitiva, as verses que se seguiram incorporaram uma srie de caractersticas avanadas, inclusive algumas disponveis no Unix. O Unix o lder no mercado de sistemas para mquinas que no foram desenvolvidas com processadores Intel, especialmente aquelas projetadas com os poderosos processadores RISC. Tais mquinas tm hoje o poder computacional de um minicomputador, apesar de serem mquinas dedicadas a um nico usurio, sendo lgico que elas estejam equipadas com um sistema operacional desenvolvido inicialmente para rodar em minicomputadores. Um desenvolvimento interessante que comeou a tomar corpo em meados dos anos 80 foi o dos sistemas operacionais para redes e dos sistemas operacionais distribudos. Em uma rede de computadores, os usurios esto conscientes da existncia de um conjunto de mquinas conectadas rede, podendo, portanto ligar-se a mquinas remotas e solicitar servios das mesmas. Cada uma destas mquinas roda seu prprio sistema operacional e tem seu prprio usurio.

11 de 24

SISTEMAS OPERACIONAIS NOTAS DE AULA

Em contraste, um sistema distribudo faz com que um conjunto de mquinas interligadas aparea para seus usurios como se fosse uma nica mquina com um s processador. Em tais sistemas, os usurios no tomam conhecimento de onde seus programas esto sendo processados ou mesmo onde seus arquivos esto armazenados, pois tudo manipulado automaticamente e eficientemente pelo sistema operacional. Os sistemas operacionais de rede no diferem fundamentalmente daqueles usados em mquinas monoprocessadoras. Obviamente, eles precisam de uma interface controladora de rede e de um software especfico para gerenciar tal interface, alm de programas que permitam a ligao de usurios a mquinas remotas e seu acesso a arquivos remotos. Tais caractersticas no chegam a alterar a estrutura do sistema operacional usado para mquinas com um nico processador. J os sistemas operacionais distribudos precisam de mais do que a simples adio de poucas linhas de cdigo a um sistema usado em mquinas monoprocessadoras, pois os sistemas distribudos diferem dos centralizados em pontos bastante crticos. Por exemplo, os sistemas distribudos permitem que programas rodem em vrios processadores ao mesmo tempo, necessitando, portanto de algoritmos de escalonamento de processador bem mais elaborados, de forma a otimizar o grau de paralelismo disponvel no sistema. Ainda no caso dos sistemas distribudos, os retardos de comunicao na rede podem vir a fazer com que algoritmos do sistema operacional venham a rodar com informaes incompletas, desatualizadas ou at incorretas. Tal situao difere substancialmente dos sistemas com um nico processador nos quais o sistema operacional tem o domnio completo e total do estado de todos os componentes do sistema. 3.5 A Dcada de 1990 No decorrer da dcada de 90, a demanda avassaladora por recursos de Internet resultou na proliferao das configuraes em rede. Hoje, acesso a web e correio eletrnico so recursos comuns a quase todos os sistemas operacionais. A Microsoft Corporation tornou-se dominante na dcada de 90. O sistema operacional Windows tornou-se popular aps o lanamento em 1993 o Windows 3.1, cujos sucessores Windows 95 e Windows 98 praticamente dominaram o mercado de sistemas operacionais para computadores de mesa no final da dcada de 90. Esses sistemas operacionais, que tomavam emprestado muitos conceitos popularizados pelos primeiros sistemas operacionais Macintosh, habilitavam os usurios a executar mltiplas aplicaes concorrentes com facilidade. A Microsoft tambm entrou no mercado de sistemas operacionais corporativos com o lanamento do Windows NT em
12 de 24

SISTEMAS OPERACIONAIS NOTAS DE AULA

1993, que rapidamente tornou-se o sistema operacional preferido para estaes de trabalho corporativas.

4. TIPOS DE SISTEMAS OPERACIONAIS


Os tipos de sistemas operacionais e sua evoluo esto relacionados diretamente com a evoluo do hardware e das aplicaes por ele suportadas. Os sistemas operacionais podem ser classificados conforme a figura abaixo:
Tipos de Sistemas Operacionais

Sistemas Monoprogramveis/ Monotarefa

Sistemas Multiprogramveis/ Multitarefa

Sistemas com Mltiplos Processadores

Figura 3: Tipos de Sistemas Operacionais 4.1 Sistemas Monoprogramveis / Monotarefa Os primeiros sistemas operacionais eram tipicamente voltados para a execuo de um nico programa. Qualquer outra aplicao, para ser executada, deveria aguardar o trmino do programa corrente. Os sistemas monoprogramveis se caracterizam por permitir que o processador, a memria e os perifricos permaneam exclusivamente dedicados execuo de um nico programa. Os sistemas monoprogramveis esto tipicamente relacionados ao surgimento dos primeiros computadores na dcada de 1960. Neste tipo de sistema, enquanto um programa aguarda por um evento, como a digitao de um dado, o processador permanece ocioso, sem realizar qualquer tipo de processamento. A memria subutilizada caso o programa no a preencha totalmente e os perifricos esto dedicados a um nico usurio, nem sempre utilizados de forma integral.

13 de 24

SISTEMAS OPERACIONAIS NOTAS DE AULA

Figura 4: Sistemas Monoprogramveis Comparados a outros sistemas, os sistemas monoprogramveis so de simples implementao, no existindo muita preocupao com problemas decorrentes do compartilhamento de recursos. 4.2 Sistemas Multiprogramveis / Multitarefa Os sistemas multiprogramveis so uma evoluo dos sistemas monoprogramveis. Neste tipo de sistema, os recursos computacionais so compartilhados entre os diversos usurios e aplicaes. Neste tipo de sistema, enquanto um programa espera por uma operao de leitura ou gravao em disco, outros programas podem estar sendo processados neste mesmo intervalo de tempo. Neste caso, podemos observar o compartilhamento de processador e de memria. O sistema operacional se preocupa em gerenciar o acesso concorrente aos seus diversos recursos, como memria, processador e perifricos, de forma ordenada e protegida, entre os diversos programas.

14 de 24

SISTEMAS OPERACIONAIS NOTAS DE AULA

Figura 5: Sistemas Multiprogramveis As vantagens do uso de sistemas multiprogramveis so a reduo do tempo de resposta das aplicaes processadas no ambiente e de custos, a partir do compartilhamento dos diversos recursos do sistema entre as diferentes aplicaes. Os sistemas multiprogramveis, apesar de mais eficientes que os monoprogramveis, so de implementao muito mais complexa. A partir do nmero de usurios que interagem com o sistema, podemos classificar os sistemas multiprogramveis como monousurio ou multiusurio. Sistemas monousurio so encontrados em computadores pessoais e estaes de trabalho, onde h apenas um nico usurio interagindo com o sistema. Neste caso existe a possibilidade da execuo de diversas tarefas ao mesmo tempo como a edio de um texto, uma impresso e o acesso Internet. Sistemas multiusurio so ambientes interativos que possibilitam diversos usurios conectarem-se ao sistema simultaneamente. Os sistemas multiprogramveis podem ser classificados pela forma com que suas aplicaes so gerenciadas, podendo ser divididos em sistemas batch, de tempo compartilhado ou de tempo real.

15 de 24

SISTEMAS OPERACIONAIS NOTAS DE AULA

Sistemas Multiprogramveis/ Multitarefa

Sistemas Batch

Sistemas de tempo compartilhado

Sistemas de tempo real

Figura 6: Tipos de Sistemas Multiprogramveis A. Sistemas Batch Os sistemas batch foram os primeiros tipos de sistemas operacionais multiprogramveis a serem implementados na dcada de 1960. Os programas, tambm chamados de jobs, eram submetidos para execuo atravs de cartes perfurados e armazenados em disco ou fita, onde aguardavam para serem processados. Posteriormente, em funo da disponibilidade de espao na memria principal, os jobs eram executados, produzindo uma sada em disco ou fita. O processamento batch tem a caracterstica de no exigir a interao do usurio com a aplicao. Todas as entradas e sadas de dados so implementadas por algum tipo de memria secundria, geralmente arquivos em disco. Esses sistemas, quando bem projetados, podem ser bastante eficientes, devido melhor utilizao do processador. B. Sistemas de Tempo Compartilhado Os sistemas de tempo compartilhado (time-sharing), permitem que diversos programas sejam executados a partir da diviso do tempo do processador em pequenos intervalos, denominados fatia de tempo (time-slice). Caso a fatia de tempo no seja suficiente para a concluso do programa, esse interrompido pelo sistema operacional e substitudo por um outro, enquanto fica aguardando por uma nova fatia de tempo. O sistema cria um ambiente de trabalho prprio, dando a impresso de que todo o sistema est dedicado, exclusivamente, para cada usurio. Geralmente, sistemas de tempo compartilhado permitem a interao dos usurios com o sistema atravs de terminais que incluem vdeo, teclado e mouse. Devido a esse tipo de interao, os sistemas de tempo compartilhado tambm ficaram conhecidos como sistemas on-line.

16 de 24

SISTEMAS OPERACIONAIS NOTAS DE AULA

C. Sistemas de Tempo Real Os sistemas de tempo real (real-time) so implementados de forma semelhante dos sistemas de tempo compartilhado. O que caracteriza a diferena entre os dois tipos de sistemas o tempo de resposta exigido no processamento das aplicaes. Enquanto nos sistemas de tempo compartilhado o tempo de resposta pode variar sem comprometer as aplicaes em execuo, nos sistemas de tempo real os tempos de resposta devem estar dentro de limites rgidos, que devem ser obedecidos, quando bem projetados, podem ser bastante eficientes, devido melhor caso contrrio podero ocorrer problemas irreparveis. Nestes sistemas no existe a idia de fatia de tempo. Um programa utiliza o processador o tempo que for necessrio ou at que aparea outro mais prioritrio. Esses sistemas normalmente esto presentes em aplicaes de controle de processos, como no monitoramento de refinarias de petrleo ou controle de trfego areo. 4.3 Sistemas com Mltiplos Processadores Os sistemas com mltiplos processadores caracterizam-se por possuir duas ou mais CPUs interligadas e trabalhando em conjunto. A vantagem desse tipo de sistema permitir que vrios programas sejam executados ao mesmo tempo ou que um mesmo programa seja subdividido em partes para serem executadas simultaneamente em mais de um processador. Com mltiplos processadores foi possvel a criao de sistemas computacionais voltados principalmente para o processamento cientfico aplicado, por exemplo, no desenvolvimento aeroespacial, metereologia, simulaes, etc. Os conceitos aplicados ao projeto de sistemas com mltiplos processadores incorporam os mesmos princpios bsicos e benefcios apresentados na multiprogramao, alm de outras caractersticas e vantagens especficas como escalabilidade, disponibilidade e balanceamento de carga. Um fator chave no desenvolvimento de sistemas operacionais com mltiplos processadores a forma de comunicao entre as CPUs e o grau de compartilhamento da memria e dos dispositivos de E/S. Em funo desses fatores, podemos classificar os sistemas com mltiplos processadores em fortemente acoplados e fracamente acoplados.

17 de 24

SISTEMAS OPERACIONAIS NOTAS DE AULA

Sistemas com Mltiplos Processadores

Sistemas Fortemente Acoplados

Sistemas Fracamente Acoplados

Figura 7: Tipos de Sistemas com Mltiplos Processadores A grande diferena entre os dois tipos de sistemas que em sistemas fortemente acoplados existe apenas uma memria principal sendo compartilhada por todos os processadores, enquanto nos fracamente acoplados cada sistema tem sua prpria memria individual. Alm disso, a taxa de transferncia entre processadores e memria em sistemas fortemente acoplados muito maior que nos fracamente acoplados. A. Sistemas Fortemente Acoplados Nos sistemas fortemente acoplados (tightly coupled) existem vrios processadores compartilhando uma nica memria fsica (shared memory) e dispositivos de entrada/sada, sendo gerenciados por apenas um sistema operacional. Em funo destas caractersticas, os sistemas fortemente acoplados tambm so conhecidos como multiprocessadores.

Memria CPU Principal CPU

Dispositivos de E/S

Dispositivos de E/S

Figura 8: Sistemas Fortemente Acoplados

18 de 24

SISTEMAS OPERACIONAIS NOTAS DE AULA

Os sistemas fortemente acoplados podem ser divididos em SMP (Symetric Multiprocessors) e NUMA (Non-Uniform Memory Access). Os sistemas SMP caracterizam-se pelo tempo uniforme de acesso memria principal pelos diversos processadores. Os sistemas NUMA apresentam diversos conjuntos reunindo processadores e memria principal, sendo que cada conjunto conectado aos outros atravs de uma rede de interconexo. O tempo de acesso memria pelos processadores varia em funo da sua localizao fsica. B. Sistemas Fracamente Acoplados Os sistemas fracamente acoplados (loosely-coupled) caracterizam-se por possuir dois ou mais sistemas computacionais conectados atravs de linhas de comunicao. Cada sistema funciona de forma independente, possuindo seu prprio sistema operacional e gerenciando seus prprios recursos. Em funo destas caractersticas, os sistemas fracamente acoplados tambm so conhecidos como multicomputadores.
link de comunicao CPU CPU

Memria Principal

Dispositivos de E/S

Memria Principal

Dispositivos de E/S

Figura 9: Sistemas Fortemente Acoplados Com base no grau de integrao dos hosts da rede, podemos dividir os sistemas fracamente acoplados em sistemas operacionais de rede e sistemas distribudos. A grande diferena entre os dois a capacidade do sistema operacional em criar uma imagem nica dos servios disponibilizados pela rede. Os sistemas operacionais de rede (SORs) permitem que um host compartilhe seus recursos com os demais hosts da rede. Alm disso, os usurios tm o conhecimento dos hosts e seus servios. J, nos sistemas distribudos, o sistema operacional esconde os detalhes dos hosts individuais e passa a trat-los como um conjunto nico, como se fosse um sistema fortemente acoplado. Os sistemas distribudos permitem que uma aplicao seja
19 de 24

SISTEMAS OPERACIONAIS NOTAS DE AULA

dividida em partes e que cada parte seja executada por hosts diferentes da rede de computadores. Para o usurio e suas aplicaes como se no existisse a rede de computadores, mas sim um nico sistema centralizado. Outro exemplo de sistemas distribudos so os clusters. Em um cluster existem dois ou mais servidores ligados por algum tipo de conexo de alto desempenho. O usurio no conhece os nomes dos membros do cluster e no sabe quantos so. Quando ele precisa de algum servio, basta solicitar ao cluster para obt-lo. Atualmente sistemas em cluster so utilizados para servios de banco de dados e Web, garantindo alta disponibilidade, escalabilidade e balanceamento de carga soluo.

20 de 24

SISTEMAS OPERACIONAIS NOTAS DE AULA

9. BIBLIOGRAFIA
TANENBAUM, Andrew S., Sistemas Operacionais Modernos, 6 edio, Rio de Janeiro: Prentice Hall, 2003 MACHADO, F. B., MAIA, L. P., Arquitetura de Sistemas Operacionais, 3 a edio, Rio de Janeiro: Ed. LTC, 2002 FLYNN, Ida M., McHOES, Ann M., Introduo aos Sistemas Operacionais, So Paulo: Pioneira Thomson Learning, 2002

21 de 24

SISTEMAS OPERACIONAIS NOTAS DE AULA

1. LISTA DE EXERCCIOS 1.
Como seria utilizar um computador sem um sistema operacional? Quais so suas duas principais funes?

2.

Explique o conceito de mquina virtual. Qual a grande vantagem em utilizar este conceito?

3. 4. 5.

Defina o conceito de uma mquina de nveis ou camadas. Quais os tipos de sistemas operacionais existentes? Por que dizemos que existe uma subutilizao de recursos em sistemas monoprogramveis?

6.

Qual

grande

diferena

entre

sistemas

monoprogramveis

sistemas

multiprogramveis?

7. 8. 9.

Quais as vantagens dos sistemas multiprogramveis? Um sistema monousurio pode ser um sistema multiprogramvel? D um exemplo. Quais os tipos de sistemas multiprogramveis?

10. O que caracteriza o processamento batch? Quais aplicaes podem ser processadas
neste tipo de ambiente?

11. Como funcionam os sistemas de tempo compartilhado? Quais as vantagens em


utiliz-los?

12. Qual a diferena entre sistemas de tempo compartilhado e de tempo real? Quais
aplicaes so indicadas para sistemas de tempo real?

13. O que so sistemas com mltiplos processadores e quais as vantagens em utilizlos?

14. Qual a grande diferena entre sistemas fortemente acoplados e fracamente


acoplados?

15. O que um sistema SMP? Qual a diferena para um sistema NUMA?


22 de 24

SISTEMAS OPERACIONAIS NOTAS DE AULA

16. O que um sistema fracamente acoplado? Qual a diferena entre sistemas


operacionais de rede e sistemas operacionais distribudos?

17. Por que o cdigo-objeto gerado pelo tradutor ainda no pode ser executado? 18. Por que a execuo de programas interpretados mais lenta que a de programas
compilados?

19. Quais as funes do linker? 20. Qual a principal funo do loader? 21. Quais as facilidades oferecidas pelo depurador? 22. Pesquise comandos disponveis em linguagens de controle de sistemas
operacionais.

23. Explique o processo de ativao (boot) do sistema operacional. 24. O que ncleo do sistema e quais so suas principais funes? 25. O que um system call e qual sua importncia para a segurana do sistema? Como
as system calls so utilizadas por um programa?

26. O que so instrues privilegiadas e no-privilegiadas? Qual a relao dessas


instrues com os modos de acesso?

27. Quais das instrues a seguir devem ser executadas apenas no modo kernel?
Desabilitar todas as interrupes; Consultar a data e hora do sistema; Alterar a data e hora do sistema; Alterar informaes residentes no ncleo do sistema; Somar duas variveis declaradas dentro do sistema; Realizar um desvio para uma instruo dentro do prprio programa; Acessar diretamente posies no disco.

28. Explique como funciona a mudana de modos de acesso e d um exemplo de como


um programa faz uso desse mecanismo.

29. Como o kernel do sistema operacional pode ser protegido pelo mecanismo de
acesso?
23 de 24

SISTEMAS OPERACIONAIS NOTAS DE AULA

30. Compare as arquiteturas monoltica e de camadas. Quais as vantagens e


desvantagens de cada arquitetura?

31. Quais as vantagens do modelo de mquina virtual? 32. Como funciona o modelo cliente-servidor na arquitetura microkernel? Quais so as
vantagens e desvantagens dessa arquitetura? 33. Por que a utilizao da programao orientada a objetos um caminho natural para o projeto de sistemas operacionais?

24 de 24