APOSTILA DE SISTEMAS OPERACIONAISozkr.orgfree.com/apost-sist.pdf · apostila de sistemas operacionais prof. oscar santana curso tÉcnico em informÁtica advice

Embed Size (px)

Citation preview

  • APOSTILA DE SISTEMAS OPERACIONAIS PROF. OSCAR SANTANA

    CURSO TCNICO EM INFORMTICA

    ADVICE

  • 2

    1- Introduo a sistemas operacionais 1.1 O Que Um Sistema Operacional

    Para que o hardware ou parte fsica de um computador possa funcionar, faz-se necessrio um conjunto de regras e ordens que coordenem todos os processos realizados. Tal conjunto denominado software ou parte no material do sistema. Graas ao software (integrado por uma enorme quantidade de programas que interagem entre si) todos os recursos podem ser utilizados em qualquer sistema informatizado.

    Todo o conjunto de programas que compem o software pode ser dividido em dois grupos bem diferenciados: 1. Software bsico: conjunto de programas imprescindveis para o funcionamento do sistema. (Drivers controladores de hardware) 2. Software aplicativo. Conjunto de programas a serem utilizados pelo usurio(Word, Internet Explorer, Pacincia). esse software, d-se o nome de Sistema Operacional. O Sistema Operacional

    O sistema operacional tem duas funes distintas: estender a mquina e gerenciar recursos.

    Como mquina estendida, o sistema operacional oculta a verdade do usurio sobre o hardware e apresenta uma viso simples e agradvel. Ele evita, por exemplo, que o usurio tenha que gerenciar o HD para gravar dados, e apresenta uma interface orientada a arquivos simples, geralmente em estrutura de pastas e diretrios. O sistema operacional tambm responsvel por fornecer uma variedade de servios que os programas podem obter usando instrues especiais conhecidas como chamadas ao sistema, isso sem que o usurio tenha que interagir diretamente com a mquina.

    Como gerenciador de recursos, o sistema operacional controla de forma ordenada o uso dos dispositivos fsicos entre os vrios programas que competem por eles. Esse gerenciamento feito atravs de compartilhamento no tempo e no espao. Quando um dispositivo compartilhado no tempo, cada programa ou usurio aguarda a sua vez de usar o recurso(Processador). Quando um dispositivo compartilhado no espao, cada programa ou usurio ocupa uma parte do recurso (Memria RAM).

  • 3

    A diversidade de sistemas operacionais

    No topo da lista esto os sistemas operacionais para computadores de grande porte. Esses computadores exigem grande capacidade de recursos de entrada/sada de dados. Seus sistemas operacionais so orientados para o processamento simultneo de muitos trabalhos (jobs). Eles oferecem normalmente trs tipos de servios: em lote, processamento de transaes e tempo compartilhado. Um exemplo o OS/360.

    Um nvel abaixo esto os sistemas operacionais de servidores. Eles so executados em servidores, em estaes de trabalho ou em computadores de grande porte. Eles servem mltiplos usurios de uma vez em uma rede e permitem-lhes compartilhar recursos de hardware e software. Exemplos incluem Linux e Windows 2003 Sever.

    H tambm os sistemas operacionais de multiprocessadores. Esse sistema consiste em conectar vrias CPUs em um nico sistema para ganhar potncia computacional. Eles usam variaes dos sistemas operacionais de servidores com aspectos especiais de comunicao e conectividade.

    O nvel seguinte o sistema de computadores pessoais. Sua funo oferecer uma boa interface para um nico usurio. Exemplos comuns so o Windows Vista e XP, o MacOS e o Linux.

    O prximo nvel o de sistemas de tempo real. O tempo um parmetro fundamental. Eles so divididos em sistemas de tempo real crtico e de tempo real no crtico. Os sistemas de tempo real crtico possuem determinados instantes em que as aes devem ocorrer. Os sistemas de tempo real no crtico aceita um descumprimento ocasional de um prazo. VxWorks e QNX so exemplos bem conhecidos.

    Descendo na escala, vemos os sistemas operacionais mveis e embarcados. Os sistemas mveis esto presentes em computadores de mo que so computadores muito pequenos que realizam funes de agenda e livro de endereos. Os sistemas embarcados so computadores que controlam eletrodomsticos ou sistemas de comunicao e de orientao por gps em veculos. Exemplos de sistemas operacionais mveis so o PalmOS e o Windows Mobile. De sistema operacional embarcado pode-se citar o Microsoft SYNC e o sistema de GPS do Fiat Linea.

    Os menores sistemas operacionais so executados em cartes inteligentes. So dispositivos do tamanho de cartes de crdito que contm uma CPU. Possuem restries severas de consumo de energia e memria. Alguns so orientados a Java. Um exemplo o SmartCard da Athos Sistemas do Brasil, utilizado em sistemas de controle de acesso e gerenciamento de estoques.

    Exemplos de sistemas operacionais comuns.

  • 4

    Microsoft Windows Vista e XP Sistema operacional para estaes de trabalho, sejam elas domsticas ou em ambiente corporativo. Microsoft Windows Server 2003 Sistema operacional para servidores, com recursos para gerenciamento de usurios e estaes de trabalho. Linux (CentOS, Fedora, Debian, Suse, Slackware, Kurumin) Sistema operacional utilizado tanto em servidores quanto estaes de trabalho. Possui uma ampla disponibilidade de aplicativos compatveis, como servidores de rede, aplicativos multimdia, entre outros. 1.2 A histria dos sistemas operacionais. Os sistemas operacionais tm sido historicamente amarrados arquitetura dos computadores nos quais iriam rodar. Por isso, veremos como eles evoluiram nas sucessivas geraes de computadores. Esse mapeamento entre geraes de computadores e geraes de sistemas operacionais admissivelmente imaturo, mas tem algum sentido. O primeiro computador digital verdadeiro foi projetado pelo matemtico ingls Charles Babbage (1792-1871). Embora Babbage tenha dispendido muito de sua vida e de sua fortuna tentando construir sua "mquina analtica", ele jamais conseguiu por o seu projeto em funcionamento porque era simplesmente um modelo matemtico e a tecnologia da poca no era capaz de produzir rodas, engrenagens, dentes e outras partes mecnicas para a alta preciso que necessitava. Desnecessrio se dizer que a mquina analtica no teve um sistema operacional. 1 - A Primeira Gerao (1945-1955): Vlvulas e Painis com Plugs Aps os esforos sem sucesso de Babbage, pouco progresso se teve na construo de computadores digitais at a Segunda Guerra Mundial. Em torno de 1940, Howard Aiken em Harvard, John Von Neumann no Instituto para Estudos Avanados em Princeton, John Presper Eckert e William Mauchley na Universidade de Pennsylvania e Konrad Zuse na Alemanha, entre outros, tiveram sucesso na construo de mquinas calculadoras usando vlvulas. Essas mquinas eram enormes, ocupando salas completas, com dezenas de milhares de vlvulas, porm eram muito mais lentas do que os mais simples computadores pessoais de hoje. Naqueles dias primitivos, um pequeno grupo de pessoas construiu, programou, operou e deu manuteno a cada mquina. Toda a programao era feita em linguagem de mquina, sempre se conectando fios com plugs em painis para controlar as funes bsicas da mquina. As linguagens de programao no eram conhecidas (nem a linguagem Assembly). Nem se ouvia falar em sistemas operacionais. O modo usual de operao consistia no programador elaborar o programa numa folha e ento ir sala da mquina, inserir os plugs nos painis do computador e gastar as prximas horas apelando para que nenhuma das 20.000 ou mais vlvulas se queimasse durante a execuo do programa. Na verdade, todos os problemas eram inerentemente sobre clculos numricos tais como geraes de tabelas de senos e cossenos.

  • 5

    Por volta dos anos 50, essa rotina teve uma pequena evoluo com a introduo de cartes perfurados. Era possvel, a partir de ento, se escrever programas em cartes e l-los, em vez do uso de plugs em painis; no mais, o procedimento era o mesmo. 2 - A Segunda Gerao (1955 - 1965): Transistores e Sistemas Batch A introduo do transistor em meados dos anos 50 mudou o quadro radicalmente. Os computadores tornaram-se bastante confiveis para que pudessem ser produzidos e vendidos comercialmente na expectativa de que eles continuassem a funcionar por bastante tempo para realizar algumas tarefas usuais. A princpio havia uma clara separao entre projetistas, construtores, operadores, programadores e o pessoal de manuteno. Essas mquinas eram alocadas em salas especialmente preparadas com refrigerao e com apoio de operadores profissionais. Apenas grandes companhias, agncias governamentais, ou universidades, dispunham de condies para pagar um preo de milhes de dlares por essas mquinas. Para rodar um job (isto , um programa ou um conjunto de programas), primeiro o programador escrevia o programa no papel (em FORTRAN ou linguagem Assembly), e ento perfurava-o em cartes. Da, ele levava o conjunto de cartes chamado de "deck", sala de recepo e o entregava a um dos operadores. Quando o computador encerrava a execuo de um job, um operador apanhava a sada na impressora, a conduzia de volta sala de recepo onde o programador poderia colet-lo posteriormente. Ento ele tomava um dos decks de cartes que tinha sido trazido da sala de recepo e produzia a sua leitura. Se o compilador FORTRAN era necessrio, o operador tinha que peg-lo de uma sala de arquivos e produzir a sua leitura. Muito tempo de computador era desperdiado enquanto os operadores caminhavam pela sala da mquina para realizarem essas tarefas. Devido ao alto custo do equipamento, era de se esperar que as pessoas tentassem reduzir o tempo desperdiado. A soluo geralmente adotada era o sistema em "batch". A idia original era colecionar uma bandeja completa de jobs na sala de recepo e ento l-los para uma fita magntica usando um computador pequeno e relativamente barato, por exemplo o IBM 1401, que era muito bom na leitura de cartes, na cpia de fitas e na impresso da sada, porm no era to bom em clculo numrico. Outros computadores, mquinas mais caras, tais como o IBM 7094, eram usados para a computao real. Essa situao mostrada na figura 1.

  • 6

    1401 7094 1401

    Leitora de

    cartes

    Unidade

    de Fita

    Entrada

    da Fita

    Sistema

    de Fitas

    Sada

    de Fita

    Impressora

    ( a ) ( b ) ( c ) ( d ) ( e ) ( f ) Figura 1 - Um sistema batch antigo. ( a ) Programadores levam cartes ao 1401. ( b ) 1401 grava batch de jobs em fita. ( c ) A operadora acopla fita de entrada no 7094. ( d ) O 7094 faz o processamento. ( e ) A operadora acopla fita de sada no 1401. ( f ) O 1401 imprime a sada. Aps cerca de uma hora coletando-se um lote de jobs, a fita era rebobinada e levada para a sala da mquina onde era montada numa unidade de fita. O operador ento carregava um programa especial (o antecessor do sistema operacional de hoje), que lia o primeiro job da fita e o executava. A sada era escrita numa segunda fita, em vez de ser impressa. Aps o fim da execuo de cada job, o sistema operacional automaticamente lia o prximo job da fita e comeava a execut-lo. Quando todo o "batch" era feito, o operador removia as fitas de entrada e de sada, substituia a fita de entrada pelo prximo "batch" e levava a fita de sada para um 1401 produzir a impresso "off-line" (isto , no conectada ao computador principal). A estrutura de um job de entrada tpico mostrada na figura 2. Ele comea com um carto $JOB, especificando o tempo mximo de execuo em minutos, o nmero da conta e o nome do programador. A seguir vinha um carto $FORTRAN, avisando ao sistema operacional para carregar o compilador FORTRAN da fita do sistema. Em seguida vinha um programa a ser compilado, acompanhado de um carto $LOAD, informando ao sistema operacional para carregar o programa objeto j compilado. (Programas compilados eram sempre escritos em fitas selecionadas e tinham de ser carregadas explicitamente). A seguir vinha um carto $RUN, informando ao sistema operacional para executar o programa com os dados que vinham a seguir. Finalmente o carto $END marcava o fim do job. Esses cartes de controle foram os precurssores das linguagens de controle de job (JCL) modernas e de interpretadores de comandos. Muitos computadores da segunda gerao foram usados principalmente para clculos cientficos e de engenharia, tais como em soluo de equaes diferenciais parciais. Eles foram vastamente programados em FORTRAN e em

  • 7

    linguagem Assembly. Sistemas operacionais tpicos eram o FMS (Sistema Monitor FORTRAN) e IBSYS (Sistema Operacional da IBM para o 7094).

    Figura 2 - Estrutura de um tpico job FMS 3 - A Terceira Gerao (1965 - 1980): CIs e Multiprogramao Nos anos 60, muitos fabricantes de computadores tinham duas linhas de produto distintas e totalmente incompatveis. Por um lado havia os computadores cientficos, em grande escala, orientado por palavras, tais como o 7094, que era usado para clculos numricos em cincia e engenharia. Por outro lado, havia os computadores comerciais, orientados por caracter, tais como o 1401, que era vastamente usado para classificao em fita e impresso, por bancos e companhias de seguros. O desenvolvimento e a manuteno de duas linhas de produto completamente diferentes era uma proposta cara para os fabricantes. Alm do mais, os clientes em potencial para aquisio de novos computadores necessitavam inicialmente de uma mquina pequena, para mais tarde, com o crescimento, terem uma mquina maior em que pudessem rodar todos os seus programas mais rapidamente. A IBM, no intuito de resolver ambos os problemas de uma s tacada, introduziu o sistema /360. O 360 era uma srie de mquinas compatveis por software, variando de tamanho a partir do 1401 at o mais potente 7094. As mquinas diferiam apenas em preo e performance (capacidade de memria, velocidade do processador, nmero de perifricos I/O permitidos, e assim por diante). J que todas as mquinas tinham a mesma arquitetura e o mesmo conjunto de instrues, pelo menos em teoria, programas escritos para uma mquina poderiam rodar em todas as outras. Alm disso, o 360 foi projetado para manusear tanto computao comercial como computao cientfica. Assim, uma nica famlia de mquinas poderia satisfazer s necessidades de todos os clientes. Em anos subsequentes, a IBM apresentou os sucessores compatveis com a linha 360, usando uma tecnologia mais moderna, conhecidos como sries 370, 4300, 3080 e 3090. O 360 foi a primeira linha de computadores a usar (em pequena escala) circuitos integrados (CIs), fornecendo uma maior vantagem em

  • 8

    preo/performance sobre as mquinas da segunda gerao, que eram construidas de transistores individuais. Isso foi um sucesso imediato e a idia de uma famlia de computadores compatveis foi logo adotada por todos os outros fabricantes. Os descendentes dessas mquinas ainda hoje esto em uso em grandes centros de computao. A maior fora da idia de "uma famlia" foi simultaneamente a sua maior durabilidade. A inteno era que todo o software, incluindo o sistema operacional, deveria trabalhar em todos os modelos. Ele tinha de rodar em sistemas pequenos que muitas vezes j substituia 1401s para cpias de cartes em fitas e em sistemas muito grandes, que muitas vezes substituia 7094s para fazer clculos demorados e outras computaes pesadas. Ele deveria ser bom em sistemas com poucos perifricos e em sistemas com muitos perifricos. Ele tinha de trabalhar em ambientes comerciais e em ambientes cientficos. Acima de tudo, ele tinha de ser eficiente em todos esses usos diferentes. No havia uma maneira atravs da qual a IBM (ou outra companhia) pudesse solucionar todas essas exigncias conflitantes. O resultado foi um sistema operacional enorme e extraordinariamente complexo, provavelmente de dois ou trs ordens de magnitude maior do que o FMS. Ele consistia de milhares de linhas de linguagem assembly escritas por centenas de programadores e continha centenas e centenas de depuraes que necessitavam de contnuas verses a fim de corrig-los. Cada nova verso fixava algumas depuraes e introduzia outras novas, tal que o nmero de depuraes provavelmente permanecia constante com o tempo. A despeito de seu enorme tamanho e de seus problemas, o OS/360 e os sistemas operacionais similares da terceira gerao, produzidos por outros fabricantes, satisfizeram razoavelmente bem a seus clientes. Eles tambm popularizaram vrias tcnicas ausentes nos sistemas operacionais da segunda gerao. Provavelmente, a mais importante dessas tcnicas foi a multiprogramao. No 7094, quando o job que estava sendo executado tinha uma pausa esperando que uma operao em fita ou em qualquer outro perifrico I/O fosse completada, a CPU simplesmente ficava ociosa at que a operao I/O fosse encerrada. Em clculos cientficos pesados, as operaes de I/O no so frequentes, e essse tempo ocioso insignificante. Em processamento de dados comerciais, as operaes de I/O consomem frequentemente entre 80 a 90 porcento do tempo total, exigindo alguma providncia sobre isso. A soluo foi particionar a memria em vrias partes, com um job diferente em cada partio, como mostrado na Fig. 3. Enquanto um job estava esperando que uma operao I/O fosse concluida, um outro job poderia usar a CPU. Se vrios jobs pudessem ocupar a memria no mesmo instante, a CPU estaria sempre ocupada quase que em 100% do tempo. Ter mltiplos jobs na memria, por sua vez, requer hardware especial para proteger cada job contra danos e entrelaamento entre eles, e o 360 e outros sistemas da terceira gerao eram equipados com esse hardware.

  • 9

    Parties da Memria Figura 3 - Um sistema de multiprogramao com trs jobs na memria Um outro grande aspecto presente nos sistemas operacionais da terceira gerao era a habilidade de ler jobs de cartes para o disco assim que eles eram trazidos sala do computador. Assim, sempre que um job tinha a sua execuo encerrada, o sistema operacional poderia carregar um novo job do disco numa nova partio vazia e execut-lo. Essa tcnica chamada de "spooling" (de "Simultaneous Perifheral Operation On Line") e tambm era usada para a sada. Com o "spooling", os 1401s no precisavam ser to grandes e a utilizao da fita diminuiu bastante. Apesar dos sistemas operacionais da terceira gerao terem sido bem apropriados para a execuo de programas envolvendo grandes clculos cientficos e de processamento de dados comerciais compactos, eles eram ainda, basicamente, sistemas em "batch". Muitos programadores sentiam saudades dos dias da primeira gerao, quando eles tinham a mquina toda para eles por poucas horas, mas de tal forma que eles depuravam os seus programas rapidamente. Com os sistemas da terceira gerao, o tempo entre a submisso do job e a obteno da sada era frequentemente de vrias horas, a ponto da ausncia de uma nica vrgula causar uma falha na compilao e o programador desperdiava quase um dia. A vontade de ter um tempo de resposta menor abriu espao para "time-sharing", uma variante da multiprogramao, em que cada usurio tem um terminal "on-line". Num sistema "time-sharing", se 20 usurios esto conectados e 17 deles esto pensando, falando ou tomando caf, a CPU pode ser alocada para os trs jobs que querem servio. Como as pessoas que depuram programas usualmente editam poucos comandos (como compilar um programa de cinco pginas) em vez de programas longos (como classificar mil registros em fita), o computador pode fornecer mais rpido, servio interativo a um nmero maior de usurios e talvez tambm trabalhar com grandes jobs em "batch" paralelamente, enquanto a CPU est, por outro lado, ociosa. Embora a primeira srie de sistemas em time-sharing (CTSS) foi desenvolvido no MIT num IBM 7094 especialmente modificado, ele no se tornou verdadeiramente popular at que a necessidade de proteo de hardware ficasse mais difundida durante a terceira gerao.

    Job 3 Job 2 Job 1 Sistema Operacional

  • 10

    Aps o sucesso do sistema CTSS, o MIT, o Laboratrio Bell e a General Electric (ento o maior fabricante de computadores) decidiram embarcar no desenvolvimento de um "computador utilitrio", uma mquina que suportasse milhares de usurios em "time-sharing" simultaneamente. O seu modelo era baseado no sistema de distribuio de eletricidade - quando voce precisa de eletricidade, basta por um plug na tomada da parede e a quantidade que voce precise, ter. Os projetistas desse sistema, conhecido como MULTICS (MULTiplexed Information and Computing Service), tinham em mente uma grande mquina que fornecesse servio de computao para todos em Boston. A idia de que mquinas to poderosas quanto o GE44 seriam vendidas como computadores pessoais por alguns milhares de dlares apenas vinte anos mais tarde era, naquela poca, pura fico cientfica. Para resumir, o MULTICS introduziu muitas idias inovadoras na literatura da computao, mas a sua construo foi mais difcil do que se esperava. O Laboratrio Bell saiu do projeto e a General Electric continuou sozinha. Eventualmente o MULTICS rodava o suficientemente bem para ser usado num ambiente de produo no MIT e em poucas outros lugares, mas a idia de um computador utilitrio falhou. Mesmo assim, o MULTICS teve uma enorme influncia nos sistemas subsequentes. Outro importante desenvolvimento durante a terceira gerao foi o crescimento fenomenal de mini-computadores, comeando com o DEC PDP-1 em 1961. O PDP-1 tinha apenas 4 K palavras de 18 bits mas a um custo de 120.000 dlares por mquina (menos que 5% do preo de um 7094) eles vendiam como bolinhos. Para certos tipos de trabalhos no-numricos era quase to rpido quanto o 7094 e fez surgir uma nova indstria. Foi rapidamente seguido por uma srie de outros PDPs (que diferentes da famlia IBM, eram todos incompatveis) culminando com o PDP-11. Um dos cientistas do Laboratrio Bell que trabalhou no MULTICS, Ken Thompson, logo depois encontrou um pequeno PDP-7 que ningum usava e comeou a escrever uma verso simplificada mono-usurio do MULTICS. Brian Kernighan apelidou esse sistema de UNICS (UNiplexed Information and Computing Service), mas sua grafia foi mais tarde trocada para UNIX. Posteriormente foi levado para um PDP-11/20, onde funcionou bem o bastante para convencer a gerncia do Laboratrio Bell em investir no PDP-11/45 para continuar o trabalho. Outro cientista do Laboratrio Bell, Dennis Ritchie, juntou-se a Thompson para reescrever o sistema numa linguagem de alto nvel chamada C, projetada e implementada por Ritchie. O Laboratorio Bell licensiava o UNIX para Universidades quase de graa e dentro de poucos anos, centenas delas estavam usando-o. O UNIX logo estendeu-se para o Interdata 7/32, para o VAX, para o MOTOROLA 68000, e para muitos outros computadores. O UNIX tinha sido transportado para mais computadores do que qualquer outro sistema operacional da histria e seu uso est ainda aumentando rapidamente.

  • 11

    4 - A Quarta Gerao (1980-1990): Computadores Pessoais Com o desenvolvimento de circuitos LSI (Large Scale Integration), chips contendo milhares de transistores em um centimetro quadrado de silcio, a era do computador pessoal comeava. Em termos de arquitetura, os computadores pessoais no eram diferentes de minicomputadores da classe do PDP-11, mas em termos de preo eles eram certamente bem diferentes. Enquanto o minicomputador tornou possvel um departamento de uma companhia ou uma universidade ter o seu prprio computador, o chip micropocessador tornou possvel um indivduo ter o seu prprio computador. A grande variedade de capacidade computacional disponvel, especialmente a capacidade de computao altamente interativa com excelentes facilidades grficas, fizeram crescer a indstria de produo de software para computadores pessoais. Muitos desses softwares eram "amigveis ao usurio", significando que eles foram projetados para usurios que no tinham conhecimento algum sobre computadores e alm do mais no tinha outra inteno a no ser a de orient-los no uso. Essa foi certamente a maior mudana do OS/360, cujo JCL era to complexo que livros inteiros foram escritos sobre ele. Dois sistemas operacionais dominaram a utilizao do computador pessoal: o MS-DOS, escrito pela Microsoft para o IBM PC e para outras mquinas que usavam a CPU Intel 8088 e seus sucessores, e UNIX, que predominante em mquinas que usam a CPU da famlia Motorola 68000. Pode parecer irnico que o descendente direto do MULTICS, projetado para o gigante computador utilitrio, ficou to popular em computadores pessoais, mas principalmente mostra como foram boas as idias sobre o MULTICS e o UNIX. Apesar da primeira verso do MS-DOS ser primitiva, em verses subsequentes foram incluidas diversas facilidades do UNIX, o que no to surpreendente j que a Microsoft um dos maiores fornecedores do UNIX, usando o nome comercial XENIX. Um interessante desenvolvimento que comeou em meados dos anos 80 foi o crescimento de redes de computadores pessoais rodando sistemas operacionais para rede e sistemas operacionais distribuidos. Num sistema operacional para rede, os usurios tm conscincia da existncia de mltiplos computadores e podem se conectar com mquinas remotas e copiar arquivos de uma mquina para outra. Cada mquina roda o seu prprio sistema operacional local e tem o seu prprio usurio (ou usurios). Um sistema operacional distribuido, em contraste, aparece para o usurio como um sistema tradicional de um nico processador, mesmo sendo composto realmente de mltiplos processadores. Num verdadeiro sistema distribuido, os usurios no tm conscincia de onde os seus programas esto sendo rodados ou onde seus arquivos esto localizados; tudo manuseado automtica e eficientemente pelo sistema operacional.

  • 12

    Os sistemas operacionais em rede no so fundamentalmente diferentes dos sistemas operacionais de um nico processador. Eles obviamente necessitam de um controlador de interface de rede e de algum software de alto nvel para gerenci-lo, bem como de programas para concluir com xito uma conexo remota e o acesso a arquivos remotos, mas essas adies no mudam a estrutura essencial do sistema operacional. Os sistemas operacionais distribuidos requerem mais do que a adio de cdigos a um sistema operacional de um processador porque sistemas distribuidos e centralizados diferem em modos crticos. Sistemas distribuidos, por exemplo, frequentemente admitem rodar programas em vrios processadores ao mesmo tempo, e da exigem algortmos de escalonamento de processadores para otimimizar a quantidade de paralelismo que deve ser concludo com xito. O atraso de comunicao em uma rede frequentemente significa que esses (e outros) algortmos devem rodar com informao incompleta, desatualizada ou s vezes incorreta. Essa situao radicalmente diferente de um sistema de um nico processador no qual o sistema operacional tem a informao completa sobre o estado do sistema. Tolerncia a falhas uma outra rea em que os sistemas distribuidos so diferentes. comum para um sistema distribuido ser projetado com a expectativa de que continuar rodando mesmo que parte do hardware deixe de funcionar. Desnecessrio se dizer que uma exigncia adicional ao projeto tem enormes implicaes para o sistema operacional. 1990/97: a Era Windows

    Se o mundo da computao estava procurando por um novo padro

    ou no, ele encontrou um em maio de 1990, quando a Microsoft finalmente lanou o Windows 3.0.

    O Windows 3.0 era executado sobre o DOS e, portanto, oferecia

    compatibilidade com os programas DOS. Ele se beneficiava do processador 386, podendo fazer a multitarefa com programas DOS e tambm com programas Windows. A interface com o usurio foi projetada para se parecer com o Presentation Manager, trazendo um Gerenciador de Programas baseado em cones e um Gerenciador de Arquivos em estilo rvore, incluindo avanos como cones sombreados. Embora o Windows 3.0 tenha exigido revises mnimas de praticamente todos os programas Windows existentes na poca, no havia muito a ser revisado. Alm do mais, imediatamente aps a introduo do Windows 3.0, comearam a aparecer os aplicativos, liderados pela diviso de aplicativos da prpria Microsoft e seguidos por praticamente todos os outros grandes desenvolvedores. Mesmo depois do anncio do Windows 3.0, a Microsoft e a IBM continuavam falando sobre o OS/2 e, especialmente, sobre o OS/2 2.0, a primeira verso 32 bits real que viria a aparecer, finalmente, em 1992.

  • 13

    Para contundir ainda mais as coisas, enquanto a IBM posicionava o OS/2 como o futuro sistema operacional para todos os usurios, a Microsoft posicionava o OS/2 como um topo de linha, apenas para os aplicativos misso crtica e baseados em servidor. Em vez disto, a Microsoft comeou a falar sobre o OS/2 3.0 (no confundir com o posterior IBM OS/2 Warp 3.0), que adicionaria segurana e suporte avanados a multiprocessador, sendo capaz de executar aplicativos Windows e Posix diretamente. Neste cenrio, o Windows NT era o ncleo sobre o qual se apoiariam o DOS, o Windows, o OS/2 e o Posix.

    As duas companhias finalmente separaram suas estratgias no incio de 1991, com

    Jim Cannavino, da IBM, e Bill Gates, da Microsoft, brigando como um casal durante um divrcio litigioso. O OS/2 conquistou um forte nicho em algumas grandes aplicaes corporativas, auxiliado por sua estabilidade e robustez, comparadas ao Windows 3.x. Mais tarde, a IBM faria uma ltima tentativa de fazer do OS/2 o principal sistema operacional com seu OS/2 Warp 3.0, mais orientado ao consumidor comum e lanado no final de 1994. Ele venderia milhes de cpias mas no diminuiria a grande inclinao da indstria pelo Windows.

    A Microsoft viria a transformar seu antigo "OS/2 3.0" no Windows NT

    3. 1, que foi lanado em 1993 sem o suporte grfico ao OS/2 e recebido, inicialmente, como um sistema operacional para servidores de aplicativos, concorrendo, principalmente, com o OS/2 da IBM.

    Para a maioria dos usurios de PCs, a Microsoft ofereceu o Wlndows

    3.1 avanado no final de 1991, que adicionava uma melhor integrao de aplicativos, recursos arrastar-e-soltar e uma maior estabilidade. No incio dos anos 90, ele se tornou o padro dominante para os aplicativos para PC e a Microsoft ocupou o papel de lder na definio das especificaes multimdia.

    A Microsoft viria a dominar muitas reas mais na computao por

    esta mesma poca. Seus produtos Visual Basic e Visual C++ venceram a grande concorrncia da Borland no domnio de linguagens de programao. Alm disto, os aplicativos Microsoft - liderados pelo pacote Office, contendo o Word, o Excel, o PowerPoint e, mais tarde, o Access tomaram grande parte do mercado de programas aplicativos (o que foi auxiliado, em parte, pelos atrasos nas verses do Lotus 1-2-3, WordPerfect e DBASE para Windows, sendo que este ltimo foi adquirido pela Borland). Neste perodo, o Macintosh, da Apple, continuava a crescer e expandir-se e encontrou nichos nas artes grficas, na multimdia e na educao. Mas, na maioria das empresas e rgos governamentais, o principal sistema comercial era aquele que seguia os padres do PC original. quela poca, o termo compatvel com IBM j tinha sado de moda, para ser substitudo pelo Processador como a principal pea descritiva de hardware.

    A era do 286 j havia terminado no final de 1988, aps a introduo

    do 386SX da Intel, um Processador que possua os componentes internos de

  • 14

    32 bits do 386 e um barramento de dados 16 bits como o 286, o que o tornava barato. Este e o 386 original rebatizado como 386DX dominaram as vendas de computadores durante anos. Em abril de 1989, a Intel apareceu com seus processadores 486. Com 1,2 milhes de transistores, o 486 era, efetivamente, uma verso mais rpida e mais refinada do 386 somada a um co-processador matemtico que executava todos os aplicativos escritos para o 386 sem quaisquer problemas.

    Desta vez, ningum esperou pela IBM ou pela Compaq. Dezenas de

    desenvolvedores se apressaram para tornar disponveis suas mquinas 486 o mais rpido possvel aps a introduo da Intel, e estas mquinas tinham uma velocidade de execuo 50 vezes maior que o IBM PC original.

    A Intel introduziu seu Processador Pentium de 60 MHz em maro de

    1993, mas no eram apenas os processadores que continuavam a avanar. Os discos rgidos ficavam cada vez maiores e mais velozes. E a tecnologia de exibio grfica progrediu das placas de vdeo de "buffer de quadro" para as aceleradores grficas, que trabalhavam diretamente com o Windows a fim de aumentar os tempos de resposta de tela e melhorar os grficos em geral.

    Neste perodo, as redes locais corporativas realmente comearam a

    decolar. A IBM promovia, ento, o Office Vision, que deveria ser executado em todas as plataformas SAA, inclusive sobre o OS/2. E praticamente todos os gigantes do Desenvolvimento de sistemas tinham suas estratgias multiplataforma para a automao de escritrios, como o All-In-One da DEC. Quase todos fracassariam dentro de um espao de tempo relativamente curto. Quem realmente alcanou o sucesso foram os servidores de PC, que abrigavam seus prprios dados e podiam fazer ligaes com grandes bases de dados corporativas. No fronte do hardware, o Compaq Systempro, introduzido em 1989, liderava os grandes aplicativos que antes viviam em minicomputadores e outros grandes sistemas. No lado do software, chegava ao mercado o SQL, e companhias como a Oracle e a Sybase comeavam a ter como alvos os desenvolvedores para PC. As ferramentas de desenvolvimento rpido de aplicativos, ou RAD, logo facilitaram a criao de boas interfaces com o usurio para o acesso a dados corporativos. O correio eletrnico (email) aceito no dia-a-dia das corporaes com produtos, como o cc:Mail, mais tarde adquirido pela Lotus, e mais um punhado de concorrentes menores. Em dezembro de 1989, a Lotus mudou a frmula com o Lotus Notes, o primeiro aplicativo de "groupware".

    Em 1994, a Microsoft e a Intel j vestiam o manto da liderana na

    indstria do PC, o Windows tinha-se estabelecido como o padro para aplicativos e as redes estavam definitivamente no mercado comum.

    No comeo de 1995, poderamos esperar que novos sistemas

    operacionais da Microsoft e novos chips da Intel continuassem sendo o carro-chefe da computao ainda por muitos anos, levando-se em conta o histrico dos anos anteriores. Eles ainda so importantes, mas talvez a mudana mais importante destes ltimos anos tenha vindo de um grupo de estudantes da Universidade de Illinois. Foi l que, no incio de 1993, Marc Andreessen, Eric

  • 15

    Bina e outros que trabalhavam para o National Center for Supercomputing Applications (NCSA) apareceram com o Mosaic, uma ferramenta que seria utilizada para paginar a Internet.

    A Internet, claro, j existia h muitos anos, datando do incio dos

    anos 60, quando o rgo de Defesa de Projetos de Pesquisa Avanada (DARPA) do Pentgono estabeleceu as conexes com muitos computadores de universidades. Enquanto a Internet crescia, o governo transferiu seu controle para os sites individuais e comits tcnicos. E, em 1990, Tim Berners-Lee, ento no laboratrio de fsica CERN, em Genebra, Sua, criou a Linguagem de Marcao de Hipertexto (HTML), uma maneira simples de ligar informaes entre sites da Internet. Isto, por sua vez, gerou a World Wide Web (www), que apenas aguardava por um paginador grfico para comear a crescer. Aps o lanamento do Mosaic ao pblico, no final de 1993, repentinamente, a Internet - e, em particular, a Web - podiam ser acessadas por qualquer pessoa que tivesse um computador pessoal, fato auxiliado, em parte, nela possibilidade de transferir livremente a verso mais recente de vrios paginadores diferentes. E, dentro de pouco tempo, parecia que todo o mundo - e todas as companhias - estava inaugurando seu site na Web. Novas verses de paginadores da Web tambm chegaram rapidamente. A Netscape Corp. - uma nova companhia formada por Andreessen e Jim Clark, que havia sido um dos fundadores da Silicon Graphics - logo comeou a dominar o ramo de paginadores Web. O Netscape Navigator acrescentou vrios recursos, inclusive o suporte a extenses (o que, por sua vez, levou a diversas extenses multimdia) e a mquina virtual Java (que permitia aos desenvolvedores elaborar aplicativos Java que podiam ser executados dentro do paginador). A tremenda empolgao ocasionada pela exploso da World Wide Web chegou perto de eclipsar o maior anncio da Microsoft neste perodo: o Windows 95. Introduzido em agosto de 1995, a estria do software foi acompanhada por um entusiasmo maior do que qualquer outro anncio de computao da era. O Windows 95 era a verso do Windows pela qual muitos usurios estiveram esperando. Ele permitia a utilizao de aplicativos totalmente 32 bits, tinha a multitarefa preemptiva, era compatvel com Plug-and-Play, suportava novos padres de e-mail e comunicaes e, logicarnente, trazia uma nova interface com o usurio. Na verdade, muitos usurios pensavam que a nova interface, que inclua um menu "Iniciar" e uma rea de trabalho de programas com pastas e cones, deixaria o Windows muito mais prximo do projeto Lisa original ou do Macintosh de dez anos atrs. A Microsoft passou anos prometendo um Windows 32 bits, chegando a dizer que ele estaria pronto em 1992, e os desenvolvedores passaram um longo tempo aguardando pelo "Chicago", como era conhecido o Windows 95 durante o desenvolvimento. Urna vez lanado, o Windows 95 rapidamente

  • 16

    tornou-se o padro para a computao de usurio final, fazendo com que muitos desenvolvedores tivessem suas verses de aplicativos 32 bits prontas no lanamento do SO ou imediatamente aps. A Microsoft fez seguir ao Windows 95, menos de um ano mais tarde, o Windows NT 4.0, que incorporava a mesma interface com o usurio e executava a maioria dos mesmos aplicativos, utilizando interfaces de programao Win32. O Windows NT agradou rapidamente os gerentes de IT corporativos, devido a seu projeto mais estvel. Mas ainda existe um grande espao para avanos nos sistemas operacionais. Durante anos, os desenvolvedores de software falaram sobre as linguagens orientadas a objetos (como o C++) e sobre um sistema operacional mais orientado a objetos. Num projeto como este, dados e aplicativos deveriam ser divididos, para que os usurios pudessem trabalhar com os dados independentemente dos aplicativos individuais. O ideal seria que os dados pudessem ser disseminados ou distribudos por diversos computadores. A Microsoft vem falando sobre este conceito h anos, em especial na palestra "A Informao nas Pontas de Seus Dedos" de Bill Gates, realizada em novembro de 1990, que enfatizava o conceito de que todos os dados de que um usurio pode necessitar poderiam, algum dia, ser acessados por meio de um computador pessoal, independente do local onde os dados realmente residem. A idia, disse ele, iria alm dos aplicativos e consideraria apenas os dados. Este caminho levou nfase dada pela Microsoft aos documentos compostos, macros que funcionam atravs dos aplicativos, e a um novo sistema de arquivos. Algumas peas desta viso - chamada Cairo - fazem parte da interface do windows 95 e do OLE (Object Linking and Embedding). Outras ainda esto na prancheta de desenhos. claro que os concorrentes da Microsoft continuaram seguindo seus prprios caminhos. Em 1989, a NEXT Computer de Steve Jobs apareceu com um SO orientado a objetos, destinado aos clientes corporativos e recentemente adquirido pela Apple Computer. No incio dos anos 90, a IBM e a Apple fundiram dois de seus projetos - o SO "Pink" da Apple e o experimento IBM/Metaphor, chamado de Patriot Partners - para criar o Taligent. Este projeto resultou numa srie um tanto extensa de estruturas, para uso dos desenvolvedores, na criao de aplicativos baseados em objetos. Mas, embora as estruturas tenham sido recentemente adicionadas ao OS/2, os planos para o Taligent como um SO isolado foram arquivados. Uma outra tecnologia baseada em objetos est em vrios estgios de desenvolvimento. O OLE, da Microsoft, que permite a criao de documentos compostos, tem sido aprimorado e hoje faz parte da especificao ActiveX, da mesma companhia. A Apple, a IBM e outras companhias surgiam com uma especificao alternativa chamada OpenDoc e tais componentes so hoje conhecidos como LiveObjects. A IBM definiu um padro para que os objetos trabalhassem em conjunto ao longo de uma rede chamada Systems Object Model (SOM, ou Modelo de Objeto de Sistema), que concorre com o Component Object Model (COM, ou Modelo de Objeto Componente), da Microsoft.

  • 17

    Mas tudo isto tem sido eclipsado nos ltimos meses pelo Java, da Sun Microsystems, que comeou sua vida como uma variao do C++ projetada para uso na Internet. No ano passado, ele passou a incluir uma implementao de mquina virtual que foi incorporada aos paginadores da Netscape e da Microsoft e tambm mais nova verso do sistema operacional da IBM, o OS/2 Warp. Muitos desenvolvedores esto atualmente desenvolvendo applets (pequenos aplicativos) e at mesmo aplicativos completos dentro do Java, na esperana de que isto venha a livr-los de terem que se apoiar nos padres Microsoft. Mais recentemente, a Sun, a Netscape e outras companhias estiveram promovendo a especifieao Java-Beans como um timo mtodo de ligao de objetos.

    Na prpria Web, um dos atuais esforos so as tecnologias e

    produtos que permitem o fornecimento automtico do contedo sobre a Internet, para que os usurios no precisem pesquisar informaes especficas. Apresentada pela primeira vez pela PointCast, que implementou uma tela de descanso que coleta as informaes da vrias fontes, esta abordagem est sendo perseguida por diversos concorrentes novos, como a Castanet e a BackWeb. E tanto a Netscape quanto a Microsoft agora prometem o fornecimento de contedo Internet em segundo plano, com a Microsoft sempre falando em fazer disto uma parte da rea de trabalho do Windows.

    Quantas e quais destas iniciativas em equipamentos, programas e rede tero sucesso? Como sempre, difcil dizer. Mas est claro que a Internet e a Web sero os principais fatores nos prximos anos, assim como os inevitveis avanos nas capacidades de hardware e software. 1.3 Tipos de sistemas operacionais Existem 4 tipos bsicos de sistemas operacionais. Eles so divididos em grupos relacionados com o tipo de computador que controlam e o tipo de aplicativos que suportam. Estas so as categorias mais abrangentes:

    sistema operacional de tempo real (RTOS - Real-time operating system). utilizado para controlar mquinas, instrumentos cientficos e sistemas industriais. Geralmente um RTOS no tem uma interface para o usurio muito simples e no destinado para o usurio final, desde que o sistema entregue como uma "caixa selada". A funo do RTOS gerenciar os recursos do computador para que uma operao especfica seja sempre executada durante um mesmo perodo de tempo. Numa mquina complexa, se uma parte se move mais rapidamente s porque existem recursos de sistema disponveis, isto pode ser to catastrfico quanto se uma parte no conseguisse se mover porque o sistema est ocupado.

    monousurio, monotarefa. O sistema operacional foi criado para que um nico usurio possa fazer uma coisa por vez. O Palm OS dos computadores Palm um bom exemplo de um moderno sistema operacional monousurio e monotarefa.

    monousurio, multitarefa. Este tipo de sistema operacional o mais utilizado em computadores de mesa e laptops. As plataformas

  • 18

    Microsoft Windows e Apple MacOS so exemplos de sistemas operacionais que permitem que um nico usurio utilize diversos programas ao mesmo tempo. Por exemplo, perfeitamente possvel para um usurio de Windows escrever uma nota em um processador de texto ao mesmo tempo em que faz download de um arquivo da Internet e imprime um e-mail.

    multiusurio. Um sistema operacional multiusurio permite que diversos usurios utilizem simultaneamente os recursos do computador. O sistema operacional deve se certificar de que as solicitaes de vrios usurios estejam balanceadas. Cada um dos programas utilizados deve dispor de recursos suficientes e separados, de forma que o problema de um usurio no afete toda a comunidade de usurios. Unix, VMS e sistemas operacionais mainframe como o MVS so exemplos de sistemas operacionais multiusurio.

    Tela do sistema operacional Mac OS X Panther

    importante diferenciar os sistemas operacionais multiusurio dos sistemas operacionais monousurio que suportam rede. O Windows Server e o Novell Open Enterprise Server podem suportar centenas ou milhares de usurios em rede, mas os sistemas operacionais em si no so sistemas multiusurio de verdade. O administrador do sistema o nico "usurio" do Windows Server ou do Novell Open Enterprise Server. O suporte rede e todos os usurios remotos so, do ponto de vista do sistema operacional, um programa sendo executado pelo administrador.

    Agora que voc conhece os tipos de sistemas operacionais, vamos entender as suas funes bsicas.

  • 19

    2 Conceitos sobre sistemas operacionais 2.1 Processos e threads Processos

    Processo, no contexto da informtica, um programa de computador em execuo.

    Em sistemas operacionais, processo um mdulo executvel nico, que corre concorrentemente com outros mdulos executveis. Por exemplo, em um ambiente multi-tarefa (como o Unix) que suporta processos, um processador de texto, um navegador e um sistema de banco de dados so processos separados que podem rodar concomitantemente. Processos so mdulos separados e carregveis, ao contrrio de threads, que no podem ser carregadas. Mltiplas threads de execuo podem ocorrer dentro de um mesmo processo. Alm das threads, o processo tambm inclui certos recursos, como arquivos e alocaes dinmicas de memria e espaos de endereamento.

    A comunicao entre processos o grupo de mecanismos que permite aos processos transferirem informao entre si. A capacidade de um sistema operacional executar simultaneamente dois ou mais processos chamada multiprocessamento. Se existirem dois ou mais processos executados em simultneo e disputam o acesso a recursos partilhados, problemas da concorrncia podem ocorrer. Estes problemas podem ser resolvidos pelo gerenciamento adequado de mltiplas linhas de execuo ou processos atravs da sincronizao (multitarefa) ou por outros recursos (como a troca de contexto).

    Estados de processos

  • 20

    Estado 1 - No-Submetido

    o processo que ainda no est submetido a CPU, est nas mos do usurio." At onde interessa ao sistemas ele no existe, porque o usurio ainda no o submeteu. Ele simplesmente apresentado como sendo o primeiro passo na vida de um processo. O Sistema Operacional, naturalmente, no reconhece esse estado.[1]". Pode por exemplo, ser um arquivo executvel que est armazenado no HD.

    Estado 2 - Suspenso

    o processo que j foi submetido, porm permanece suspenso at que o horrio ou evento programado ao usurio venha acontecer. Temos como exemplo o agendamento de uma varredura programada no anti-vrus por um usurio.

    Estado 3 - Pronto

    O processo j foi submetido e est pronto para receber a CPU, porm ainda guarda o escalonador de processos para ter controle da CPU. Processos que esto esperando E/S no se aplicam a esse estado.

    Estado 4 - Executando

    A execuo propriamente dita. O cdigo est sendo processado. Se ocorrer durante a execuo uma requisio de E/S o processo colocado no estado de espera e outro processo da fila de prontos poder ento concorrer a CPU.

    Estado 5 - Espera

    o processo que foi colocado na fila de espera de E/S devido ao processador de E/S ser mais lento que a CPU principal. O processo tornaria a CPU mais escrava dele se no houvesse esse estado, pois como ele no est concorrendo CPU ao executar um E/S, pode-se ento coloc-lo no estado de espera para que os demais processos do estado pronto possam concorrer a CPU.

    Ex: parte de um cdigo em C scanf(%d, VALOR); SOMA=VALOR+JUROS;

    Como podemos notar, a instruo scanf (uma requisio de entrada e sada) gerada se no fosse possvel colocar o processo em estado de espera; caso o usurio no entrasse com nenhum valor, o programa ficaria suspenso e no liberaria a CPU para outros processos.

    Estado 6 - Completo

    Neste estado temos a finalizao do processo.

  • 21

    Threads

    Da mesma forma que os processos sofrem escalonamento as threads tambm tem a mesma necessidade. O escalonamento de threads varivel dependedo do tipo da thread que so Kernel-Level Thread e User-Level Thread. Da mesma forma que quando vrios processos so executados em apenas uma CPU eles sofrem escalonamento e parecem que todos so executados ao mesmo tempo, quando um processo tem threads elas esperam a sua vez para ser executadas, como esta alternncia muito rpida h impresso de que todos os processos e as thread destes processos so executadas paralelamente.

    Geralmente quando iniciamos um processo com mltiplas threads existe um thread principal que responsvel por gerenciar criar novas threads , quando uma thread finaliza seu trabalho ela entra em thread_yield, que sinaliza que a thread encerrou seu trabalho e esta liberando a CPU para outra thread ou processo.

    User-Level Thread

    As ULT(User-Level Thread) so escalonadas pelo programador, tendo a grande vantagem de cada processo ter como usar um algoritmo de escalonamento que melhor se adapte a situao, o SO no tem a obrigao de fazer o escalonamento destas threads, em geral ele nem sabe que as threads existem, estas threads so geralmente mais rpidas que as KLT, pois dispensam a chamada ao SO para escalonar evitando assim uma mudana total de contexto do processador memria e diversas outros nveis para alternar os processos. Neste modo o programador responsvel por criar, executar, escalonar e destruir a thread. Vamos a um exemplo prtico, um processo chamado P1, este processo pode ter varias threads, neste exemplo ele tem P1T1, P1T2, P1T3, ento quando o SO da o CPU para o processo P1 cabe a ele destinar qual thread ser executada, caso esta thread use todo processo do quantum, o SO chamara outro processo, e quando o processo P1 voltar a executar P1T1 voltar a ser executada e continuar executando at seu trmino ou interveno de P1, este comportamento no afetar outros processos pois o SO continua escalonando os processos normalmente.

    Kernel-Level Thread

    As KLT so escalonadas diretamente pelo SO, comumente so mais lentas que as Threads ULT pois a cada chamada elas necessitam consultar o SO, exigindo assim a mudana total do contexto do processador memria e outros nveis necessrios para alternar um processo. Vamos citar outro exemplo pratico, um processo chamado P2 com as threads P2T1, P2T2, P2T3, e outro processo chamado P3 com as threads P3T1, P3T2, P3T3. SO no entregara a CPU ao processo e sim a uma thread deste processo, note agora que o SO

  • 22

    responsvel por escalonar as threads e este SO tem que suportar Threads, a cada interupo de thread necessrio mudar todo o contexto de CPU e memria porm as threads so independentes dos processos, podemos executar ento P3T2, P2T1, P2T2, P2T1, P3T1,P2T3,P3T3, ou seja a ordem em que o escalonador do SO determinar. J com as threads em modo usurio no conseguimos ter a mesma independncia, pois quando passamos o controle ao processo enquanto seu quantum for vlido ele ir decidir que thread ir rodar. Um escalonamento tpico do SO onde o escalonador sempre escolhe a thread de maior prioridade, que so divididas em duas classes que so Real Time e Normal, cada thread ganha uma prioridade ao ser criada que varia de 0 a 31(0 a menor e 31 maior), processos com prioridade 0 a 15(Real Time) tem prioridade ajustada no tempo de execuo como nos processos de E/S que tem a prioridade aumentada variando o perifrico, processos com prioridade 16 a 31 so executados at terminar e no tem prioridade alterada, mas somente uma thread recebe a prioridade zero que a responsvel por zerar pginas livres no sistema. Existe ainda uma outra classe chamada de idle, uma classe mais baixa ainda, s executada quando no existem threads aptas, threads dessa classe no interferem na performance.

    2.2 Deadlocks

    Deadlock (blocagem, impasse), no contexto do sistemas operacionais (SO), caracteriza uma situao em que ocorre um impasse e dois ou mais processos ficam impedidos de continuar suas execues, ou seja, ficam bloqueados. Trata-se de um problema bastante estudado no contexto dos Sistemas Operacionais, assim como em outras disciplinas, como banco de dados, pois inerente prpria natureza desses sistemas.

    O deadlock ocorre com um conjunto de processos e recursos no-preemptveis, onde um ou mais processos desse conjunto est aguardando a liberao de um recurso por um outro processo que, por sua vez, aguarda a liberao de outro recurso alocado ou dependente do primeiro processo.

    A definio textual de deadlock normalmente, por ser muito abstrata, mais difcil de se compreender do que a representao por grafos, que ser resumida mais adiante. No entanto, algumas observaes so pertinentes:

    O deadlock pode ocorrer mesmo que haja somente um processo no SO, considerando que este processo utilize mltiplos threads e que tais threads requisitem os recursos alocados a outros threads no mesmo processo;

    O deadlock independe da quantidade de recursos disponveis no sistema;

    Normalmente o deadlock ocorre com recursos como dispositivos, arquivos, memria etc. Apesar da CPU tambm ser um recurso para o SO, em geral um recurso facilmente preemptvel, pois existem os

  • 23

    escalonadores para compartilhar o processador entre os diversos processos, quando trata-se de um ambiente multitarefa.

    Um exemplo onde erros de deadlock ocorrem no banco de dados. Suponha que uma empresa tenha vrios vendedores e vrios pontos de venda/caixas. O vendedor A vendeu 1 martelo e 1 furadeira. O sistema ento solicita o travamento do registro da tabela ESTOQUE que contm o total de martelos em estoque e em seguida solicita o travamento do registro que contm o total de furadeiras em estoque. De posse da exclusividade de acesso aos dois registros, ele l a quantidade de martelos, subtrai 1 e escreve de novo no registro, o mesmo com o registro de furadeiras. Observe, no entanto que existem diversos caixas operando simultaneamente de forma que se algum outro caixa naquele exato instante estiver vendendo um furadeira, ele ficar de aguardando a liberao do registro das furadeiras para depois alter-lo. Note que ele s altera os registro depois que for dada exclusividade para ele de TODOS os recursos que ele precisa, ou seja, de todos os registro. Suponha agora que em outro caixa a venda foram vendidos 1 furadeira e 1 martelo e que o outro caixa solicitou o travamento do registro com a quantidade de furadeiras e agora quer o acesso ao de martelos, no entanto o de martelos est travado para o primeiro caixa. Nenhum deles devolve o recurso (registro) sobre o qual tem exclusividade e tambm no consegue acesso ao outro registro que falta para terminar a operao. Isto um deadlock.

    Condies necessrias para a ocorrncia de deadlock

    No texto acima, foi dito que o deadlock ocorre naturalmente em alguns sistemas. No entanto, necessrio ressaltar que tais sistemas precisam obedecer a algumas condies para que uma situao de deadlock se manifeste.

    Essas condies esto listadas abaixo, onde as trs primeiras caracterizam um modelo de sistema, e a ltima o deadlock propriamente dito: processos que estejam de posse de recursos obtidos anteriormente podem solicitar novos recursos. Caso estes recursos j estejam alocados a outros processos, o processo solicitante deve aguardar pela liberao do mesmo;

    Condio de no-preempo: recursos j alocados a processos no podem ser tomados a fora. Eles precisam ser liberados explicitamente pelo processo que detm a sua posse;

    Condio de espera circular: deve existir uma cadeia circular de dois ou mais processos, cada um dos quais esperando por um recurso que est com o prximo membro da cadeia.

    Condio de excluso mtua: cada recurso ou est alocado a exatamente um processo ou est disponvel;

    Condio de posse-e-espera: cada processo pode solicitar um recurso, ter esse recurso alocado para si e ficar bloqueado esperando por um outro recurso;

  • 24

    Representao de deadlock em grafos

    Exemplo de representao de deadlock em grafos de alocao de recursos, com dois processos A e B, e dois recursos R1 e R2.

    O deadlock tambm pode ser representado na forma de grafos dirigidos, onde o processo representado por um crculo e o recurso, por um quadrado. Quando um processo solicita um recurso, uma seta dirigida do crculo ao quadrado. Quando um recurso alocado a um processo, uma seta dirigida do quadrado ao crculo.

    Na figura do exemplo, podem-se ver dois processos diferentes (A e B), cada um com um recurso diferente alocado (R1 e R2). Nesse exemplo clssico de deadlock, facilmente visvel a condio de espera circular em que os processos se encontram, onde cada um solicita o recurso que est alocado ao outro processo.

    Tratamento de deadlock

    As situaes de deadlock podem ser tratadas ou no em um sistema, e cabe aos desenvolvedores avaliar o custo/benefcio que essas implementaes podem trazer. Normalmente, as estratgias usadas para detectar e tratar as situaes de deadlocks geram grande sobrecarga, podendo at causar um dano maior que a prpria ocorrncia do deadlock, sendo, s vezes, melhor ignorar a situao.

    Existem trs estratgias para tratamento de deadlocks:

    Ignorar a situao; Detectar o deadlock e recuperar o sistema; e Evitar o deadlock;

    Algoritmo do Avestruz (Ignorar a situao)

    A estratgia mais simples para tratamento (ou no) do deadlock, conhecida como Algoritmo do Avestruz, simplesmente ignor-lo. Muitos defendem que a

  • 25

    freqncia de ocorrncia deste tipo de evento baixa demais para que seja necessrio sobrecarregar a CPU com cdigos extras de tratamento, e que, ocasionalmente, tolervel reiniciar o sistema como uma ao corretiva.

    Detectar o deadlock e recuperar o sistema

    Nessa estratgia, o sistema permite que ocorra o deadlock e s ento executa o procedimento de recuperao, que resume-se na deteco da ocorrncia e na recuperao posterior do sistema. na execuo desse procedimento que ocorre a sobrecarga, pois existem dois grandes problemas: primeiramente, como/quando detectar o deadlock e depois, como corrigi-lo.

    Para detectar o deadlock, o sistema deve implementar uma estrutura de dados que armazene as informaes sobre os processos e os recursos alocados a eles. Essas estruturas devero ser atualizadas dinamicamente, de modo que reflitam realmente a situao de cada processo/recurso no sistema.

    S o mero procedimento de atualizao dessas estruturas j gera uma sobrecarga no sistema, pois toda vez que um processo aloca, libera ou requisita um recurso, as estruturas precisam ser atualizadas.

    Alm disso, o SO precisa verificar a ocorrncia da condio de espera circular nessas estruturas para a efetiva deteco do deadlock. Esse procedimento, por sua vez, gera outra sobrecarga, que pode ser mais intensa se no for definido um evento em particular para ser executado, como a liberao de um recurso, por exemplo. Assim, ou o SO verifica periodicamente as estruturas (o que no aconselhvel, pois pode aumentar consideravelmente o tempo de espera dos processos no-bloqueados), ou pode-se implementar uma poltica, onde o SO verifica as estruturas quando o mesmo realizar algum procedimento de manuteno do sistema, por exemplo.

    Finalmente, s aps detectar a presena do deadlock no sistema, o SO precisa corrigi-lo, executando um procedimento de recuperao.

    Quanto deteco do deadlock, vamos apresentar uma das tcnicas usadas para detectar a ocorrncia de deadlock em sistemas que possuem vrios recursos de cada tipo.

    Deteco de deadlock com vrios recursos de cada tipo

    O algoritmo de deteco de deadlock com vrios recursos de cada tipo baseia-se em um ambiente que possua vrios recursos do mesmo tipo e os processos solicitam apenas pelo tipo de recursos, no especificando qual recurso desejam utilizar.

    Assim, um processo pode requisitar uma unidade de CD para leitura. Se o sistema possuir duas, o processo pode utilizar a que estiver disponvel, em vez de especificar uma delas. Dessa forma, o processo solicita o recurso pelo tipo, sem discriminao.

  • 26

    O algoritmo para essa deteco trabalha com duas variveis, trs matrizes unidimensionais (vetores) e duas matrizes bidimensionais, descritas a seguir:

    Estruturas: o n: Varivel inteira. Representa a Quantidade de Processos Ativos; o m: Varivel inteira. Representa a Quantidade de Tipos de

    Recursos;

    o Matriz E = : Matriz unidimensional, de tamanho m. Representa a Matriz de Recursos Existentes;

    o Matriz A = : Matriz unidimensional, de tamanho m. Representa a Matriz de Recursos Atualmente Disponveis;

    o Matriz W = : Matriz unidimensional, de tamanho m. Representa uma Matriz Auxiliar, presente somente para facilitar o clculo durante a execuo do algoritmo;

    o Matriz C = : Matriz bidimensional, de tamanho n x m. Representa a Matriz de Alocao Corrente;

    o Matriz R = : Matriz bidimensional, de tamanho n x m. Representa a Matriz de Recursos Requisitados.

    Faa (para preenchimento das estruturas): 1. Preencher a Matriz E com as quantidade de instncias de cada

    tipo de recurso; 2. Preencher a Matriz C com as quantidade de instncias de cada

    tipo alocadas aos processos, sendo que a somatria de cada coluna da Matriz C deve ser menor ou igual quantidade do recurso correspondente na Matriz E (os processos nunca podem requisitar mais recursos que existentes no sistema);

    3. Preencher a Matriz W com o resultado da subtrao da quantidade de cada recurso da Matriz E com o valor do somatrio de cada coluna do recurso correspondente da Matriz C, ou seja:

    4. Preencher inicialmente a Matriz A com os valores da Matriz W.

    Note que: ; 5. Preencher a Matriz R com as prximas requisies dos

    processos, seguindo as mesmas regras da Matriz C.

    Faa (para deteco do deadlock): 1. Inicialmente, desmarcar todos os processos;

  • 27

    2. Para um processo Pi desmarcado, verificar se todos os elementos da linha i na Matriz R so menores ou iguais aos da Matriz A;

    3. Se for, ento marque o execute o processo Pi e libere os recursos requisitados pelo processo na Matriz C (adicionar a linha i da Matriz C na Matriz A);

    4. Retornar ao passo 2.

    A lgica do algoritmo a seguinte: cada processo considerado como apto a ser executado at que a deteco prove o contrrio. A deteco apenas verifica se os processos requisitam mais recursos do que esto disponveis, o que caracteriza um deadlock. Caso o processo requisite uma quantidade disponvel, ento ele pode ser executado, e os recursos que foram solicitados antes podem tambm ser liberados de volta ao sistema, o que pode permitir que outros processos tambm concluam suas execues e liberem os recursos.

    Um exemplo do preenchimento das matrizes encontra-se na figura abaixo, considerando-se n=2 e m=3.

    Exemplo do preenchimento das matrizes do algoritmo de deteco de deadlock com vrios recursos de cada tipo. 2.3 - Gerenciamento de memria

    Gerenciamento de memria um complexo campo da cincia da computao e so constantemente desenvolvidas vrias tcnicas para torn-la mais eficiente. Em sua forma mais simples, est relacionado em duas tarefas essenciais:

    Alocao: Quando o programa requisita um bloco de memria, o gerenciador o disponibiliza para a alocao;

    Reciclagem: Quando um bloco de memria foi alocado, mas os dados no foram requisitados por um determinado numero de ciclos, esse liberado e pode ser reutilizado para outra requisio.

  • 28

    Gerncia de Memria

    A cada dia que passa os programadores necessitam de mais memria e mais programas rodando simultaneamente para poderem tratar cada vez mais informaes. O tratamento necessrio da memria utilizada no uma tarefa fcil de ser implementada. Existem vrios requisitos que devem ser observados para o correto funcionamento, tais como, Segurana, Isolamento, Performance, entre outros. Para isto a funo de gerenciar a memria passa a ser do sistema operacional e no mais do aplicativo.

    Alocao

    A alocao de memria pode ser:

    Alocao esttica: Deciso tomada quando o programa compilado. Alocao dinmica: Deciso adiada at a execuo. (Permite

    swapping)

    Fragmentao

    Desperdcio de pginas de memria alocadas

    Pode ser de dois tipos: interna e externa. Interna: Ocorre quando o processo no ocupa inteiramente os blocos de memria (pginas) reservados para ele. Geralmente acontece pois o tamanho do processo no um mltiplo do tamanho da pgina de memria, o que acarreta sobra de espao na ltima pgina alocada.

    Externa: Ocorre medida que os programas vo terminando e deixando lacunas cada vez menores de espaos, o que os torna inutilizveis.

    Estratgias para atacar o problema com o algoritmos First-fit, Best-fit, Worst-fit e Next-fit

    Paginao

    Quebra a memria do processo permitindo espaos de endereamento no contguos.

    TLB

    A Translation Lookaside Buffer (TLB) um conjunto de registradores especiais que so super rpidos. Cada registrador tem duas partes: chave e valor. Dada uma chave, busca-se o valor correspondente. Geralmente, 64 entradas, no mximo, e a busca feita em todos os registradores simultaneamente.

    Memria Virtual uma tnica poderosa e sofisticada de gerncia de memria, onde as memrias principal e secudria so combinadas, dando ao usurio a iluso de existir uma memria muito maior que a capacidade real da memria principal. O conceito desta tcnica fundamenta-se em no vincular o

  • 29

    endereamento feito pelo programa aos endereos fsicos da memria principal. Desta forma, programas e suas estruturas de dados deixam de estar limitados ao tamanho da memria fsica disponvel, pois podem possuir endereos associados memria secundria.

    Algoritmos de Substituio de Pgina

    Algoritmo timo Algoritmo No Usada Recentemente Algoritmo FIFO Algoritmo Segunda Chance Algoritmo do relgio Menos Recentemente Usada WSClock

    Gerenciamento manual de memria

    Em modelos de gerenciamento manual, podem ocorrer os problemas conhecidos como vazamento de memria, que acontece quando uma quantidade de memria alocada e no liberada ainda que nunca seja utilizada. Isto ocorre quando objetos perdem a referncia sem terem sido liberados, mantendo o uso do espao de memria.

    Garbage Collector

    o gerenciamento automtico de memria, tambm conhecido como coletores, sendo conhecido em Portugal como reciclagem automtica de memria. Este servio libera os blocos de memria que no sejam mais usados por um programa automaticamente.

    As vantagens desse tipo de gerenciamento so:

    Liberdade do programador: No obrigado ficar atento aos detalhes da memria;

    Menos bugs de gerenciamento de memria: Por se tratar de uma tcnica mais confivel;

    Gerenciamento automtico: Mais eficiente que o manual;

    E entre as desvantagens, podemos citar:

    O desenvolvedor tende a estar mais desatento em relao a detalhes de memria;

    O gerenciador automtico ainda apresenta limitaes.

    Quando deixam de existir referncias a um objeto, este passa a ser considerado apto a ser "coletado" pelo garbage collector, que significa dizer que ser removido da memria, deixando-a livre para uso por outros objetos.

    Os algoritmos de garbage collection operam de um modo que permite classific-los em duas grandes famlias:

  • 30

    identificao directa: por contagem de referncias (reference counting); identificao indirecta: por varrimento (tracing), que pode incluir tambm

    compactao da memria livre; cpia; ou geracional (utilizado nas mquinas virtuais Java e .Net)

    Gerenciamento de memria no DOS

    O IBM PC original foi projetado com uma memria RAM de 1024KB

    640KB o Para o sistema operacional e programas

    384KB - rea de memria superior (Upper Memory Area) ou UMA o Para os adaptadores diversos como EGA & VGA, MDA,

    adaptadores CGA, e de redes. o ROM BIOS e Shadow RAM. o E mais tarde, rea de paginao de expanso de memria (EMS)

    vista mais adiante.

    Logo depois, foi provado que esta quantidade de memria se tornaria insuficiente para as necessidades futuras.

    Entretanto, os sistemas operacionais e aplicativos desenvolvidos at ento no seriam capazes de reconhecer um endereo de memria superior aos 640KB originais, o que levou os projetistas a desenvolverem ferramentas que executariam esta tarefa.

    Emm386.exe

    o dispositivo de instalao da memria expandida (Expanded Memory) ou EMS. A EMS consistia em toda a memria acima dos 1024KB (1MB) original, em computadores baseados nas tecnologias dos processadores 80286, 80386, i486 ou Pentium. A capacidade mxima de endereamento fica limitada a 32MB e seu acesso atravs de uma paginao de 64KB na rea UMA. Os programas deveriam ser escritos de forma a poderem reconhecer a rea EMS.

    O nome "EMM" vem do ingls Extended Memory Manager.

    Himem.sys

    o dispositivo de instalao da rea de memria alta (High Memory Area), conhecida tambm como HMA. Sua principal funo controlar o uso da memria estendida do computador, de modo que dois ou mais aplicativos ou dispositivos no utilizem o mesmo endereo de memria ao mesmo tempo. Para as primeiras verses do Windows, o Himem.sys fornecia suporte para que este fosse executado em modo protegido.

    O nome Himem vem do ingls High Memory.

    Smartdrv.exe

  • 31

    o gerenciador de memria cache de disco (no Novell DOS 7, chamado de Nwcache.exe). Ambos possuem a mesma funo que a de minimizar o acesso ao disco, carregando um bloco de informaes na memria para processamento, ao invs de ir buscar aos poucos no disco. Existiram tambm placas de expanso chamadas de Disk Accelerator, que possuem um hardware prprio para esta tarefa, como por exemplo o 'Disk Accelerator PROMISE DC4030VL. Atualmente, esta tcnica desempenhada por memrias localizadas na placa principal do sistema (cache on-board) resultando, portanto, dois modos de gerenciamento de memria cache de disco: por software e por hardware.

    O nome Smartdrv uma abreviao do ingls Smart Drive.

    2.5 Entrada e Sada

    GERNCIA DE ENTRADA E SADA Uma das principais funes de um SO controlar os dispositivos de entrada e sada(E/S), fornecendo uma interface de uso adequada. Esse captulo mostra como o SO interage com os dispositivos de E/S, enviando comandos e capturando suas interrupes. A gerncia de E/S est intimamente relacionada com os aspectos de hardware de um computador. Princpios bsicos de hardware Um perifrico (ou dispositivo de E/S) qualquer dispositivo conectado a um computador de forma a possibilitar a interao do computador com o mundo externo. Atualmente, existe uma grande variedade de dispositivos, desde aqueles desenvolvidos para permitir a comunicao do homem com o computador (teclado, mouse, monitor de vdeo, etc) at dispositivos que possibilitam a comunicao entre computadores (modems, placas de redes, etc), ou ainda aqueles destinados ao armazenamento de informaes (unidades de fita, disquetes, disco rgido, CD-ROM, etc). Apesar dessa diversidade, existe uma razovel padronizao na forma de acessar (acionar) esses perifricos. De acordo com o sentido do fluxo de dados entre o computador e o dispositivo, esses podem ser divididos em perifricos de entrada, perifricos de sada, ou ainda perifricos de entrada e sada. Um perifrico conectado ao computador atravs de um componente de hardware denominado interface. Essa, por sua vez, interconectada aos barramentos internos do computador. Para tratar a diversidade, a complexidade, e as diferentes formas de operaes de cada perifrico, as interfaces empregam no seu projeto um outro componente, o controlador, que nada mais que um processador projetado especificamente para realizar uma funo, como, por exemplo, controlar um disco rgido. A UCP se comunica com o controlador atravs de um conjunto de registradores situados na interface. Tipicamente, so 3 registradores: registrador de dado, registrador de status e registrador de comando. Por exemplo, para escrever um dado em um dispositivo de sada, seriam realizadas as seguintes duas operaes: (1) UCP coloca o dado no registrador de dados, (2) UCP coloca comando write no registrador de comando. A partir da, o controlador comanda

  • 32

    as aes do perifrico, de forma independente da UCP. No final das aes, o controlador coloca o resultado da operao (sucesso ou falha) no registrador de status e gera uma interrupo. O caso de no haver mecanismo de interrupo considerado adiante. A funo bsica de um controlador implementar um conjunto de comandos para o seu dispositivo. O controlador vai traduzir cada ordem colocada no registrador de comando numa seqncia especfica de acionamentos eletrnicos, eltricos e mecnicos que iro realizar a operao solicitada. Evidentemente, cada tipo de perifrico necessita de um controlador diferente. Contudo, apesar da grande variedade de dispositivos, no d para negar que existe uma boa padronizao na forma de conect-los ao computador e na forma de acion-los atravs da UCP. Os dispositivos de E/S, dependendo de sua interconexo fisica s interfaces, podem ser do tipo serial ou paralelo. Uma interface serial aquela em que existeapenas uma linha para transmitir dados. Nesse caso, um byte vai ser transferido como uma seqncia de bits. Os modems, alguns tipos de mouses e impressoras so exemplos de dispositivos seriais. Uma interface paralela possui vrias linhas para os dados, permitindo assim que vrios bits sejam transferidos simultaneamente (em paralelo) entre o dispositivo de E/S e a interface. O nmero de linhas corresponde normalmente ao nmero de bits que compem um byte (8 bits) ou palavra (n x 8 bits). As impressoras paralelas so exemplos tpicos desse tipo de dispositivo. Acesso aos registradores dos perifricos Conforme visto anteriormente, a UCP enxerga um perifrico atravs de um conjunto de registradores, os quais registram ordens, fornecem o estado de uma operao, e permitem a leitura (escrita) de dados do (no) perifrico. Esses registradores residem fisicamente no hardware da interface e podem ser acessados pela UCP atravs de duas tcnicas distintas: entrada e sada mapeada em espao de E/S ou entrada e sada mapeada em memria. A opo por uma das tcnica feita em tempo de projeto do computador. Na primeira (mapeamento em espao de E/S), o processador possui instrues de mquina prprias para operaes de E/S e estas instrues especificam registradores de perifricos. Nesse tipo de processador existem dois espaos de endereamento distintos: o espao normal, que corresponde memria principal e o espao de E/S, que corresponde aos registradores dos perifricos. Um conjunto de instrues (do estilo load, store, move) acessa a memria normal e outro conjunto (as instrues de E/S, do estilo in e out) acessa a memria de E/S. Enquanto a instruo move end,dado representa escrever dado na posio de memria end, a instruo out end,dado representa escrever dado no registrador de algum dispositivo. Observe que, numericamente, o valor de end pode ser o mesmo nos dois casos, o que faz a diferena a instruo empregada. No mapeamento em memria, o espao de endereamento nico (s existe uma memria), mas alguns endereos representam registradores de (controladores de) perifricos. Em tempo de projeto do computador, so reservados alguns endereos da memria principal para representar registradores de perifricos. Esses endereos no correspondero a palavras

  • 33

    de memria, mas sim a registradores de dispositivos. Com essa tcnica, qualquer perifrico pode ser programado atravs de instrues de acesso memria do estilo mov end,dado. Se end um endereo correspondente a um controlador de dispositivo, o dado ser escrito no registrador do dispositivo (o valor de dado ser interpretado segundo a funo especfica desse registrador). Interao entre a UCP e os controladores de perifricos Independentemente do tipo de mapeamento utilizado, a interao entre a UCP e a interface (controlador), para realizar operaes de E/S, pode acontecer de trs maneiras diferentes: E/S programada, via interrupes e acesso direto memria (DMA). E/S programada Essa tcnica usada quando no h sistema de interrupo (nos computadores antigos era assim, hoje a tcnica s usada em mquinas simples). Com esta tcnica, toda interao entre a UCP e o controlador de responsabilidade do programador. O ciclo de funcionamento baseado no envio de um comando ao controlador e na espera de sua realizao. Por exemplo, o processador envia um comando de leitura ao controlador e, em seguida, fica testando continuamente (em busy loop) o registrador de estado para verificar se o dado solicitado j est disponvel. Em caso afirmativo, o processador efetua a leitura. O problema desse mtodo que as operaes de E/S so muito lentas em comparao com as operaes de clculo. Utilizar continuamente o processador para verificar o andamento de uma operao de E/S representa um desperdcio muito grande de tempo de clculo. Uma soluo paliativa inserir operaes de clculo entre as verificaes sucessivas do estado da operao de E/S. Esse procedimento de verificar periodicamente o estado de uma operao de E/S denominado de polling. O emprego de polling reduz o desperdcio de tempo do processador, mas introduz outro problema: determinar a freqncia de sua realizao. Se a freqncia muito alta, h desperdcio de tempo, principalmente se o dispositivo realmente lento. Por outro lado, efetuar o polling com uma freqncia baixa pode acarretar esperas desnecessrias por parte do dispositivo de E/S, ou ainda, o que pior, perda de informaes (este problema existe nas interfaces de comunicao que possuem buffers de tamanho limitado para a recepo de dados: a no leitura dos dados recebidos em um certo perodo de tempo pode acarretar perdas por sobre-escrita). O ideal seria que o dispositivo de E/S sinalizasse o processador logo que o dado estivesse disponvel. Comunicao via interrupo O uso do mecanismo de interrupo elimina a necessidade de polling em operaes de E/S. Nesse caso tem-se E/S via interrupes (interrupt driven I/O). Nessa situao, o processador responsvel via software apenas por iniciar uma operao de E/S enviando comandos interface (controlador). Aps, o processador passa a executar outra tarefa, e o controlador, a operao

  • 34

    de E/S. Quando a operao de E/S termina, o controlador interrompe o processador, provocando a execuo do tratador de interrupo, o qual ir acionar o driver do dispositivo. Acesso Direto Memria O emprego de interrupes resolve o problema de determinar o momento exato em que um dispositivo de E/S necessita da ateno do processador, entretanto no auxilia na execuo de outra tarefa bastante importante em operaes de E/S: a transferncia de dados. Para a maioria dos perifricos, o processador responsvel pela leitura de dados na interface e por sua transferncia memria, ou pela leitura na memria e transferncia para a interface. Quando o volume de dados importante, esse procedimento torna-se ineficiente, pois, alm de envolver o processador, essa transferncia representa dois movimentos de dados: um da interface ao processador, e outro do processador memria. Uma soluo para isso transferir diretamente os dados da interface para a memria, o que conseguido por um mecanismo conhecido como DMA (Direct Memory Access). A tcnica de DMA baseia-se no emprego de um hardware especial, o controlador de DMA, para realizar a transferncia de dados entre um dispositivo e a memria. Para tanto, o controlador de DMA possui a capacidade de acessar diretamente a memria, sendo ento conectado fisicamente ao barramento de dados e de endereos do computador. O controlador de DMA possui internamente uma srie de registradores utilizados pela UCP para programar a transferncia de dados. Tipicamente, tem um par de registradores para o armazenamento dos endereos fonte e destino da transferncia, um registrador que determina quantos bytes devem ser transferidos, um registrador de comando e um de estado. Aps acionar o DMA, o processador pode se dedicar a outra tarefa. No trmino da transferncia, o controlador de DMA sinaliza o processador atravs de uma interrupo de hardware. A tcnica de DMA mais eficiente que as discutidas anteriormente quando a operao de E/S envolve a leitura (ou escrita) de muitos dados, como, por exemplo, uma leitura de disco ou a recepo de uma mensagem em uma rede local. importante observar que tanto o controlador de DMA quanto o processador competem para acessar memria (no esquea que o processador est executando outras tarefas, o que envolve sem dvida acessos memria). Essa disputa pelo acesso memria coordenada pelo que se denomina arbitramento do barramento. Como o mecanismo de acesso memria passa a ser compartilhado, o processador (durante o funcionamento do DMA) ir executar a uma velocidade menor que a normal. Mesmo assim, esse mtodo ser ainda mais eficiente do que usar diretamente o processador para realizar a transferncia via software. Princpios bsicos de software de entrada e sada O subsistema de E/S de um SO um software bastante complexo devido principalmente diversidade de perifricos que ele deve tratar. Mesmo dentro de uma mesma classe de dispositivos, existe uma grande variedade, como

  • 35

    por exemplo, placas de rede com protocolos, tecnologias e velocidades diferentes, ou ainda discos magnticos do tipo SCSI, IDE, EIDE, ZIP, CD-ROM, etc. O objetivo primeiro do subsistema de E/S padronizar ao mximo a forma de acesso aos perifricos. Para atingir esse objetivo, o subsistema de E/S normalmente organizado em uma estrutura de quatro camadas, onde cada camada fornece funes (servios) camada superior. A Figura 5.1 apresenta essa estrutura. A camada mais inferior composta pelo hardware dos dispositivos de E/S. A interface que ela apresenta camada imediatamente superior (drivers de dispositivos) composta pelos mecanismos apresentados na Seo 5.1. Em resumo, o hardware interage com os drivers atravs das interfaces fsicas (paralelas ou seriais) e seus controladores e pelo emprego de interrupes e DMA. A seguir, estudaremos o software de E/S. Drivers de dispositivo A camada inferior de software drivers de dispositivos (device drivers) composta por um conjunto de mdulos, cada um responsvel por implementar o acesso a um dispositivo especfico. O principal objetivo dos drivers esconder as diferenas entre os vrios dispositivos de E/S, fornecendo camada superior uma viso uniforme desses dispositivos atravs de uma interface de programao nica. A camada de drivers responsvel por implementar as rotinas necessrias ao acesso e gerncia de cada dispositivo. nesse nvel que o software de E/S realiza a programao de registradores internos de controladores que compem a interface fsica dos dispositivos e implementa os respectivos tratadores de interrupo. Assim, cada tipo de dispositivo requer um driver apropriado. Essa camada fornece uma abstrao a mais genrica possvel para a camada superior, a de E/S independente do dispositivo.

    Figura Estrutura em camadas do subsistema de E/S.

    Para fornecer esta viso uniforme, os dispositivos de E/S so classificados em duas grandes categorias, de acordo com a unidade de transferncia de dados, que pode ser bloco ou caractere (byte). Em um dispositivo orientado a bloco (block devices), o armazenamento de dados e a transferncia so realizados atravs de blocos de tamanho fixo. Tipicamente, o tamanho de um bloco varia entre 512 bytes e 32 kbytes. As unidades de disco so o exemplo

  • 36

    mais comum de dispositivos orientados a bloco. Os dispositivos orientados a caractere (character devices) realizam as transferncias byte a byte, a partir de um fluxo de caracteres, sem necessidade de considerar uma estrutura qualquer. As portas seriais so exemplos de dispositivos orientados a caractere. Essa classificao, entretanto, no completamente adequada, pois nem todos os dispositivos de E/S podem ser enquadrados em um desses dois grupos. Os temporizadores (relgios) e monitores de vdeo so exemplos de dispositivos que no se enquadram em nenhuma dessas categorias. Existe ainda um outro tipo de dispositivo denominado pseudo-dispositivo (pseudo-devices) que na realidade no corresponde a nenhum perifrico fsico. Ele apenas uma abstrao empregada para adicionar funcionalidades ao SO, explorando a interface padronizada j existente para o tratamento de dispositivos. dessa forma, por exemplo, que o sistema UNIX permite o acesso memria principal como se fosse um disco (ramdisk), ou ainda o emprego do dispositivo nulo (/dev/null) para descartar dados. E/S independente do dispositivo Pode-se dizer que a camada dos drivers a camada dependente dos dispositivos, j que nela esto as funes diretamente ligadas ao hardware dos dispositivos. A camada acima usa apenas a interface abstrata ou virtual (padronizada e mais amigvel) provida pelos drivers e, como tal, pode ser considerada independente de dispositivo. A camada independente de dispositivo implementa funes genricas (no sentido de valer para qualquer dispositivo) e servios gerais de E/S, importantes para o funcionamento do sistema como um todo. As funes genricas so implementadas atravs de estruturas que representam classes de dispositivos e operaes associadas. Internamente, essas estruturas possuem ponteiros para descritores que especializam as operaes. Por exemplo, pode-se ter uma funo genrica read cujo primeiro argumento indica o dispositivo a ser usado. Essa operao genrica vai ser mapeada para uma seqncia de operaes compatveis com o dispositivo em questo, pois ler de um teclado diferente de ler de um disco. Alguns servios sob responsabilidade desta camada so: Escalonamento de E/S: Usado em dispositivos compartilhados por vrios processos (por exemplo, discos magnticos) para melhorar o desempenho dos mesmos. Buferizao: Um exemplo tpico de buferizao ocorre em protocolos de comunicao; o usurio pode desejar enviar, digamos, 64 Kbytes, mas a interface de rede pode enviar apenas seqncias mximas de 4 Kbytes. Nesse caso, necessrio armazenar a requisio do usurio e envi-la em blocos de 4 kbytes. Cache de dados: Consiste em armazenar na memria os blocos de dados freqentemente acessados. Um exemplo so as caches de disco (esse mecanismo ser apresentado quando estudarmos sistemas de arquivos). Alocao de dispositivo: Muitos dispositivos admitem, no mximo, um

  • 37

    usurio por vez. Esse controle normalmente efetuado atravs da tcnica de spooling, que consiste em seqencializar os pedidos de acesso e atend-los um a um. Os pedidos so registrados em uma fila especial (spool), a qual acessada por um processo especial do SO (daemon), o qual atende as requisies de E/S. A gerncia de impressora um exemplo clssico do emprego de spool. Direitos de acesso: Nem todos os usurios podem acessar os dispositivos da mesma forma e cabe ao SO garantir essa proteo. O sistema UNIX, por exemplo, emprega os bits de permisso de acesso a arquivos (rwx - leitura, escrita e execuo) para selecionar o tipo de operao que um determinado usurio, ou grupo de usurios, pode efetuar sobre um dispositivo particular. Tratamento de erros: O software de E/S deve ser capaz de tratar erros, informando camada superior o sucesso ou o fracasso de uma operao. Erros transientes como impossibilidade de transmisso por overflow em buffers podem implicar apenas uma nova tentativa e no no trmino do processo requisitante. Entrada e sada nvel de usurio O usurio v os perifricos atravs dos aplicativos e das linguagens de programao que ele utiliza. No caso de um editor de textos, por exemplo, as operaes de leitura e escrita dos registros do arquivo editado ficam invisveis, sendo feitas automaticamente pelo aplicativo. No caso de uma linguagem de programao, o usurio escreve comandos de E/S de alto nvel (por exemplo, a funo printf() da linguagem C para realizar sada formatada de dados), os quais so traduzidos para um cdigo que contm chamadas para rotinas de uma biblioteca de E/S. O fabricante do compilador responsvel por fornecer uma biblioteca de E/S para cada sistema em que seu compilador v ser utilizado. As funes dessa biblioteca contm as chamadas para o SO. As bibliotecas so fornecidas na forma de um mdulo objeto (relocvel), o qual ligado com o programa do usurio para compor o executvel. importante notar que as bibliotecas de E/S no fazem parte do SO, pois elas so associadas s linguagens de programao e/ou aos aplicativos de desenvol