sis to per 2001

Upload: diego-lima-de-oliveira

Post on 13-Jul-2015

195 views

Category:

Documents


0 download

TRANSCRIPT

Universidade Estadual PaulistaInstituto de Biocincias, Letras e Cincias ExatasDepartamento de Cincia da Computao e Estatstica

Apostila de Projeto de Sistemas Operacionais

Prof. Dr. Norian MarranghelloOutubro de [email protected] Rua Cirstvo Colombo, 2265 So Jos do Rio Preto, SP C.E.P.15054-000; Tel: +17 221 2215; Fax: +17 221 2203

ndicendice..................................................................................................................................... 2 Sistemas Distribudos ........................................................................................................... 4Sistemas Centralizados.................................................................................................................5 Sistema em Rede ...........................................................................................................................7 Sistemas Distribudos ...................................................................................................................8 Sistemas Autnomos Cooperativos .............................................................................................9 Algoritmos Distribudos .............................................................................................................10

Projeto de Sistema Operacional ......................................................................................... 10Eficincia ................................................................................................................................................ 10 Flexibilidade ........................................................................................................................................... 11 Consistncia ............................................................................................................................................ 12 Robustez ................................................................................................................................................. 12 Transparncia.......................................................................................................................................... 13

Servios ............................................................................................................................... 14 Modelos de Arquiteturas .................................................................................................... 16 Comunicao ...................................................................................................................... 18O modelo de referncia da ISO .................................................................................................19 O modelo TCP/IP do DoD..........................................................................................................21

Aspectos de projeto ............................................................................................................. 23 Modelo Cliente/Servidor..................................................................................................... 25 Servios de Tempo .............................................................................................................. 27 Ramificaes no Fluxo de Controle de Processos ............................................................ 30 Mecanismos de Linguagem para Sincronizao............................................................... 33Comunicao entre Processos....................................................................................................36Passagem de Mensagens ......................................................................................................................... 37 Chamadas a Procedimentos Remotos ..................................................................................................... 40

Transaes .......................................................................................................................... 44Protocolo de aceitao em duas fases........................................................................................44 Coordenao Distribuda ...........................................................................................................45Por disputa .............................................................................................................................................. 45 Controlada............................................................................................................................................... 46

Algoritmos de Eleio......................................................................................................... 48 Acordo Distribudo ............................................................................................................. 49 Falhas Bizantinas ............................................................................................................... 49Impossibilidade de Consenso .....................................................................................................51 Consenso Distribudo Aleatrio.................................................................................................51

Escalonamento de Processos.............................................................................................. 53Modelos........................................................................................................................................53

2

Escalonamento Esttico..............................................................................................................54 Modelo de Precedncia...............................................................................................................55 Modelo de Comunicao ............................................................................................................57 Custo de Computao.................................................................................................................57 Custo de Comunicao ...............................................................................................................58 Escalonamento Dinmico...........................................................................................................58Algoritmos Genticos ............................................................................................................................. 60

Compartilhamento de Memrias Distribudas ........................................................................61Arquiteturas NUMA ............................................................................................................................... 63

Alocao, Migrao e Cpia de dados ......................................................................................65 Modelos de Consistncia de Memria.......................................................................................66 Sistemas de Memria Cache em Multiprocessadores..............................................................68 Estruturas de Memrias Cache .................................................................................................69 Protocolos de Coerncia .............................................................................................................70 Algoritmos de Gerenciamento de MCDs ..................................................................................71 Localizao de Dados .................................................................................................................72 Sistemas de Arquivos Distribudos............................................................................................73 Implementao de Sistemas de Arquivos Distribudos ...........................................................74 Compartilhamento de Arquivos................................................................................................75 Rplicas de Arquivos e Dados....................................................................................................77 Operaes de Leitura .................................................................................................................78 Operaes de Escrita ..................................................................................................................78

Bibliografia ......................................................................................................................... 79

3

Sistemas DistribudosSegundo Tanenbaum (traduo, pgina 261), um sistema distribudo aquele que roda em um conjunto de mquinas sem memria compartilhada, mquinas essas que mesmo assim aparecem como nico computador para seus usurios. Por outro lado, Chow e Johnson [1 - pgina 27] definem um sistema operacional (SO) distribudo como uma integrao de servios, apresentando uma viso transparente de um sistema com vrios computadores, com controle e recursos distribudos. Este curso tratar de sistemas operacionais distribudos, cujo desenvolvimento tem sido motivado pela: - crescente necessidade de compartilhar recursos e informaes; - reduo rpida do custo de estaes de trabalho; - proliferao do uso de redes; e - maturao das tecnologias de software Inicialmente ser feita uma breve reviso de alguns conceitos importantes sobre sistemas operacionais. A seguir, sero mostradas as diferenas conceituais de quatro categorias de sistemas operacionais. Posteriormente, diversos aspectos de projeto de Sistemas operacionais distribudos sero analisados individualmente. Um sistema operacional um conjunto de programas que fazem a interface entre o hardware da mquina e seus usurios, com o objetivo de tornar seu uso mais eficiente, fcil e seguro. O hardware funciona base de sinais eltricos, os quais so trazidos para uma simbologia binria de modo a facilitar o trabalho dos projetistas dos circuitos lgicos. Esta linguagem de mquinas usada para escrever alguns programas, que executam certas funes bsicas, as quais tornam mais eficiente a manipulao do hardware. Tais funes so utilizadas pelos prprios projetistas de sistemas operacionais para criar outras funes, um pouco mais complexas, que alm de facilitar e tornar mais eficiente o trabalho de seus usurios, garantem que o acesso destes ao sistema no comprometa sua segurana, nem a dos demais usurios do sistema. As funes tratadas pelo sistema operacional so o escalonamento dos processos nos processadores, a coordenao da interao entre tais processos, o gerenciamento dos recursos do sistema, o controle de acesso a esses recursos (portanto sua proteo), a recuperao de erros e a interface com os usurios do sistema. Para suprir tais funes o sistema operacional fornece dois tipos de servios, quais sejam, servios de ncleo e os de sistema. Os servios de ncleo correspondem s funes essenciais, dependentes da arquitetura da mquina. Os servios do sistema correspondem s funes de alto nvel percebidas pelos programas de aplicao. Essas funes do sistema operacional, por um lado, visam ajudar os administradores do sistema a gerenciarem os seus recursos, por outro lado, visam apresentar aos usurios uma mquina estendida mais fcil de lidar. A nfase dos sistemas operacionais tradicionais era no aspecto administrativo, ou seja, em gerir os meios necessrios ao uso da mquina. J, os sistemas operacionais modernos enfatizam seus objetivos, isto , visam fornecer facilidades para sua utilizao. Os sistemas operacionais modernos podem ser classificados de acordo com seu grau de acoplamento em: centralizados, distribudos, em rede e autnomos. Para classific-los levam-se em considerao as trs caractersticas seguintes: 4

-

interoperabilidade: que a capacidade do sistema facilitar a troca de informao entre componentes heterogneos; transparncia: que a capacidade do sistema fornecer uma viso lgica nica ao usurio, independente do sistema fsico disponvel; e autonomia: que a capacidade dos elementos do sistema processarem tarefas independentemente uns dos outros, ao mesmo tempo que cooperam entre si para a soluo de um problema.

Sistemas CentralizadosOs sistemas operacionais tradicionais, utilizados tanto em arquiteturas com vrios processadores como em monoprocessadas, so centralizados. Estes sistemas so fortemente acoplados e a comunicao entre seus processos feita pelo compartilhamento de memria ou por interrupes. Nas fases iniciais, o projeto desses sistemas visavam o controle das interfaces com os usurios e do sistema de entrada e sada, atravs de interrupes e de um conjunto de acionadores de dispositivos. Frente necessidade de aumentar a eficincia do sistema de entrada e sada surgiram os conceitos de entrada e sada virtual e de spooling. Este correspondendo ao armazenamento temporrio, em disco, de operaes de entrada e sada, permitindo assim a minimizao das diferenas de velocidades de processamento entre a UCP e os perifricos; e aquele correspondendo abstrao dos dispositivos de entrada e sada de modo que o sistema operacional possa apresslos como se fossem arquivos, deixando a tarefa conversar diretamente com os dispositivos para os respectivos acionadores. Com o passar do tempo a necessidade de tratar programas grandes deu origem ao conceito de memria virtual, o que permite o tratamento de programas, que utilizem espao de endereamento maior do que o disponvel na memria real, atravs das tcnicas de paginao e segmentao. A contnua necessidade de otimizar o uso dos sistemas deu origem a vrios outros conceitos, que possibilitaram o acesso de diversos usurios simultaneamente. Tais conceitos incluem a multi-programao, o compartilhamento de tempo, o necessrio escalonamento de processos, o controle de concorrncia, o controle de acesso aos arquivos do sistema e a proteo aos arquivos compartilhados. Associado ao acesso de vrios usurios est a necessidade de tratar diversas tarefas o que originou uma srie de tcnicas para viabilizar seu processamento concorrente, incluindo a sincronizao de processos, a recuperao do sistema aps bloqueios fatais e a comunicao entre os processos concorrentes. O sistema operacional um sistema grande, podendo chegar a milhes de linhas de cdigo. Este programa deve ser estruturado em mdulos divididos vertical e horizontalmente. Cada mdulo pode ser entendido como um conjunto de instrues necessrias para executar determinado servio do sistema. Os mdulos so agrupados (horizontalmente) para formar componentes funcionais. Por outro lado, eles so agrupados (verticalmente) em vrias camadas, estrutura na qual s permitida a interao entre mdulos de camadas adjacentes. Todos os recursos do sistema inclusive arquivos e processos, podem ser abstrados como objetos de dados sendo sua representao fsica escondida por uma estrutura de dados abstrata. O modelo de orientao a objetos possibilita uma uniformidade dos mecanismos de acesso e proteo de mdulos do sistema. Devido, a esta uniformidade sua alterao mais fcil, o que melhora a portabilidade do sistema. Contudo, os sistemas operacionais tradicionais so do tipo monoltico, nos quais no h particionamento do ncleo, fora a modularidade normal do cdigo. Nos sistema monolticos os servios do sistema e do ncleo fazem parte de um mesmo programa. Todavia, em sistemas operacionais modernos a preocupao com a eficincia e a portabilidade maior. O ncleo deve ser mnimo, restrito apenas a servios dependentes do hardware ou queles cujo oferecimento fora do ncleo seja muito caro ou difcil. Dentre tais servios esto os ligados ao 5

tratamento de interrupes, ao acionamento de dispositivos e algumas primitivas bsicas para a sincronizao e a comunicao entre processos. Mdulos estes que, por serem dependentes do hardware, no podem ser transportados de uma mquina a outra sem serem recodificados. Servios que tipicamente so includos em um ncleo mnimo so: - mecanismos para a comunicao entre processos; - algumas funes bsicas para o gerenciamento de memria; - algumas primitivas para o gerenciamento e o escalonamento de processos em baixo nvel; e - primitivas para o tratamento de E/S em baixo nvel. As funes de um sistema operacional podem ser divididas em quatro categorias, conforme os recursos que gerenciam; so elas: processos e processadores, memria, entrada e sada, e dados ou arquivos. As funes para o gerenciamento de processos e processadores tem por finalidade bsica definir que processos devem ser executados em cada processador do sistema e quando a execuo deve iniciar. Elas so chamadas, respectivamente, de alocao e escalonamento. Definir quais processos devem ser executados, quando os recursos do sistema estiverem disponveis e/ou certas condies forem atingidas, tem por objetivos minimizar o tempo de resposta dos processos e maximizar a vazo do sistema. Esta definio pode ser feita de forma esttica levando-se em considerao as relaes de precedncia entre os processos, que indicam como os processos devem ser sincronizados. A definio pode tambm ser feita de forma dinmica considerando-se as relaes de dependncia entre processos, que indicam as interaes entre elas. Para permitir a coexistncia de vrios usurios e diversas tarefas no sistema, outras funes so necessrias. H as que viabilizam a multiprogramao, responsveis pela multiplexao espacial da memria onde residem os processos. H as que viabilizam o compartilhamento do tempo, responsveis pela multiplexao temporal do processador onde os processos so executados. A interao entre os processos necessita ainda de mecanismos para as suas comunicao e sincronizao, o que pode ser obtido atravs da excluso mtua, por exemplo. A excluso mtua pode ser obtida fazendo-se chamadas ao sistema e acionando operaes sobre variveis especiais, chamadas semforos, capazes de bloquear processos interativos, permitindo coordenar seu funcionamento. Uma forma muito usual de tratar a comunicao entre processos por meio do compartilhamento de reas de memria. Todavia, processos so geralmente assncronos e, via de regra, no compartilham espao de endereamento. Consequentemente, a alternativa natural a troca de mensagens, o que pressupe algum tipo de sincronizao. As funes para o gerenciamento de entrada e sada geralmente so fornecidas pelo sistema operacional via uma interface genrica, deixando para os fabricantes de perifricos o projeto dos acionadores e controladores desses dispositivos. Portanto, o sistema operacional enxerga dispositivos virtuais (arquivos lgicos) sobre os quais ele pode fazer operaes apenas de escrita, como no caso das impressoras, apenas de leitura, como no caso dos teclados, ou de leitura e escrita, como no caso dos discos. As funes para o gerenciamento de memria respondem pela alocao e desalocao de memria para mapear o espao lgico de endereamento dos programas na memria fsica. Para tanto criado um espao de endereamento virtual o qual permite que o tamanho do programa, mais seus dados e a pilha, seja maior que a memria fsica disponvel. Isto conseguido pela diviso do espao de endereamento lgico em pginas ou segmentos e o mapeamento destas entidades (pginas/segmentos) em blocos da memria fsica. Este mecanismo serve tambm para resolver discrepncias entre memria em disco (geralmente de grande capacidade, mas lenta) e a principal (usualmente de capacidade reduzida, mas rpida). Como o compartilhamento de memria uma

6

soluo relativamente fcil para sincronizao entre processos, muitos algoritmos foram desenvolvidos para este fim. Para aproveitar tais algoritmos vrios autores procuram simular a existncia de uma memria compartilhada em sistemas distribudos, o que levanta questes como a consistncia dos dados compartilhados e o desempenho do sistema assim estruturado. As funes para o gerenciamento de arquivos tm dois enfoques fundamentais, quais sejam, o acesso e o compartilhamento. De maneira genrica qualquer computao pode ser vista como processos operando sobre arquivos. Estes so entidades lgicas que agrupam dados e devem ser estruturadas e implementadas em algum dispositivo antes de serem manipuladas. As funes para manipulao de arquivos devem implementar mecanismos que garantam o acesso aos dados contidos no arquivo apenas a usurios autorizados protegendo-os contra uso indevido. Mecanismos para disciplinar o acesso garantem a integridade dos dados contidos nos arquivos so necessrios para a sua segurana. Mecanismos de sincronizao so necessrios para controlar o acesso correspondente ao contedo dos arquivos, permitindo o compartilhamento dos respectivos dados.

Sistema em Rede um multicomputador fracamente acoplado no qual no existe qualquer tipo de controle direto de uma mquina sobre as outras e no qual a comunicao entre as outras mquinas bem mais lenta que dentro de uma dada mquina. O objetivo principal de sistemas em rede possibilitar o compartilhamento de seus recursos. Para tanto, as mquinas que compem o sistema trocam informaes via um canal de comunicao, que as interconecta. A principal caracterstica explorada nestes sistemas a sua interoperabilidade, para o que so necessrios alguns mecanismos de suporte, tais como: protocolos de comunicao devidamente padronizados e interfaces comuns para sistemas de arquivos e bases de dados. Nos sistemas em rede a troca de informaes dividida em nveis, por exemplo: no nvel de hardware trocam-se sinais fsicos via a rede de comunicao, no de sistema operacional tem-se os servios de transporte de dados que trocam grupos de bits entre si, e no nvel dos usurios so trocadas as mensagens atravs de processos de alto nvel que implementam a comunicao fim-a-fim orientada a aplicaes. Os principais modelos em camada, que sero estudados mais adiante, so o RM-OSI da ISO e o TCP/IP do DoD. Na origem dos sistemas operacionais em rede temos o conceito de sistemas abertos, que um sistema preparado para se comunicar com qualquer outro sistema aberto utilizando regras padro que governam o formato, o contedo e o significado das mensagens enviadas ou recebidas. Neste sentido, os sistemas operacionais em rede so extenses dos sistemas centralizados que facilitam o compartilhamento de recursos implementando servios de transporte para interfacear os processos aplicativos e a rede de comunicao. A maioria dos sistemas operacionais em rede usam interfaces de aplicao de alto nvel, tais como soquetes ou chamadas a procedimentos remotos, para que o servio de transporte possa sustentar a comunicao entre sistemas em domnios de rede diversos. Algumas classes de aplicaes de rede so: - login remoto: a capacidade do sistema permitir que um usurio use uma mquina como terminal de outra conectada rede, para poder utilizar o processador e outros recursos associados mquina hospedeira. Para poder fornecer este servio a mquina hospedeira deve ser capaz de compreender pacotes de dados vindos do teclado da mquina remota e de enviar pacotes de dados compreensveis para o seu monitor. Esta comunicao requer um protocolo de redes, sendo o mais comum o telnet. - transferncia de arquivos: a capacidade do sistema transferir dados estruturados na forma de arquivos, juntamente com seus atributos, entre mquinas do sistema. Como parte da operao de transferncia de arquivos h a necessidade do intercmbio e da 7

-

-

-

validao de informaes, tais como: atributos do arquivo, formato e fluxo dos dados e, controle de acesso ao arquivo. Este servio suportado por protocolos de transferncia de arquivos, como o ftp. mensagens: a capacidade do sistema transferir mensagens, incluindo documentos e arquivos, sem a necessidade de estabelecer uma conexo em tempo real. Ao contrrio da transferncia de arquivos, as mensagens so empacotadas e somente umas poucas informaes de controle so consideradas. Neste caso h servios para atender transaes comerciais em formatos especficos entre computadores com sistemas operacionais diversos (EDI - eletronic data interchange) e para troca de mensagens entre usurios de rede (correio eletrnico) que se servem de padres como o X.400 do CCITT e o SMTP do DoD. pesquisas em redes: um servio que permite a busca e a apresentao de documentos distribudos entre mquinas participantes da rede. O modelo de varredura mais comum o cliente/servidor, no qual um programa cliente busca objetos em sistemas servidores de arquivos remotos. O programa cliente mais popular o netscape. O sistema mais usado o www (world wide web) que um modelo de dados para a ligao de documentos hipermdia usando apontadores (URL - universal resource locators). A comunicao principal com o servidor se d atravs do hyper text transport protocol (http); em algumas ocasies so usados tambm o telnet e o ftp. Os documentos so tipicamente escritos usando-se a hyper text markup language (html). Execuo remota: a capacidade do sistema enviar mensagens para pedir a execuo de programas em mquinas remotas. A execuo remota se d, em geral, atravs da interpretao de scripts e no pela compilao de programas, devido a dependncia da arquitetura da mquina. Este servio costuma ser restrito a aplicaes nas quais a segurana do sistema no seja comprometida pela violao de protees. Aplicaes deste servio incluem o uso de linguagens intermedirias para a transmisso de imagens compactadas. Talvez uma aplicao mais popular atualmente seja JAVA, que uma linguagem orientada a objetos, derivada da C++, incorporando protocolos tais como o http e o ftp. Ela produz instrues compactas e independentes de mquinas, os applets, que so objetos que tanto podem conter URL (para apontarem/ativarem outros applets) como podem ser apontados por URL.

Sistemas DistribudosOs sistemas distribudos representam um passo alm daqueles em rede, pois, alm de possibilitarem o compartilhamento de recursos eles viabilizam a coordenao de atividades distribudas. Os recursos fsicos costumam ser distribudos geograficamente dentro das empresas, entre outras razes por questes como eficincia no uso de certos recursos e segurana do sistema como um todo. Por outro lado, os recursos lgicos esto, por sua natureza, dispersos na empresa, pois representam as informaes que as pessoas possuem. A funo de um sistema operacional distribudo gerenciar as atividades e os recursos distribudos, possibilitando um processamento descentralizado e melhorando o desempenho do sistema. A principal diferena de um sistema distribudo para um sistema em rede sua caracterstica de transparncia, isto , enquanto num sistema em rede o usurio deve manipular operaes remotas explicitamente, o usurio de um sistema distribudo tem a impresso de estar trabalhando em um sistema centralizado de bom desempenho. A transparncia pode ser notada em vrios aspectos, alguns dos quais so exemplificados a seguir.

8

-

-

transparncia de concorrncia quando os usurios no tm conscincia do compartilhamento de tempo com outros; transparncia de localizao de programas quando o mapeamento do programa em memrias e processadores escondido do usurio; transparncia de acesso a arquivos quando os arquivos podem ser armazenados em qualquer lugar do sistema e por ele movido sempre que conveniente sendo o acesso ao arquivo feito via um caminho lgico para o usurio; e transparncia de desempenho quando os processos podem ser executados em qualquer processador e movidos dentro do sistema de acordo com suas necessidades, sem que o usurio perceba diferena de desempenho significativa.

Para atingir estes e outros aspectos, um sistema digital deve incluir mecanismos para tratar da coordenao das atividades de processos distribudos, gerenciando adequadamente o uso dos recursos dispersos pelo sistema, atravs da implementao de algoritmos distribudos, como ser visto mais adiante no curso.

Sistemas Autnomos CooperativosEstes sistemas mantm as noes de transparncia e interoperabilidade existentes nos sistemas distribudos, mas para permitir a existncia de processos autnomos capazes de exportar e solicitar servios, interagindo independentemente, abolem a necessidade de passar a impresso da existncia de um nico usurio no sistema. Ento, grupos de atividades podem resultar em servios de nvel mais elevado, atravs de composio de servios mais simples. Desta forma, pode-se formar qualquer sistema de software integrando vrios servios por meio de certas estruturas pr-estabelecidas. Um exemplo interessante de um sistema autnomo cooperativo pode ser emprestado da robtica evolutiva. Neste caso, um conjunto de robs usam tcnicas de algoritmos genticos para interagirem e criarem solues para problemas propostos. Os processos devem ser distribudos pelos robs, autnomos e assncronos. Trs classes de servios so implementadas em cada rob do sistema, quais sejam: auto-avaliao, seleo e reproduo. Auto avaliao consiste em mtricas para medida de desempenho do algoritmo executado no respectivo rob. Estas mtricas devem ser baseadas em parmetros que no dependem de agentes ou observadores externos. Por exemplo, deve medir a energia gasta para executar certa tarefa, o que pode ser materializado pelo tempo necessrio ou pelo nmero de operaes necessrias. A seleo visa reconhecer indivduos mais bem ajustados, para executar a tarefa em questo, os quais fornecero genes (isto , assumiro o papel de pais) para os menos ajustados. Estes, por sua vez, recebero os genes e se modificaro gerando novos entes (isto , filhos). No processo de reproduo no h reestruturao fsica dos robs, mas somente a troca de cdigo do programa de controle. Para colocar em prtica estes procedimentos cada um dos robs determina o seu nvel virtual de energia, ou seja, seu desempenho na execuo da tarefa a ele atribuda. Ento irradia sua informao gentica em uma freqncia proporcional ao seu nvel de energia. Esta informao gentica contm um gene escolhido aleatoriamente do seu genoma e que passou por um processo de mutao. Os demais robs podem ou no aceitar o gene irradiado. Os que aceitarem sobrescrevem seu gene correspondente com o gene recebido, caso contrrio o gene recebido simplesmente descartado. A receptividade de cada rob do sistema inversamente proporcional ao seu nvel de energia.

9

Robs com nvel de energia maior (melhor desempenho) tendem a disseminar mais seus genes e resistem mais a tentativas de reproduo dos outros. Todavia, este processo probabilstico e no garante que robs mais ajustados transfiram todos os seus genes para os menos ajustados.

Algoritmos DistribudosO principal objetivo do desenvolvimento de algoritmos distribudos fornecer mecanismos que possibilitem contornar a falta de informao global sobre o estado de um sistema distribudo. Cada processador de um sistema distribudo possui o seu relgio interno, que no sincronizado com os relgios dos demais processadores, causando problemas de interao entre eles. Mesmo que se use um relgio global, centralizado, a propagao desta informao para os processadores do sistema est sujeita a atrasos diversos. Portanto, a tarefa de ordenar os eventos no sistema no trivial. Alm dos atrasos na comunicao, h falhas que podem tornar certas fontes de informao inexistentes, ou no confiveis. O sistema necessita de algoritmos capazes de identificar e contornar todos os tipos de falhas, evitando situaes que levem inoperncia do sistema ou, o que mais grave, sua operao defectiva. A arquitetura do sistema influi na implementao desses algoritmos. A topologia da rede (se completa, regular, fixa ou irregular, etc.) e o tipo de comunicao (se ponto-a-ponto ou multiponto) influem na sua implementao. Do ponto de vista do software a reproduo de cpias dos dados introduz o problema da coerncia e da consistncia dessas cpias, que tambm influi no algoritmo distribudo.

Projeto de Sistema OperacionalAo projetar um sistema operacional distribudo deseja-se que a execuo de aplicativos no sistema resultante tenha um retorno melhor do que em sistemas monoprocessados centralizados, que o sistema distribudo seja capaz de se adaptar a variaes tecnolgicas e a necessidades de seus usurios, que seu comportamento seja, uniforme e previsvel, que ele seja, confivel, tolerante a falhas e devidamente protegido contra aes nocivas, e que os detalhes de sua implementao sejam escondidos do usurio final. Desta forma, pode-se dizer que os projetistas de sistemas operacionais distribudos tm cinco objetivos principais, como explicados a seguir.

EficinciaA resposta de um sistema operacional distribudo, ao executar um aplicativo, deve ser melhor que a resposta de um sistema centralizado, ou no seria razovel investir em um sistema mais caro e complexo, cujo desempenho fosse inferior. O desempenho de um sistema operacional distribudo pode ser medido por diversos parmetros, tais como: tempo de resposta do sistema, sua vazo (o nmero de trabalhos executados por unidade de tempo), a taxa de uso do sistema (seus processadores) e de seus recursos. No caso de sistemas distribudos a questo da eficincia mais complexa que nos sistemas centralizados, em especial, devido aos atrasos na comunicao. Em sistemas distribudos geograficamente o tempo para a troca de mensagens pode superar o limiar dos segundos. Entretanto, mesmo em sistemas fisicamente prximos, no possvel eliminar os atrasos na propagao dos dados. Estes atrasos podem ser agravados por eventuais sobrecargas dos protocolos de comunicao e pela distribuio de carga no sistema.

10

O tempo gasto na propagao dos dados (na troca de mensagens) depende fortemente do protocolo de comunicao utilizado, motivo pelo qual ele deve ser bem projetado, com base em primitivas de comunicao (tanto da linguagem quanto do sistema operacional) eficientes. O balanceamento de carga deve ser cuidadosamente calculado para se evitar gargalos e congestionamentos no sistema de comunicao. Sempre que possvel deve-se cuidar para estruturar os processos distribudos para que haja uma sobreposio de cmputos e comunicao no nvel das aplicaes visando melhorar a eficincia do sistema. A granulosidade das tarefas concorre para tal balanceamento. Processos com muitas tarefas e processamento interno curto, ditos de granulosidade fina, requerem muita comunicao. Processos com tarefas relativamente grandes, que requerem bastante processamento interno, so ditos de granulosidade grossa, e requerem pouca comunicao. Portanto, quanto mais fina a granulosidade dos processos, menores as tarefas. Com tarefas menores torna-se mais fcil a distribuio de carga entre os processadores. Quanto mais bem distribuda a carga de processamento, melhor a taxa de uso do sistema e de seus recursos. Desta forma, pode-se dizer que quanto mais fina a granulosidade dos processos, melhor o desempenho do sistema. Paradoxalmente, quanto mais processos distribudos no sistema, maior o nmero de mensagens trocadas entre eles. Quanto maior o fluxo de mensagens, maior o tempo gasto com comunicao no sistema. Conseqentemente, menor a vazo e maior o tempo que o sistema requer para produzir as respostas desejadas. Por conseguinte podese inferir que quanto mais fina a granulosidade dos processos, pior o desempenho do sistema. O resultado disto que a granulosidade dos processos deve ser ajustada de forma a tornar o sistema o mais eficiente possvel. Outra questo que afeta a eficincia de um sistema operacional distribudo sua tolerncia a falhas. desejvel que um sistema operacional distribudo mantenha todos os processos em execuo, ainda que algum(s) de seus componentes falhem. Para tanto, quando uma tarefa atribuda a um processador ele deve comunicar isto a outro(s) processador(es) do sistema para que, caso o processador principal falhe, o outro possa continuar a execuo da tarefa. Entretanto, isto envolve comunicao sem utilidade para a computao, o que reduz o desempenho geral do sistema.

FlexibilidadeUm sistema operacional distribudo deve ser capaz de evoluir e migar, para se adaptar a variaes tecnolgicas. Deve ser possvel adicionar servios inexistentes e remover servios obsoletos, preferencialmente sem a necessidade de recompilar e reinstalar o sistema, ou seja, o sistema deve ser modular e escalonvel. Conforme mudam as plataformas de trabalho (o hardware) desejvel que se possa migrar o sistema a um baixo custo, isto , re-escrevendo e recompilando o menor nmero possvel de rotinas. Para atingir esta portabilidade o ncleo do sistema deve ser o menor possvel. Alm disto, o sistema deve ter interfaces comuns para suas bases de dados e seu sistema de arquivos, bem como deve fazer uso de protocolos de comunicao padronizados, resultando em um sistema capaz de administrar um conjunto heterogneo de mquinas. As quatro propriedades recm discutidas, quais sejam, escalabilidade, modularidade, portabilidade e interoperabilidade so de crucial importncia para garantir a capacidade de adaptao do sistema. Apesar dos sistemas operacionais com ncleo monoltico reinarem absolutos, suas caractersticas no favorecem ao requisito de flexibilidade. Estes sistemas so compostos por um sistema operacional centralizado, ao qual, so acrescidas funes para operao em rede e integrados servios para operao remota. Os principais exemplos so os sistemas operacionais distribudos derivados do UNIX. Por isto, a maioria dos sistemas operacionais distribudos projetados desde o incio, sem utilizar partes de sistemas pr-existentes, adota o modelo de microncleo, j que este, por no fazer quase 11

nada, mais flexvel. Todos os servios prestados pelo ncleo de um sistema operacional microncleo est l por ser muito difcil ou muito caro prest-lo fora do ncleo. Os sistemas microncleo fornecem, fundamentalmente, quatro categorias de servios, quais sejam: - mecanismos de comunicao de processos - mnimo de funes para gerncia de memria - mnimo de funes para gerncia de processos e escalonamento; e - funes de entrada e sada de baixo nvel. As demais funes do sistema so fornecidas fora do ncleo, atravs de troca de mensagens com este. Entre estas funes encontram-se aquelas para gerncia completa de processos, as de manipulao de chamadas ao sistema, e os sistemas de arquivos e de diretrios. Como praticamente todos os servios so fornecidos a partir de processos clientes em nvel de usurio, a alterao ou a ampliao de servios no implica a parada do sistema para a carga de um novo ncleo. Foi mostrado que mesmo a aparente vantagem que teriam os sistemas monolticos, qual seja, a de apresentar um melhor desempenho por no trabalhar a base de trocas de mensagens, no existe.

ConsistnciaA operao de um sistema operacional distribudo envolve vrias mquinas, muitas vezes com caractersticas heterogneas, o que torna a interao entre os mdulos do sistema por vezes, bastante complexa. Do ponto de vista do usurio, um sistema consistente deve permitir um uso uniforme e ter um comportamento previsvel, apesar dessas possveis caractersticas heterogneas. Alm disto, para garantir uma boa eficincia no uso do sistema, freqentemente necessrio particionar os dados e fazer vrias cpias deles. Isto requer mecanismos que viabilizem o controle de uso das diversas cpias, de modo a mant-las sempre idnticas. A inexistncia de informao sobre o estado global do sistema, bem como a ausncia de um sincronismo geral, requer mecanismos especiais para o controle de concorrncia, de forma a manter a integridade do sistema. Outra possvel fonte de inconsistncia no sistema a possibilidade de falhas de seus componentes. O principal problema, neste caso, a dificuldade, quando no a impossibilidade, de identificao da falha. Os trs problemas mais comuns so: defeito em uma mquina, comprometimento de uma conexo e perda de uma mensagem. Exemplo (do Silberschatz): Sejam duas mquinas A e B, diretamente conectadas. Periodicamente elas enviam, uma outra, uma mensagem x, indicando que esto ativas. Se, aps um certo perodo, A no recebe a mensagem x de B, ela sabe que ocorreu algo, mas no sabe o que. Se enviar uma mensagem y para B, pela mesma conexo, e no receber resposta, continuar sem saber qual o erro. (se receber, provavelmente a mensagem x anterior havia se perdido). Se enviar a mensagem y por uma conexo alternativa e no receber resposta, novamente no tem como saber o que ocorreu. (se receber, provavelmente a conexo usual est com problemas). De qualquer forma so necessrios procedimentos especficos para, adequadamente, reconhecer a falha, tratar os processos de forma a manter o sistema consistente e posteriormente recuperar o estado do sistema anterior ocorrncia da falha.

RobustezPara ser robusto um sistema operacional distribudo deve estar disponvel a maior parte do tempo, sempre apresentando dados confiveis. Na teoria, uma das grandes vantagens de um sistema operacional distribudo sua maior disponibilidade, geralmente resultante da redundncia de seus componentes. Se um processador se mantm operante em 98% do tempo, um sistema com 4

12

processadores idnticos a este teria uma probabilidade de falhas de (0,02)4 = 24 x (10-2)4 = 1,6 x 10-7 ~ 0,00002%, o que corresponde a uma disponibilidade em 99,99998% do tempo. Em outras palavras, se o monoprocessador falha uma hora para cada 50 horas de funcionamento, o quadriprocessador falharia uma hora para cada cinco mil horas de funcionamento, ou seja, estaria cem vezes mais disponvel. Evidentemente, estes nmeros so fictcios, apenas ilustrativos, para se ter uma idia da possibilidade de uma maior disponibilidade de sistemas distribudos, em relao a um monoprocessador. Esta maior disponibilidade s conseguida s custas de redundncia, como j foi dito, o que, por sua vez, aumenta o risco de inconsistncias no sistema. Falhas em canais de comunicao, em ns de processamento e perdas de mensagens so freqentes em um sistema operacional distribudo. A robustez do sistema do ponto de vista de tolerncia a falhas (sua confiabilidade) est vinculada sua capacidade de reinicializao, em um estado no qual sua integridade seja preservada e seu desempenho seja pouco degradado. Se uma mquina falha, o sistema deve: - tirar esta mquina de operao; - transferir as tarefas que eram realizadas por ela para outra mquina; - reconfigurar o sistema sem a mquina falha; e - re-integrar a mquina ao sistema, aps seu reparo. Tudo sem que os usurios percebam mais que uma, possivelmente pequena, variao no desempenho geral do sistema. Mesmo sem falhas explcitas, um sistema robusto deve poder tratar situaes especiais e erros, tais como, mudanas na sua topologia, longos atrasos em mensagens ou a impossibilidade de localizar um servidor. Em outras palavras, deve ser capaz de controlar o acesso aos elementos do sistema. Finalmente, a robustez de um sistema tambm diz respeito aos mecanismos de proteo existentes, isto , deve poder garantir a segurana das informaes nele contidas, resguardando sua integridade, bem como a confidencialidade dos dados dos usurios do sistema.

TransparnciaSegundo Leslie Lamport: um sistema distribudo aquele no qual eu no posso fazer meu trabalho, pois, uma mquina que eu no conheo, no sei onde est e sobre a qual nunca ouvi falar, encontra-se fora do ar. Para evitar este tipo de reao, os projetistas de sistemas operacionais distribudos enganam a todos, fazendo com que um conjunto de mquinas seja visto pelos usurios como se fosse um sistema nico, de tempo compartilhado. Neste contexto, pode-se dizer que transparncia de um sistema operacional distribudo sua capacidade de, por assim dizer, esconder dos usurios detalhes da implementao do sistema, em particular aqueles mais complexos (dependentes da mquina), na medida do possvel apresentando aos usurios um modelo lgico da mquina como eles gostariam de operar e no como ela realmente. Portanto, atravs do uso do conceito de transparncia deve-se apresentar ao usurio o sistema mais simples possvel sem, contudo, comprometer sua eficincia. A idia de propiciar ao usurio um sistema lgico mais amistoso que o sistema fsico, minimizando a necessidade dos usurios tomarem cincia do sistema fsico, anloga aos conceitos de virtualidade em sistemas convencionais e de abstrao em linguagens de programao. Na pgina 30 do Chow & Johnson h definies de 10 aspectos de transparncia, transcritos a seguir: 13

-

-

-

-

-

-

-

-

Access transparency refers to the ability to access both local and remote system objects in a uniform way. The physical separation of system objects is concealed from the user. Location transparency means that users have no awareness of object locations. Objects are mapped and referred to by logical names. This is sometimes called name transparency. Migration transparency is an added property of location transparency where an object is not only referred to by its logical name but can also be moved to a different physical location without changing the name. Migration transparency is also called location independence. Concurrency transparency allows the sharing of objects without interference. It is similar to the time-sharing concept in a broader sense. Replication transparency exhibits consistency of multiple instances (or partitioning) of files and data. It is closely related to currency transparency but is treated separately since files and data are special objects. Parallelism transparency permits parallel activities without users knowing how. Where, and when these activities are carried out by the systems. The parallelism might not be explicitly specified by the users. Failure transparency provides fault tolerance such that failures in the system can be transformed into graceful system performance degradation rather than disruptions, and damage to the users is minimized. Performance transparency attempts to achieve a consistent and predictable (not necessary equal) performance level even with changes of the system structure or load distribution. In addition, the users should not experience excessive delays or variations in remote operations. Size transparency is related to modularity and scalability. It allows incremental growth of a system without the users awareness. The size of the system has no effect on the users perception of the system. Revision transparency refers to the vertical growth of system as opposed to the horizontal growth in system size. Software revisions of the system are not visible to users. Flexibilidade Acesso Localizao Migrao Tamanho Reviso Consistncia Robustez Falha Replicao Tamanho Reviso

Objetivos do sistema Eficincia operacional distribudo Concorrncia Paralelismo Desempenho

Transparncias

Acesso Replicao Desempenho

ServiosUm sistema operacional um provedor de servios. Servios Primitivos: servios fundamentais, os quais devem ser implementados no ncleo. - comunicao: primitivas send/receive (passagem de mensagens) - sincronizao: semntica de comunicao ou servidor de sincronizao. - servidor de processos: criao, eliminao e rastreamento de processos, alocando recursos tais como memria e tempo. Os servidores de processos interagem via primitivas de sincronizao e comunicao para garantir a transparncia do sistema.

14

Servios de Sistema: servios que podem ser implementados em qualquer lugar do sistema, mas que ainda desempenham funes bsica da operao do sistema. - Servidor de nomes: mapeamento de nomes lgicos em endereos fsicos. Relacionandoos com usurios, processos e mquinas. - Servidor de diretrios: relacionado com arquivos e portas de comunicao. - Servidor de rede: traduz e seleciona caminhos e faz roteamento da informao. - Servidor de tempo: relgios lgicos ou fsicos, necessrio para ordenao dos eventos. - Servidores de arquivos e de impresso. Servios de Valor Agregado: so servios no essenciais na implementao de um sistema distribudo, mas que so teis no suporte a aplicaes distribudas. - servidor de grupos - servidor de web

15

Modelos de ArquiteturasDe forma abstrata os modelos de arquitetura de sistemas distribudos podem ser definidos com base em trs entidades que so fundamentais para o seu funcionamento, quais sejam: - Arquivos, que so todos os conjuntos de dados que podem sofrer manipulao dentro do sistema. - Processos, que so todos programas em execuo, os quais so responsveis pela mudana de estado do sistema. - Portas, que so os caminhos disponveis para a comunicao de dados entre os diversos processos do sistema. Os arquivos e os processos residem em estaes de trabalho e trocam informaes atravs de uma rede de comunicao. A forma como as estaes de trabalho e a rede de comunicao so estruturadas define a arquitetura do sistema distribudo. Todavia, o usurio no se preocupa com o sistema fsico propriamente dito, salvo com seu custo, com a aparncia de alguns de seus componentes e com o desempenho geral do sistema, ainda que este nem sempre seja determinado pelo seu hardware. De qualquer forma, tem-se processos no sistema que utilizam servios fornecidos por outros processos. Dependendo de especificidades geogrficas ou caractersticas de desempenho necessrias, algumas estaes de trabalho do sistema podem ser dedicadas prestao de certos servios especiais. As demais estaes podem servir preferencialmente para processamento local, como um computador de uso exclusivo para determinado usurio, e ocasionalmente interagir, via malha de comunicao, com as demais estaes que compem o sistema distribudo. H tambm o caso de estaes sem disco, que servem apenas como terminais de servidores remotos e que dependem em tudo dos servios prestados pela rede, inclusive para inicializao (boot). Este modelo chamado de estao-servidor (wokstation-server) e pode ser esquematizado como apresentado na Figura 1. E s t a e s S e r v i d o r a

Estaes

Portas

de

Servidores dedicados

Figura 1 Modelo Estao-Servidor O caso do modelo estao-servidor apresenta uma srie de vantagens, como a possibilidade de realizar ao menos parte do processamento localmente. Desta forma, o volume de comunicao gerado no sistema relativamente pequeno e o dimensionamento da malha de comunicao pode ser relaxado. Conseqentemente, o custo do sistema reduzido neste quesito. Por outro lado, o uso 16

de processamento localizado faz com que a maioria das estaes estejam ociosas ao longo do tempo. Uma soluo para este problema concentrar todo o poder de processamento do sistema e deixar os usurios apenas com terminais, cuja inteligncia se restrinja ao hardware/software necessrios ao funcionamento eficiente do terminal de vdeo e da interface com a rede de comunicao. Neste caso, todo o restante do processamento fornecido por um conjunto de processadores com base na demanda real dos usurios do sistema. Este modelo dito poo de processadores (processor-pool) e pode ser esquematizado como mostrado na Figura 2.

Terminais

Portas

de

Servidores dedicados

Poo de processadore

Figura 2 Modelo Poo de Processadores

Entretanto, se por um lado a utilizao de um reservatrio com processadores, no qual realizado todo o processamento do sistema, otimiza o uso dos processadores, por outro lado, aumenta consideravelmente a sobrecarga na malha de comunicao. Resultados gerais mais adequados talvez possam ser obtidos por intermdio de um modelo hbrido, no qual h estaes de trabalho com capacidade de processamento local as quais, formam um reservatrio de processamento distribudo geograficamente. Os processos sendo executados em qualquer dessas estaes podem migrar para outras estaes que estejam ociosas ou com carga de trabalho menor. Esta migrao deve ser controlada por alguma estratgia de compartilhamento de carga pr-definida para o sistema.

17

ComunicaoComo o desempenho de um sistema distribudo est diretamente ligado possibilidade de migrao dos dados, sua rede de comunicao tem papel muito importante. Esta rede engloba elementos fsicos utilizados na interconexo dos equipamentos e protocolos para disciplinar a comunicao entre os processadores. A Comunicao pode ser feita ponto-a-ponto, quando se estabelece uma ligao direta entre um par de processadores, ou multi-ponto, quando um conjunto de processadores interligado atravs de um barramento ou chaves eletrnicas. Os barramentos so mais baratos, mas permitem apenas o compartilhamento no tempo. J, as chaves, embora formem um sistema mais caro e complexo, possibilitam no somente a multiplexao no tempo como tambm no espao. As redes de comunicao locais so restritas ao mbito de empresas e geralmente tm um raio de abrangncia de alguns poucos quilmetros. Estas redes normalmente utilizam a interconexo por algum tipo de barramento e fundamentam sua comunicao em protocolos, como o padro 802.X do IEEE, como o caso das redes Ethernet, token bus, token ring, FDDI (fiber distributed data interface) e DQDB (distributed queue dual buses). Por outro lado, as redes dos servios pblicos de comunicao utilizam a ligao por chaves de barramentos cruzados ou de mltiplos estgios. Estas redes, incluem o ISDN (integrated services digital network), o SMDS (switched multimegabit data service) e o ATM (asynchronous transfer mode). O roteamento que no caso anterior feito pela anlise das mensagens que circulam no barramento, neste caso feito pela programao das chaves que compem a rede. A comunicao em sistemas distribudos se d em camadas, buscando propiciar a comunicao entre entidades de um mesmo nvel (peer-to-peer). Por exemplo, usurios do sistema precisam trocar mensagens para se comunicar e devem ter a impresso de estarem falando diretamente um com o outro. Entretanto, como a distncia no permite eles fazem uso do sistema. Para tanto, sem que o usurio perceba, o servio do sistema que o atende passa a mensagem desejada para uma mquina hospedeira, a qual estabelecer um canal de comunicao com uma mquina remota, servidora do interlocutor, a qual, por sua vez, providenciar para que a mensagem chegue ao seu destino. Contudo, as mquinas tambm no so capazes de se comunicarem a distncia. Para que isto ocorra elas devem utilizar portas de comunicao, as quais encapsularo as mensagens das mquinas servidoras e estabelecero uma comunicao ordenada atravs do sistema fsico de comunicao. Neste rpido exemplo introdutrio pode-se notar que foram estabelecidos trs nveis (ou camadas) de comunicao, quais sejam: o de troca de mensagens entre os usurios; o de comunicao entre as respectivas mquinas hospedeiras; e o de coordenao pelas portas do sistema de comunicao. Mundo real Sistemas de comunicao computacional Exemplo de aplicaes Nvel de rede Nvel de hardware Telefonemas Orientando a conexo Transferncia de arquivos circuito virtual Chaveamento de circuito Cartas Sem conexo Divulgao do estado do sistema Datagramas Chaveamento de pacotes

As estruturas em camadas referidas no pargrafo anterior so chamadas de protocolos de comunicao. Protocolos de comunicao so conjuntos de regras que regulam a troca de mensagens, para prover um fluxo de informao ordenado e confivel, entre os processos comunicantes. Nos protocolos, camadas inferiores fornecem servios usados para comunicao

18

entre camadas imediatamente superiores. Os principais protocolos so, como foi dito anteriormente, o RM-OSI da ISO e o TPC/IP do DoD. A seguir eles so descritos mais detalhadamente.

O modelo de referncia da ISOEm 1977, sentindo a necessidade de padronizar a conexo de sistemas computacionais heterogneos, a International Standards Organization (ISO), atravs de seu comit tcnico de processamento de dados (TC97), criou um subcomit (SC16), para estudar o problema. No ano seguinte, o SC16 apresentou uma proposta, aceita pelo TC97 em 1979. Esta proposta foi chamada de reference model for open system interconnection (RM-ISO) e foi aprovado como padro ISO7498 em maio de 1983. Em setembro do ano anterior, o RM-OSI foi adotado como recomendao X.200 pelo CCITT. Este modelo dividido em sete camadas, contemplando diversos nveis de abstrao de um sistema distribudo, desde o nvel fsico at o de aplicaes voltadas para o usurio. A seguir, apresenta-se uma descrio sucinta das sete camadas que compem o RM-OSI. A camada mais baixa do RM-OSI a fsica. Ela a responsvel pela interface entre os ns da rede e o meio fsico de transmisso. Portanto, nela existe a preocupao com a transferncia de bits (unidade de dados desta camada) diretamente atravs de uma conexo fsica. Desta forma, h um interesse especial na definio das caractersticas eltricas, mecnicas e funcionais necessrias para a transferncia adequada de informaes. Algumas caractersticas eltricas consideradas so a amplitude, o perodo e a freqncia dos sinais, o esquema de modulao e o modo de operao usados. Dentre as caractersticas mecnicas esto o nmero de pinos usados nos conectores, o tamanho dos conectores e de seus pinos, bem como a distribuio destes naqueles. J as caractersticas funcionais tm a ver com os procedimentos necessrios para o estabelecimento e o encerramento de conexes, por exemplo. Resumindo: Na camada fsica a preocupao recai sobre as caractersticas eltricas, mecnicas e funcionais necessrias para ativar, manter e desativar conexes fsicas para a transmisso de bits entre ns da rede. A camada seguinte a de enlace de dados. Uma vez que a camada fsica trata apenas da transmisso de seqncias de bits, a camada de enlace a primeira do RM-OSI a dar alguma ateno ao significado de tais bits. Nesta camada, a unidade de dados o quadro. Os quadros so compostos por conjuntos de bits, normalmente uns poucos milhares. A camada de enlace a principal responsvel pela transmisso confivel dos quadros. Para tanto, ela deve ser capaz de detectar e possivelmente corrigir erros que aconteam eventualmente, o que viabilizado pela incluso de alguns bits de controle nas extremidades dos quadros, os quais permitem a identificao de seus limites e o tratamento dos erros. Como existe a possibilidade de perda de quadros durante a transferncia, esta camada deve oferecer mecanismos que permitam o reconhecimento dos quadros corretos e a retransmisso dos incorretos e dos faltantes. Neste caso, como possvel a recepo de quadros duplicados, a camada de enlace deve estar apta a identificar esta situao. Em resumo: A camada de enlace de dados deve oferecer um servio de transferncia confivel de dados entre os ns da rede, suportada pela camada fsica subjacente. A camada de rede a terceira no RM-OSI. A funo principal desta camada controlar o funcionamento da malha de comunicao. Ela responsvel pelo estabelecimento e pela manuteno do fluxo de pacotes atravs da rede. Devido a uma falta de consenso no mbito da ISO, foram adotados dois tipos de servios oferecidos por esta camada, quais sejam: circuitos virtuais e datagramas. Como no h necessidade de uma ligao fsica direta entre os usurios, uma tarefa importante desta camada o roteamento de pacotes. Outras questes relativas ao trfego so o tratamento de congestionamentos, o controle da vazo e a contabilidade dos servios. Congestionamentos ocorrem quando um n da rede forado a trabalhar no seu limite de capacidade, causando um engarrafamento das informaes que por ela trafegam. O controle de vazo refere-se ao controle do desequilbrio entre as velocidades de transmisso de um n e de 19

recepo de outro. A contabilidade deve-se necessidade de contagem dos pacotes enviados pelos diversos usurios, de maneira a produzir informaes que permitam a cobrana dos servios prestados. Em suma: a camada de rede responsvel pelo controle das operaes de comunicao da rede, incluindo o empacotamento de mensagens, o roteamento dos pacotes e o controle de fluxo. O RM-OSI tem como quarta camada a de transporte. Esta camada inicia uma mudana de nfase da ISO. Inicialmente, preocupada com as funes de hardware e software necessrias para garantir a transmisso adequada de pacotes, quadros e bits, a partir desta camada a ISO passa a dirigir sua ateno s funes mais voltadas garantia de uma transferncia de dados entre os usurios finais, sem que estes tenham que preocupar com detalhes de operao da rede em nveis mais baixos de abstrao. A funo bsica desta camada consiste da eventual necessidade de diviso das mensagens oriundas da camada superior em pacotes e do envio destes rede, garantindo sua transmisso adequada e sua chegada correta ao destinatrio desejado. Nesta camada a ISO define apenas servios orientados a conexo. Portanto, ela pode ser bastante simples se a camada de rede oferecer um servio de circuitos virtuais, mas ser bastante mais complexa se o servio oferecido pela camada de rede for do tipo datagrama. Pode-se usar qualquer dos trs tipos de correspondncias entre as conexes de sesso e de transporte. Entretanto, tudo deve ser feito de modo que as camadas superiores fiquem isoladas das trocas inevitveis na tecnologia de hardware subjacente. A camada de transporte a primeira realmente fim-a-fim, isto , as camadas inferiores tm, digamos, conscincia de que suas unidades de dados passam por vrios ns intermedirios antes de chegarem ao seu destino, j, do ponto de vista das camadas superiores, as mensagens vo diretamente da fonte ao destino, sem a interveno de elementos intermedirios. Sintetizando: a camada de transporte controla a transferncia de dados do sistema-fonte ao sitema-destino, atravs do estabelecimento, da manuteno e da liberao de conexes bidirecionais entre um par de entidades de sesso, para aliviar as entidades das camadas superiores das tarefas de transporte de dados entre elas. A camada seguinte a de sesso. Nesta camada h uma maior preocupao com as aplicaes propriamente ditas, do que com a mera comunicao. Esta camada administra a sesso, unindo e desunindo duas entidades para relacionamento. Para isto, verifica a autenticidade das entidades que desejam se comunicar. Desta forma, serve de interface entre os usurios e a rede. Controla a troca de dados, delimita e sincroniza as operaes sobre estes dados e decide sobre o tipo de comunicao a ser usado (simplex, semi-duplex ou duplex). Em sntese: a camada de sesso organiza e sincroniza o dilogo e gerencia a troca de dados entre duas entidades da camada de apresentao. A prxima camada na hierarquia do RM-OSI a de apresentao. Esta camada ocupa-se da interpretao da sintaxe dos dados, transformando-os e formatando-os sempre que necessrio, para resolver problemas de diferenas entre as sintaxes dos diversos sistemas interligados. Nesta camada so usadas tcnicas de compresso de dados, para reduzir o nmero de bits transmitidos, e de criptografia, para aumentar a privacidade na transferncia destes. Resumindo: a camada de apresentao visa gerenciar as estruturas de dados abstratas (como letras, nmeros e smbolos) convertendo-as da representao interna ao computador, para aquela na rede e vice-versa. A camada de aplicao a mais alta do RM-OSI. Todas as outras camadas existem para dar suporte a esta. Seus servios so diretamente observados pelos usurios. As entidades desta camada so janelas que viabilizam a representao de cada usurio final, dentro da rede. As funes desta camada so totalmente dependentes das aplicaes. Alguns exemplos clssicos de aplicaes so: - terminais virtuais: fazem a converso de informaes transferidas entre dois terminais de modo a possibilitar sua legibilidade em ambos, independentemente de suas diferenas fsicas; - transferncia de arquivos: faz a converso do contedo dos arquivos transferidos entre dois equipamentos de forma a compatibilizar as diferenas de representao existentes, oferecendo mecanismos bsicos para a manipulao de arquivos a distncia, como abertura, edio e fechamento de arquivos;

20

-

-

tratamento de mensagens: permite a preparao, disseminao (remessa e recebimento) e o armazenamento de mensagens ou arquivos, entre os usurios, incluindo-se neste servio o correio eletrnico o teletexto e o facsmile; e Submisso remota de tarefas: servio que permite submeter tarefas a mquinas diferentes, utilizando sistemas operacionais distintos, compartilhando recursos e capacidade de processamento, de forma transparente.

O modelo TCP/IP do DoDEm dezembro de 1969 o departamento de defesa (DoD Department of Defense) norte americano colocou em operao a rede Arpanet. Inicialmente consistia de quatro ns, chamados de IMPs (Inerface Message Processors). Originalmente, os IMPs eram minicomputadores Honeywell DDP516, com memria de 12k palavras de 16 bits. Atualmente, constitui-se de muitos milhares de IMPs espalhados pelo mundo todo. Como a Arpanet anterior ao RM-OSI, ela no segue esta padronizao. Contudo, ela possui protocolos que correspondem, aproximadamente, s camadas do modelo da ISO. Com o passar do tempo e com sua internacionalizao, a Arpanet deu origem Internet e os protocolos de comunicao nela utilizados passaram a ser conhecidos pela sigla TCP/IP, correspondente s duas camadas principais do conjunto de protocolos da Arpanet, como ser visto em seguida. O nvel fsico no definido pela Arpanet pois baseia-se em ligaes telefnicas alugadas. Vista em mbito da Internet, sua camada fsica corresponde quelas das redes locais a ela conectadas. O protocolo mais baixo, IMP-IMP, uma mistura aproximada das camadas dois e trs do RM-ISO, incluindo um mecanismo de roteamento bastante elaborado e um mecanismo para a verificao da recepo pelo IMP-destino, de cada pacote enviado pelo IMP-fonte, o que no existe no ambiente da ISO. A camada de rede chamada, na Arpanet, de IP (Internet Protocol), sendo um servio do tipo datagrama, projetado para ligar um vasto nmero de redes locais e de longa distncia. camada de transporte corresponde o TCP (Transmission Control Protocol), que embora eqivalha, genericamente, ao modelo da ISO, pouco tem em comum com aquele, no que se refere a formatos e demais detalhes. As camadas de sesso e apresentao inexistem na Arpanet, j que sua falta nunca foi sentida nestes mais de 30 anos de funcionamento. Tambm, no existe uma camada de aplicao propriamente dita, como entendida no mbito do RM-OSI. O que existe uma srie de servios oferecidos por meio de vrios protocolos bem estabelecidos, tais como: o ftp (file transfer protocol) para transferncia de arquivos; o SMTP (simple mail transfer protocol) para correio eletrnico; e o telnet (terminal emulation) para terminais virtuais. A Figura 3 mostra a arquitetura bsica do modelo TCP/IP do DoD, em comparao com a RM-OSI/ISO.

21

aplicao apresentao sesso transporte rede enlace fsica

ftp

smtp

telnet

outras

TCP IP IMP IEEE 802 X.25 outros

RM-OSI da ISO

TCP/IP do DoD

Figura 3 Comparao entre o RM-OSI da ISO e o TCP/IP do DoD

22

Aspectos de projetoDe modo geral, um sistema distribudo pode ser visto como um conjunto de processos que so executados de forma concorrente, cada um dos quais acessando um sub-conjunto de recursos do sistema por meio de um mecanismo que envolve a troca de mensagens atravs de uma malha de comunicao a qual, nem sempre, confivel. A partir desta observao pode se identificar uma srie de aspectos, que devem ser considerados durante o projeto desses sistemas. O primeiro desses aspectos conduz questo da identificao e da modelagem dos objetos no sistema. Tais objetos so os processos, os arquivos, a memria, os dispositivos perifricos, a rede de comunicao e os processadores. A cada objeto do sistema associado um conjunto de operaes que possibilita o acesso a ele. Para organizar tal acesso, a cada objeto associado um processo, o qual fica de responsvel pela manipulao do objeto. Esses processos que gerenciam o acesso aos objetos so as nicas entidades visveis no sistema digital e so chamados de servidores dos respectivos objetos. Eles so ditos as nicas entidades visveis, porque quando um processo qualquer precisa que algum servio seja executado por outro objeto do sistema ele o solicita enviando uma mensagem de requisio ao servidor do objeto. Este recebe as requisies vindas de diversos processos do sistema, organiza-as e aciona o objeto adequado no seu devido tempo. Aps a execuo da tarefa solicitada, ele retorna a resposta ao processo que originou o pedido. Portanto, em um sistema digital h servidores de processos, servidores de arquivos, servidores de rede, servidores de impresso, e assim por diante. Por outro lado, os objetos podem residir nas mais diferentes partes do sistema e a referncia a cada um deles deve ser inequivocamente distinguida. A identificao dos objetos pode ser feita por nome, que mais fcil e intuitiva, por endereos, que mais precisa e contm informao estrutural embutida, e por servios, que pouco usada. Como foi mencionado anteriormente, do ponto de vista dos elementos do sistema, a rede de comunicao pode ser abstrada por suas portas. Estas portas correspondem a endereos lgicos de objetos no sistema. Num nvel de abstrao mais elevado estes endereos lgicos so associados a nomes de objetos do sistema distribudo. Ao contrrio, num nvel de abstrao mais baixo os endereos lgicos correspondem a endereos fsicos dos objetos. Os processos responsveis pelo mapeamento de nomes em endereos lgicos do sistema, e vice-versa, so chamados de servidores de nomes e os processos responsveis pelo mapeamento entre endereos lgicos e fsicos so ditos servidores de rede. Outro aspecto relevante do projeto de um sistema distribudo diz respeito ao modo como feita a coordenao da interao entre os objetos do sistema e como eles fazem para se comunicar. Para que eles possam interagir necessrio sincronizar o funcionamento dos objetos, caso contrrio corre-se o risco de solicitar algo a determinado objeto quando ele no mais capaz de executar a tarefa solicitada ou de receber informaes de objetos quando esta no faz mais sentido para o objeto que a solicitou. O grande problema para a sincronizao em sistemas digitais a ausncia de conhecimento sobre o estado global do sistema. Portanto, necessrio impor certos requisitos para a sincronizao, tais como: - Barreira de Sincronizao: um conjunto de processos deve atingir um ponto de sincronizao comum antes de continuar. - Condio de coordenao: um processo deve esperar por uma condio que outro processo iterativo ajustar assincronamente, para manter uma ordem de execuo. - Excluso Mtua: processos concorrentes devem ter acesso exclusivo a certos recursos compartilhados do sistema. Alm disto, o uso de mecanismos para prevenir e evitar bloqueios fatais, isto , a ocorrncia de uma espera circular de processos por objeto do sistema, mesmo atendendo aos requisitos de sincronizao mencionados, pode no ser praticvel. s vezes, at mesmo a deteco e a recuperao do sistema aps a ocorrncia de um bloqueio fatal no trivial, devido falta de 23

conhecimento sobre o estado global do sistema. Uma forma de contornar este problema utilizando protocolos de entendimento. Tais protocolos usam algoritmos com troca de mensagens contendo informaes sobre estados locais do sistema, para atingir um consenso sobre seu estado global. A comunicao no sistema, que em seu nvel mais baixo se d atravs de mecanismo de troca de mensagens, em seus nveis mais altos, para atingir a transparncia desejada no sistema distribudo, lana mo de modelos como cliente/servidor e chamadas a procedimentos remotos. Estes modelos usam o conceito de solicitao de servios a servidores do sistema em moldes semelhantes aos usados para fazer chamadas a rotinas, das quais recebem os resultados. Resolvida a questo do compartilhamento, ou da multiplicao de cpias dos objetos, vem baila a questo de como gerenci-los de forma controlada e como distribuir a carga de processamento pelo sistema. Como a memria est distribuda pelos processadores do sistema, deseja-se manter a transparncia apresentando-a ao usurio como uma grande memria compartilhada sem sobrecarregar o sistema de comunicao de forma significativa. Alm disto, os protocolos de comunicao utilizados devem manter a consistncia dos dados compartilhados e a coerncia dos dados para os quais existam vrias cpias no sistema, sempre considerando que h uma migrao dos processos pelo sistema. Por sua vez, a carga de processamento pode ser distribuda esttica ou dinamicamente. No primeiro caso, a distribuio esttica, dita escalonamento e visa minimizar o tempo necessrio para completar as tarefas de um conjunto de processos. O principal problema a ser equacionado uma forma de reduzir este tempo, mantendo o mnimo de sobrecarga no sistema de comunicao. No segundo caso, a distribuio dinmica, dita compartilhamento de carga e visa maximizar o uso de um conjunto de processadores. O principal desafio aqui ajustar os mecanismos que implementam a estratgia considerada mais adequada para efetuar a migrao dos processos. Finalmente, h o aspecto de como proteger os objetos do sistema e garantir sua segurana. A segurana de um sistema distribudo est sempre ameaada, porque o sistema aberto, isto , permite o acesso de vrios usurios, em certos casos e com certas restries, mesmo usurios no cadastrados podem acessar o sistema. Alguns usurios podem violar intencionalmente a segurana do sistema, causando problemas para os demais. Todavia, h tambm os problemas causados aos sistema pelo seu mau uso, no intencional, provocando falhas no sistema. O problema da ocorrncia de falhas no sistema pode ser amenizado pelo emprego de objetos redundantes no sistema. J a questo da segurana passa pela autenticao e autorizao dos usurios do sistema. A autenticao requer a identificao correta de clientes, servios e mensagens que circulam no sistema. A autorizao tem a ver com o controle de acesso rede fsica, controle este que dificultado por lidar com computadores heterogneos, sujeitos administraes de caractersticas diversas e, por conseguinte, usando modelos de segurana diferentes.

24

Modelo Cliente/ServidorO modelo cliente/servidor um paradigma de programao, que representa as interaes entre processos e estruturas do sistema. Este modelo pode ser usado para melhorar a estrutura do sistema operacional, movendo-se a maior quantidade possvel de funes para nveis mais altos do sistema, reduzindo o tamanho do ncleo. Processos do sistema so chamados de clientes, quando usam servios, e de servidores, quando fornecem servios. Para pedir um servio um processo cliente solicita-o a um processo servidor o qual, aps realizar o servio solicitado, envia a resposta ao cliente. Desta forma, o ncleo precisa apenas gerenciar a comunicao entre clientes e servidores. Como tudo o que o usurio percebe a comunicao lgica entre cliente e servidor, este modelo facilita a implementao do conceito de transparncia. O modelo cliente/servidor no baseado no estabelecimento de uma conexo. Portanto, pode ser implementado sobre um canal de comunicao real por passagem de mensagens. Tudo que deve ser implementado no ncleo so as primitivas de comunicao send e receive, no importando se o servio de transporte utilizado ou no orientado a conexo, ou se a mensagem transferida para um servidor na mesma mquina ou em uma mquina remota. A simplicidade deste modelo tal que, para maior eficincia, pode ser implementado sobre um protocolo que corresponde apenas s trs camadas inferiores do modelo OSI. Tamanha a simplicidade do modelo que a prpria resposta do servidor usada como confirmao do recebimento da solicitao. As primitivas de comunicao podem ser classificadas segundo trs critrios, quais sejam: o estado em que ficam os processos durante a transmisso de uma mensagem, a forma como as mensagens so disponibilizadas, e a confiabilidade do mecanismo de troca de mensagens. De acordo com o primeiro critrio as primitivas podem ser classificadas em bloqueadoras, quando o processo fica paralisado durante a transmisso da mensagem, e no bloqueadoras, quando o processo fornece uma cpia da mensagem ao sistema de comunicao, por ocasio da solicitao do servio, e segue seu processamento, enquanto o sistema de comunicao se encarrega de tratar da solicitao. De acordo com o segundo critrio, as primitivas podem ou no se utilizarem de buffers para comunicao. Caso no utilizem buffers, cada processo deve informar ao processo remoto, atravs da primitiva receive, um endereo onde este processo deve armazenar a mensagem enviada. O problema que se a mensagem chega antes do processo que deve receb-la emitir o comando receive, a mensagem que est chegando pode ser perdida. Para reduzir o risco de perda de mensagens por no saber onde armazen-las, pode-se criar um buffer durante o estabelecimento da comunicao. Este buffer usualmente conhecido como caixa postal. Desta forma, o processo que enviar uma mensagem sabe, de ante mo, onde armazen-la e o processo receptor tambm sabe onde deve procur-las. Ainda h o risco de perda de mensagens se um processo tentar acessar uma caixa postal cheia, mas este risco muito reduzido se o tamanho da caixa postal for definido adequadamente. O terceiro critrio diz respeito confiabilidade das primitivas. Em princpio, devido simplicidade do modelo cliente/servidor, admite-se que ele no confivel, pois usa-se a resposta como confirmao do recebimento da solicitao, ficando o servidor, sem qualquer confirmao do recebimento da resposta. Esta confiabilidade pode ser aumentada se ao receber a resposta e repass-la ao cliente, o ncleo do cliente confirmar seu recebimento ao ncleo do servidor. Todavia, ainda h margem para dvidas, pois ao utilizar a resposta como confirmao do recebimento da solicitao, o sistema abre a possibilidade do cliente receber uma mensagem do 25

servidor que no a resposta sua solicitao e interpret-la como se fosse. Para melhorar mais ainda a confiabilidade do sistema, reduzindo o risco de falsas interpretaes, pode-se determinar que os recebimentos tanto da solicitao de servio quanto da resposta do servidor sejam explicitamente reconhecidos pelos ncleos correspondentes.

26

Servios de TempoEm qualquer sistema necessrio que se possa determinar quando um evento ocorre e quanto tempo ele demora, para que se possa definir que evento ocorre primeiro. importante saber a ordem de ocorrncia dos eventos em um sistema, por exemplo, para saber qual evento requisitou acesso a algum recurso do sistema primeiro. Imagine-se que dois processos compartilham uma varivel; um deles deseja ler o valor da varivel e outro deseja atualizar este valor. Imagine-se que a varivel represente a existncia ou no de incndio nos tanques de um posto de combustveis. Imagine-se que um processo A leia esta varivel periodicamente e, caso haja algum problema, tome as providncias cabveis para combater o incndio. Imagine-se que um processo B escreva nesta varivel sempre que detectar perigo de incndio no compartimento dos tanques. Imagine-se que o processo B tenha detectado um problema instantes antes do processo A tentar ler a varivel, mas que por algum defeito no servio de tempo do computador seja concedido acesso varivel ao processo A antes do B. Ento o processo A verificar que no h problemas com o tanques e aguardar a prxima ocasio para ler a varivel. Logo em seguida o processo B atualizar a varivel, indicando a existncia de fogo no compartimento dos tanques, mas nenhuma ao de combate ser tomada enquanto o processo A no voltar a ler a varivel, o que poder ocorrer tarde demais. Certamente, este exemplo um pouco exagerado, pois h outras formas mais seguras de se noticiar um evento de alto risco como o mencionado. Todavia, ele ilustra a necessidade de se garantir o correto ordenamento dos eventos em um sistema de computao. Entretanto, isto pode ser uma tarefa difcil, sobretudo em sistemas distribudos, nos quais as informaes relevantes esto espalhadas pelas mquinas. Os processos em um sistema distribudo tomam decises baseados exclusivamente em informaes disponveis na mquina em que esto sendo executadas. Cada mquina tem o seu relgio, no existindo uma fonte comum de tempo ou qualquer outra fonte precisa, que fornea um tempo global confivel. Por mais precisos que sejam os relgios internos de cada mquina e ainda que se conseguisse sincroniz-los no incio do funcionamento do sistema, h uma discrepncia entre os perodos de oscilao dos seus cristais a qual, com o transcorrer do tempo, aumenta sistematicamente a diferena entre os tempos instantneos reais das diversas mquinas. Suponham-se dois processos sendo executados em mquinas diferentes, que devem cooperar entre si. Suponha-se que as informaes a serem trocadas dependam do exato ordenamento, por exemplo, suponha-se que os processos estejam cooperando para montar uma ponte, utilizando estruturas pr-fabricadas. Um processo A responsvel por colocar parte do leito da ponte sobre um pilar, a ser colocado por outro processo B. Suponha-se que o pilar seja colocado pelo processo B aps 5 intervalos de tempo e que o processo A seja programado para colocar o leito sobre este pilar no final do sexto intervalo de tempo. Se cada processo seguir o seu relgio interno, os quais foram calibrados com um relgio mestre no incio do funcionamento, e que devido s diferenas nos respectivos cristais funcionam segundo o diagrama abaixo, a ponte vai cair, com certeza. Notese, no diagrama, que o instante previsto para a instalao do pilar corresponde ao quinto perodo do tempo real e o instante previsto para a instalao do leito da ponte corresponde ao sexto perodo do tempo real. Todavia, o instante real da instalao do leito corresponde ao sexto perodo da linha correspondente ao relgio do processo A e o instante real da instalao do pilar corresponde ao quinto perodo da linha correspondente ao relgio do processo B. Os dois instantes reais de instalao esto atrasados em relao ao tempo real e, pior que isto, o momento real da instalao do pilar ocorre depois da instalao do leito, o que significa que provavelmente o pilar ser colocado sobre o leito da ponte e no por baixo deste, como previsto.

Tempo real Relgio de A Relgio de B

1 1 1

2 2

3 3 2

4 3

5 4

6 5 4

7 6

8 7 5

9 6

10 8

27

Portanto, embora os relgios fsicos permitam uma boa aproximao do tempo real tanto para medir instantes quanto intervalos de tempo eles devem concordar com determinada marcao de tempo a qual no pode diferir do relgio real mais do que um determinado valor. Usam-se ento temporizadores compostos por um cristal, um contador e um registrador de reteno. A cada oscilao o cristal decrementa o contador em uma unidade. Ao atingir o valor zero, o contador provoca uma interrupo de tempo e o valor armazenado no registrador de reteno recarregado no contador. Este processo pode ser repetido indefinidamente. O sinal de interrupo pode ser transmitido para o restante do sistema e, periodicamente, re-sincronizar os relgios. Desta forma, poder-se-ia concordar com uma marcao de tempo, ainda que ela no fosse necessariamente correspondente ao tempo real. Este relgio lgico poderia, ao menos, preservar o ordenamento dos eventos. Contudo, este relgio lgico sofre de outro problema que o atraso de comunicao. Para sincronizar os relgios das mquinas do sistema uma delas, eleita como servidora de tempo, deve transmitir periodicamente uma informao de sincronismo s demais. No obstante, ela est a distncias diferentes das outras mquinas e o volume de comunicao de cada uma tambm distinto. Conseqentemente, o atraso para que a informao com o sincronismo de tempo chegue a cada uma das mquinas diferente o que provoca a incerteza nas marcaes individuais de tempo. Desta forma, no adianta utilizar um relgio atmico (de Csio 133) como marcador de tempo fsico, pois sua preciso seria perdida na disseminao da informao pelo sistema. Para contornar este problema Leslie Lamport sugeriu um esquema que possibilita a ordenao total de eventos no sistema, baseado em uma relao de acontecimento/anterioridade. Sejam trs processos P1, P2 e P3 cujos tempos seguem conforme tabela abaixo. Suponha que no instante 6, P1 envia uma mensagem A para P2. Suponha que no instante 24, P2 envie uma mensagem B para P3. As mensagens levam a informao do instante de tempo em que foram emitidas. O tempo de trnsito depender do relgio considerado. No caso das mensagens A e B, levando em conta o relgio da mquina receptora das mensagens, tem-se tempos de trnsito iguais a 10 e 16 unidades de tempo, respectivamente. No instante 60 o processo P3 envia uma mensagem C para o processo P2. Contudo, esta mensagem ser recebida pelo processo P2 quando seu relgio marcar 56 unidades de tempo. Isto corresponde a um tempo de trnsito negativo. Como se sabe no ser possvel tratar tempos negativos, o receptor (no caso P2) incrementa seu relgio. Como P2 sabe que a mensagem C partiu de P3 no instante 60 e que ela levou algum tempo para transitar entre os dois processos, P2 atribui a seu relgio o valor 61, correspondendo ao instante de sada da mensagem mais um intervalo de comunicao mnimo de uma unidade de tempo. A partir da ele volta a incrementar seu relgio com seu perodo normal. Situao semelhante ocorre se no instante 69, P2 enviar uma mensagem D para P1, o qual a receber no instante 54 e atualizar seu relgio para 70. Para evitar ambigidades, caso um processo receba mais de uma mensagem no mesmo instante, ele associar ao tempo de cada mensagem o nmero do processo que a originou. Desta forma, se duas mensagens forem recebidas pelo processo P3 no instante de tempo 50, uma originria de P1 e outra de P2, elas recebero o identificador de tempo 50.1 e 50.2, respectivamente.

28

P1 0 6 12 18 24 30 36 42 48 54 60

P2 0 8 16 24 32 40 48 56 64 72 80

P3 0 10 20 30 40 50 60 70 80 90 100

A

B

C

D

P1 0 6 12 18 24 30 36 42 48 70 76

P2 0 8 16 24 32 40 48 61 69 77 85

P3 0 10 20 30 40 50 60 70 80 90 100

A

B

C

D

29

Ramificaes no Fluxo de Controle de ProcessosProcessos so as entidades mais fundamentais num sistema operacional. Processos concorrentes so programas em execuo assncrona que interagem, cada qual com seu prprio espao de endereos. Para estender a concorrncia internamente aos processos, muitos sistemas operacionais modernos possibilitam ramificaes no fluxo de controle dos processos, as quais so mais conhecidas pelo termo ingls threads. Threads so processos leves que compartilham um espao de endereos lgicos. Threads podem ser implementados tanto no espao de usurio quanto no ncleo do sistema. A implementao de threads no espao de usurios flexvel, pois suas incorporaes e posterior atualizao em sistemas existentes relativamente simples, mas para se obter eficincia deve-se implement-los no ncleo. O mecanismo de threads funciona como descrito a seguir. Ao ser executado, um programa pode gerar ramificaes no seu fluxo de controle. Essas ramificaes tm seus estados locais individuais, mas permanecem associados ao processo que as gerou. Cada um desses sub-processos, os threads, possui um bloco de controle (TCB Thread Control Block) semelhante ao que existe para processos. Todavia, como os threads so processos leves, associados aos processos geradores, seus TCBs incluem informaes locais reduzidas, tais como o contador de programa, apontadores de pilha e o conjunto de registradores. Como s possuem informaes locais, armazenadas em certos registradores da UCP, compartilhando o restante das informaes de contexto com o processo gerador, a mudana de contexto de threads mais rpida que a do processo principal. Exemplificando o que foi mencionado no pargrafo anterior, o bloco de controle de processos deve conter informaes completas sobre o processo. Tais informaes podem ser divididas em dois grupos: o das informaes compartilhadas com os threads e o das informaes especficas sobre o processo. Por compartilharem seu espao de endereamento com os threads, os processos funcionam como se fossem mquinas virtuais onde rodam os threads. Desta forma, os blocos de controle destas ramificaes armazenam apenas as informaes individualizadas, que no podem ser compartilhadas com o processo que as gerou. Ento as informaes mencionadas poderiam ser divididas como sugerido na tabela a seguir. Todas a informaes especficas contidas no TCB so equivalentes s contidas no PCB. Uma diferena marcante entre processos e suas ramificaes que, enquanto os processos oscilam entre trs estados, os threads incluem um quarto estado, o concludo. Portanto, os threads podem assumir qualquer um dos seguintes estados: - pronto: em condies de ser executado, aguardando o momento adequado para usar o processador; - ativo: em execuo no processador; - bloqueado: sem condies de ser executado, esperando que outra ramificao libere algum recurso que necessita, para poder voltar ao estado de pronto para execuo; e - concludo: terminou o processamento e aguarda a leitura de resultados obtidos pelo processo gerador. Quando o objetivo a agilidade no processamento, os threads devem ser implementados no espao de usurios. Desta forma, ao contrrio dos processos, que tm seu funcionamento controlado diretamente pelo sistema operacional, o funcionamento dos threads supervisionado pelo procedimento de tempo de execuo, que serve como interface entre a mquina virtual (processos) onde rodam os threads e o sistema operacional.

30

Nos Processos (PCB) Informaes Compartilhadas Espao de Endereamento Variveis Globais Arquivos Abertos Temporizadores Sinais Semforos Contabilizao de Recursos Informaes Especficas Processos Filhos Contador de Programa Pilha Conjunto de Registradores Estado

Nas Ramificaes (TCB) Informaes Compartilhadas Informaes Especficas Processos Filhos Contador de Programa Utiliza informaes do processo que a gerou Pilha Conjunto de Registradores Estado

Como, ao serem implementados no espao de usurios o sistema operacional no enxerga os threads, cada processo tem que multiplexar entre seus threads a quota de tempo que recebe do processador. O escalonamento dos threads e as respectivas chamadas ao sistema so tratados pelo procedimento de tempo de execuo. Como a chamada efetiva ao sistema operacional provocaria uma interrupo na execuo do processo gerador e, conseqentemente, de todos os demais threads, quando uma ramificao faz uma chamada ao sistema operacional sua requisio colocada em uma fila FIFO e o thread bloqueado, ativando-se outra ramificao que esteja pronta para execuo. Quando se esgotarem os threads executveis ou a quota de tempo ao sistema operacional na ordem em que foram feitas e o processo ento bloqueado. Deste mo