Sunteți pe pagina 1din 35

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 35

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 35

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 35

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 35

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 35

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 35

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 35

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 35

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 35

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 35

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 dois de computadores. operacionais Foi vm uma grande o mudana mercado no de desenvolvimento dos sistemas operacionais. Atualmente sistemas dominando 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 35

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 35

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 35

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 35

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 35

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 35

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 35

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 35

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 35

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.

5. SOFTWARES UTILITRIOS
Para que o hardware tenha utilidade prtica, deve existir um conjunto de programas, utilizado como interface entre as necessidades do usurio e as capacidades do hardware. A utilizao de softwares adequados s diversas tarefas e aplicaes torna o trabalho dos usurios muito mais simples e eficiente. Utilitrios so softwares relacionados mais diretamente com servios complementares do sistema operacional. Os softwares desenvolvidos pelos usurios so denominados aplicativos.
5.1 Tradutor

Nos primeiros sistemas computacionais, os programas eram desenvolvidos em linguagem de mquina e carregados diretamente na memria principal para execuo. Com o surgimento das primeiras linguagens de montagem ou assembly e das linguagens de alto nvel, o programador deixou de se preocupar com muitos aspectos pertinentes ao hardware. A utilizao dessas linguagens facilitou a construo de programas, a documentao e a manuteno. Apesar das inmeras vantagens proporcionadas pelas linguagens de montagem e de alto nvel, os programas escritos nessas linguagens no esto prontos para ser diretamente executados pelo processador. Para isso, eles tm de passar por uma etapa de converso, onde toda a representao simblica das instrues traduzida para cdigo de mquina. Esta converso realizada por um utilitrio denominado tradutor. O mdulo gerado pelo tradutor denominado mdulo-objeto, que, apesar de estar em cdigo de mquina, na maioria das vezes no pode ser ainda executado. Isso

20 de 35

SISTEMAS OPERACIONAIS NOTAS DE AULA

ocorre em funo de um programa poder chamar sub-rotinas externas e, neste caso, o tradutor no tem como associar o programa principal s sub-rotinas chamadas. Dependendo do tipo de programa-fonte, existem dois tipos distintos de tradutores que geram mdulo-objeto: montador e compilador.

Figura 10: Tradutor O montador (assembler) o utilitrio responsvel por traduzir um programa-fonte em linguagem de montagem em um programa-objeto no executvel. A linguagem de montagem particular para cada processador, assim como a linguagem de mquina, o que no permite que programas assembly possam ser portados entre mquinas diferentes. O compilador o utilitrio responsvel por gerar, a partir de um programa escrito em linguagem de alto nvel, um programa em linguagem de mquina no executvel. Os programas-fonte podem ser portados entre computadores de diversos fabricantes, desde que existam padres para a sintaxe da linguagem. Isso permite o desenvolvimento de aplicaes independentes do equipamento.
5.2 Interpretador

O interpretador considerado um tradutor que no gera mdulo-objeto. A partir de um programa-fonte escrito em linguagem de alto nvel, o interpretador, durante a execuo do programa, traduz cada instruo e a executa imediatamente. Algumas linguagens tipicamente interpretadas so o Basic e o Perl. A maior desvantagem na utilizao de interpretadores o tempo gasto na traduo das instrues de um programa toda vez que este for executado, j que no existe a gerao de um cdigo executvel. A vantagem permitir a implementao de tipos de dados dinmicos, ou seja, que podem mudar de tipo durante a execuo do programa.

21 de 35

SISTEMAS OPERACIONAIS NOTAS DE AULA

5.3 Linker (Ligador)

O linker ou editor de ligao o utilitrio responsvel por gerar, a partir de um ou mais mdulos-objeto, um nico programa executvel. Suas funes bsicas so resolver todas as referncias simblicas existentes entre os mdulos e reservar memria para a execuo do programa.

Figura 11: Linker Para resolver todas as referncias a smbolos, o linker tambm pode pesquisar em bibliotecas do sistema. Bibliotecas so arquivos que contm diversos mdulos-objeto e/ou definies de smbolos. Outra funo do linker a relocao, que determina a regio de memria na qual o programa ser carregado para execuo.
5.4 Loader

O loader ou carregador o utilitrio responsvel por carregar na memria principal um programa para ser executado. O procedimento de carga varia com o cdigo gerado pelo linker; em funo deste, o loader classificado como do tipo absoluto ou relocvel. Se o cdigo executvel for do tipo absoluto, o loader s necessita conhecer o endereo de memria inicial e o tamanho do mdulo para realizar o carregamento. No caso de cdigo relocvel, o programa pode ser carregado em qualquer posio de memria, e o loader responsvel pela relocao no momento do carregamento.
5.5 Depurador

O desenvolvimento de programas est sujeito a erros de lgica, independentemente da metodologia utilizada pelo programador. A depurao um dos estgios desse
22 de 35

SISTEMAS OPERACIONAIS NOTAS DE AULA

desenvolvimento e a utilizao de ferramentas adequadas essencial para acelerar o processo de correo de programas. O depurador o utilitrio que permite ao usurio acompanhar toda a execuo de um programa a fim de detectar erros na sua lgica. Este utilitrio oferece recursos como: acompanhar a execuo de um programa instruo por instruo; possibilitar a alterao e visualizao do contedo das variveis; implementar pontos de parada dentro do programa (breakpoint), de forma que, durante a execuo, o programa pare nesses pontos; especificar que, toda vez que o contedo de uma varivel for modificado, o programa envie uma mensagem (watchpoint).
5.6 Interpretador de Comandos

O interpretador de comandos ou shell permite que o usurio se comunique com o sistema operacional. Quando digitados pelo usurio, os comandos so interpretados pelo shell, que, ao reconhecer a linha de comando, verifica sua sintaxe, envia mensagem de aviso ou erro e faz chamadas a rotinas do sistema. Em geral, o interpretador de comandos no faz parte do sistema operacional. O conjunto de comandos disponveis pelo interpretador conhecido como linguagem de controle ou linguagem de comandos. As linguagens de controle evoluem no sentido de permitir a interao mais amigvel com os usurios, utilizando interfaces grficas como janelas e cones.
5.7 Ativao / Desativao do Sistema

Inicialmente, todo o cdigo do sistema operacional reside na memria secundria. Toda vez que o computador ligado, o sistema operacional tem que ser carregado da memria secundria para a memria principal. Esse procedimento, denominado ativao do sistema (boot), realizado por um programa localizado em um bloco especfico do disco (boot block).

Figura 12: Ativao do sistema

23 de 35

SISTEMAS OPERACIONAIS NOTAS DE AULA

Alm da carga do sistema operacional, a ativao do sistema tambm consiste na execuo de arquivos de inicializao. Nestes arquivos so especificados procedimentos de customizao e configurao de hardware e software especficos para cada ambiente. Na maioria dos sistemas, tambm existe o processo de desativao ( shutdown). Este procedimento permite que as aplicaes e componentes do sistema operacional sejam desativados de forma ordenada, garantindo sua integridade.

6. ESTRUTURA DOS SISTEMAS OPERACIONAIS


O sistema operacional formado por um conjunto de rotinas que oferecem servios aos usurios, s suas aplicaes e ao prprio sistema. Esse conjunto de rotinas chamado de ncleo do sistema operacional. importante no confundir o ncleo do sistema operacional com aplicaes, utilitrios ou o interpretador de comandos, que acompanham o sistema operacional. As aplicaes so utilizadas pelos usurios e escondem todos os detalhes da interao com o sistema. Os utilitrios, como compiladores e editores de texto, e interpretadores de comandos permitem aos usurios, desenvolvedores e administradores, uma interface amigvel com o sistema.

Aplicaes

Utilitrios

Ncleo do Sistema Operacional

Hardware

Figura 13: Sistema computacional Existe uma grande dificuldade em compreender a estrutura e o funcionamento de um sistema operacional, pois ele no executado como uma aplicao tipicamente seqencial. Os procedimentos do sistema so executados concorrentemente sem uma ordem predefinida, com base em eventos dissociados do tempo (eventos
24 de 35

SISTEMAS OPERACIONAIS NOTAS DE AULA

assncronos). Muitos desses eventos esto relacionados ao hardware e a tarefas internas do prprio sistema operacional. Todas as operaes envolvendo processos so controladas por uma parte do sistema operacional chamada ncleo ou kernel. O ncleo representa somente uma pequena parte do cdigo do S.O., mas est entre os cdigos mais intensamente usados. Por esta razo, o ncleo permanece na memria principal, enquanto outras partes do S.O. so encontradas na memria secundria. As principais funes do ncleo encontradas nos sistemas operacionais so as seguintes: -

tratamento das interrupes e excees; criao e eliminao de processos e threads; sincronizao e comunicao entre processos e threads; escalonamento e controle dos processos e threads; gerncia de memria; gerncia do sistema de arquivos; gerncia dos dispositivos de entrada/sada; suporte a redes locais e distribudas; contabilizao do uso do sistema; auditoria e segurana do sistema.

A estrutura do sistema operacional, ou seja, a maneira como o cdigo do sistema organizado e o inter-relacionamento entre seus diversos componentes, pode variar conforme a concepo do projeto. 6.1 System Calls Uma preocupao que surge nos projetos de sistemas operacionais a implementao de mecanismos de proteo ao ncleo do sistema e de acesso aos seus servios. Caso uma aplicao que tenha acesso ao ncleo realize uma operao que altere sua integridade, todo o sistema poder ficar comprometido e inoperante. As system calls podem ser entendidas como uma porta de entrada para o acesso ao ncleo do sistema e a seus servios. Sempre que um usurio ou aplicao desejar algum servio do sistema, realizada uma chamada a uma de suas rotinas atravs de uma system call. Este termo usado em sistemas Unix, porm em outros sistemas ele apresentado com outros nomes, como system services no OpenVMS e Application Program Interface (API) no Windows. Para cada servio disponvel existe uma system call associada e cada sistema operacional tem seu prprio conjunto de chamadas, com nomes, parmetros e
25 de 35

SISTEMAS OPERACIONAIS NOTAS DE AULA

formas de ativao especficos. Isto explica por que uma aplicao desenvolvida utilizando servios de um determinado sistema operacional no pode ser portada diretamente para um outro sistema.

Figura 14: System call Uma tentativa de criar uma biblioteca de chamadas padronizadas foi proposta pelos institutos ISO e IEEE. O padro POSIX (Portable System Interface for Unix) permitiu que uma aplicao desenvolvida seguindo este conjunto de chamadas pudesse ser executada em qualquer sistema operacional que oferecesse suporte ao padro. Este padro foi incorporado pela maioria dos sistemas operacionais modernos. Atravs dos parmetros fornecidos na system call, a solicitao processada e uma resposta retornada aplicao juntamente com um estado de concluso indicando se houve algum erro. As system calls podem ser divididas por grupos de funo, conforme a tabela abaixo: Funes
Gerncia de processos e threads

System calls
Criao e eliminao de processos e threads Alterao das caractersticas de processos e threads Sincronizao e comunicao entre processos e threads Obteno de informaes sobre processos e threads

Gerncia de memria Gerncia de sistema de arquivos

Alocao e desalocao de memria Criao e eliminao de arquivos e diretrios Abrir e fechar arquivos Alterao das caractersticas de arquivos e diretrios Leitura e gravao de arquivos Obteno de informaes sobre arquivos e diretrios

Gerncia de dispositivos

Alocao e desalocao de dispositivos Operaes de entrada/sada em dispositivos Obteno de informaes sobre dispositivos

De forma simplificada, o comando da linguagem de alto nvel convertido pelo compilador para uma chamada a uma system call especfica, que, quando executada,

26 de 35

SISTEMAS OPERACIONAIS NOTAS DE AULA

verifica a ocorrncia de erros e retorna os dados ao programa de forma transparente ao usurio. 6.2 Modos de Acesso Existem certas instrues que no podem ser colocadas diretamente disposio das aplicaes, pois sua utilizao indevida ocasionaria srios problemas integridade do sistema. As instrues que tm o poder de comprometer o sistema so conhecidas como instrues privilegiadas, enquanto as instrues no-privilegiadas so as que no oferecem risco ao sistema. Para que uma aplicao possa utilizar uma instruo privilegiada, necessrio que no processador seja implementado o mecanismo de proteo conhecido como modos de acesso. Existem dois modos de acesso implementados pelos processadores: modo usurio e modo kernel. Quando o processador trabalha no modo usurio, uma aplicao s pode executar instrues no-privilegiadas, tendo acesso a um nmero reduzido de instrues, enquanto no modo kernel, a aplicao pode ter acesso ao conjunto total de instrues do processador. O modo de acesso de uma aplicao determinado por um conjunto de bits, localizados no registrador de status do processador, ou PSW, que indica o modo de acesso corrente. Atravs desse registrador, o hardware verifica se a instruo pode ou no ser executada pela aplicao. A melhor maneira de controlar o acesso s instrues privilegiadas permitir que o sistema operacional tenha acesso a elas. Sempre que uma aplicao necessita executar uma instruo privilegiada, a solicitao deve ser realizada atravs de uma chamada a uma system call, que altera o modo de acesso do processador do modo usurio para o modo kernel. Caso uma aplicao tente executar uma instruo privilegiada diretamente em modo usurio, o processador sinalizar um erro, uma exceo gerada e a execuo do programa interrompida.

27 de 35

SISTEMAS OPERACIONAIS NOTAS DE AULA

Figura 15: Chamada a uma rotina do sistema

7. ARQUITETURA DE SISTEMAS OPERACIONAIS


7.1 Arquitetura Monoltica A arquitetura monoltica pode ser comparada com uma aplicao formada por vrios mdulos que so compilados separadamente e depois linkados, formando um grande e nico programa executvel, onde os mdulos podem interagir livremente.

Figura 16: Arquitetura monoltica

28 de 35

SISTEMAS OPERACIONAIS NOTAS DE AULA

Os primeiros sistemas operacionais foram desenvolvidos com base nesse modelo, o que tornava seu desenvolvimento e, principalmente, sua manuteno bastante difceis. Foi adotada no MS-DOS e nos primeiros Unix.

7.2 Arquitetura de Camadas Com o aumento da complexidade e do tamanho do cdigo dos sistemas operacionais, tcnicas de programao estruturada e modular foram incorporadas ao seu projeto. Na arquitetura de camadas, o sistema dividido em nveis sobrepostos. Cada camada oferece um conjunto de funes que podem ser utilizadas apenas pelas camadas superiores. O primeiro sistema a adotar esta abordagem foi o THE e posteriormente o MULTICS e o OpenVMS. A vantagem da estruturao em camadas isolar as funes do sistema operacional, facilitando sua manuteno e depurao, alm de criar uma hierarquia de nveis de modos de acesso, protegendo as camadas mais internas. Uma desvantagem para o modelo o desempenho. Cada nova camada implica uma mudana no modo de acesso.

Figura 17: Arquitetura em camadas do OpenVMS Atualmente, a maioria dos sistemas operacionais utiliza o modelo de duas camadas, onde existem os modos de acesso usurio (no-privilegiado) e kernel (privilegiado). 7.3 Arquitetura Microkernel Uma tendncia nos sistemas operacionais modernos tornar o ncleo do sistema operacional o menor e mais simples possvel. Para implementar esta idia, os servios de sistema so disponibilizados atravs de processos, onde cada um responsvel por oferecer um conjunto especfico de funes, como gerncia de arquivos, gerncia de processos, gerncia de memria e escalonamento.

29 de 35

SISTEMAS OPERACIONAIS NOTAS DE AULA

Sempre que uma aplicao deseja algum servio, realizada uma solicitao ao processo responsvel. Neste caso, a aplicao que solicita o servio chamada de cliente, enquanto o processo que responde solicitao chamado de servidor. Um cliente solicita um servio enviando uma mensagem para o servidor e este responde ao cliente atravs de uma outra mensagem. A principal funo do ncleo realizar a comunicao, ou seja, a troca de mensagens entre cliente e servidor. O conceito de arquitetura microkernel surgiu no sistema operacional Mach, na dcada de 1980. A utilizao deste modelo permite que os servidores executem em modo usurio, ou seja, no tenham acesso direto a certos componentes do sistema. Apenas o ncleo do sistema executa no modo kernel. Como conseqncia, se ocorrer um erro em um servidor, este poder parar, mas o sistema no ficar inteiramente comprometido, aumentando assim a sua disponibilidade.

Figura 18: Arquitetura Microkernel Como os servidores se comunicam atravs de troca de mensagens, no importa se os clientes e servidores so processados em um sistema com um nico processador, com mltiplos processadores ou em ambientes distribudos. Alm disso, a arquitetura microkernel permite isolar as funes do sistema operacional por diversos processos servidores pequenos e dedicados a servios especficos, tornando o ncleo menor, mais fcil de depurar, aumentando sua confiabilidade. Apesar de todas as vantagens, sua implementao muito difcil. Primeiro existe o problema do desempenho devido necessidade de mudana de modo de acesso a cada troca de mensagem. Outro problema que certas funes do sistema operacional exigem acesso direto ao hardware, como operaes de E/S.

30 de 35

SISTEMAS OPERACIONAIS NOTAS DE AULA

Na realidade, o que implementado mais usualmente uma combinao do modelo de camadas com a arquitetura microkernel. O ncleo do sistema, alm de ser responsvel pela comunicao, passa a incorporar outras funes crticas, como escalonamento, tratamento de interrupes e gerncia de dispositivos.

8. PROJETO DO SISTEMA
O projeto de um sistema operacional bastante complexo e deve atender a diversos requisitos, algumas vezes conflitantes, como confiabilidade, portabilidade, manutenibilidade, flexibilidade e desempenho. O projeto do sistema ir depender muito da arquitetura do hardware a ser utilizado e do tipo de sistema que se deseja construir. Os primeiros sistemas foram desenvolvidos integralmente em Assembly e o cdigo possua cerca de um milho de instrues. Com a evoluo dos sistemas e o aumento do nmero de linhas de cdigo para algo perto de 20 milhes, tcnicas de programao modular foram incorporadas ao projeto, alm de linguagens de alto nvel, como PL/1 e Algol. Nos sistemas operacionais atuais, o nmero de linhas de cdigo pode chegar a mais de 40 milhes, sendo grande parte do cdigo escrita em linguagem C/C++, utilizando em alguns casos programao orientada a objetos. Uma desvantagem do uso de linguagens de alto nvel em relao programao Assembly a perda de desempenho. Por isto, as partes crticas do sistema, como os device-drivers, o escalonador e as rotinas de tratamento de interrupes, so desenvolvidas em Assembly. Um importante princpio no projeto de sistemas operacionais a separao no projeto do sistema das polticas e dos mecanismos. Uma poltica define o que deve ser feito, enquanto o mecanismo define como implementar uma determinada poltica.

31 de 35

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, 3a edio, Rio de Janeiro: Ed. LTC, 2002 FLYNN, Ida M., McHOES, Ann M., Introduo aos Sistemas Operacionais, So Paulo: Pioneira Thomson Learning, 2002

32 de 35

SISTEMAS OPERACIONAIS NOTAS DE AULA

10. 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 a grande diferena entre sistemas monoprogramveis e sistemas multiprogramveis?

7. 8.

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

9. 10.

Quais os tipos de sistemas multiprogramveis? 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 utiliz-los?

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?


33 de 35

SISTEMAS OPERACIONAIS NOTAS DE AULA

16. 17. 18.

O que um sistema fracamente acoplado? Qual a diferena entre sistemas operacionais de rede e sistemas operacionais distribudos? Por que o cdigo-objeto gerado pelo tradutor ainda no pode ser executado? Por que a execuo de programas interpretados mais lenta que a de programas compilados?

19. 20. 21. 22.

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

23. 24. 25.

Explique o processo de ativao (boot) do sistema operacional. O que ncleo do sistema e quais so suas principais funes? 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?
34 de 35

SISTEMAS OPERACIONAIS NOTAS DE AULA

30.

Compare as arquiteturas monoltica e de camadas. Quais as vantagens e desvantagens de cada arquitetura?

31. 32.

Quais as vantagens do modelo de mquina virtual? 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?

35 de 35

S-ar putea să vă placă și