INTRODUÇÃO AOS SISTEMAS OPERACIONAIS agosto/2013 SEMANA 05 Sistemas multiprocessados 1 - Introdução Os sistemas multiprocessados são sistemas com múltiplos processadores e caracterizados pela execução simultânea de duas ou mais instruções pelo uso de mais de um processador. Nesse caso, os conceitos de multiprogramação são aplicados a vários processadores ao mesmo tempo. Os sistemas multiprocessados permitem que vários programas sejam executados em paralelo, ou que um programa tenha duas ou mais de suas instruções executadas em paralelo. O multiprocessamento pode ocorrer em múltiplos processadores que compartilham uma mesma memória primária (fortemente acoplados) ou em múltiplos computadores independentes, com o uso de sistemas operacionais de rede ou sistemas operacionais distribuídos (fracamente acoplados). No caso de computadores independentes, cada um tem seus próprios recursos. Os sistemas multiprocessados podem ser classificados como fortemente acoplados e fracamente acoplados, que está relacionado à forma de comunicação entre esses múltiplos processadores. Os sistemas fortemente acoplados são classificados em simétricos e assimétricos. Nos sistemas fracamente acoplados, os processadores estão em diferentes máquinas e são classificados como sistemas operacionais de rede e sistemas Sistemas multiprocessados operacionais distribuídos. No entanto, não existe muito consenso em torno das definições de sistemas operacionais distribuídos. Alguns autores consideram esse sistema fortemente acoplado quando provê um nível de integração e compartilhamento de recursos mais intenso e transparente ao usuário. O fato é que, nesse caso, fortemente ou fracamente Sistemas fortemente acoplados Sistemas simétricos Introdução aos Sistemas Operacionais - www.jairo.pro.br Sistemas assimétricos Sistemas fracamente acoplados Sistemas Sistemas operacionais operacionais de redes distribuídos Fig 1 – Sistemas multiprocessados 1/8 acoplado depende da solução de software adotada. 2 - Sistemas fortemente acoplados Pela necessidade de formas mais rápidas de processamento, as tecnologias têm caminhado para a utilização de técnicas de paralelismo. Paralelismo consiste em dividir o processo em fragmentos e executar simultaneamante em diferentes processadores, isso para aumentar a velocidade de execução de um programa. Sistemas fortemente acoplados são os que têm mais de um processador ligado no mesmo barramento. Nesse caso, existe processamento paralelo, aumento da capacidade de processamento, compartilhamento da memória e de periféricos e também tolerância a falhas [se um processador parar, o outro continua funcionando]. 2.1 - Sistemas simétricos Uma forma de paralelismo é SMP [Symmetric Multi-Processor, ou multi processadores simétricos], onde um grupo de processadores trabalha em conjunto compartilhando uma única memória através de um único barramento. Isso torna possível qualquer processador executar uma parte do processo. O Multiprocessamento simétrico trata todos os processadores igualmente. Qualquer processador pode fazer o trabalho de outro processador, e os processos são divididas em correntes que podem rodar concorrentemente em qualquer processador disponível. O SMP melhora tanto o desempenho da própria aplicação quanto o processamento total do sistema. Os sistemas SMP requerem alguma forma de memória compartilhada e suporte do sistema operacional, além de aplicações que saibam tirar proveito do paralelismo. Os sistemas modernos como Linux, Windows, Mac OS e membros da família Unix suportam SMP. Num sistema SMP, em cada um dos processadores roda uma cópia idêntica do sistema operacional, existe comunicação entre esses processadores e as tarefas [processos] são distribuídas [escalonadas] entre os processadores. Atualmente multiprocessamento SMP é muito usado em máquinas com mais de um processador. Essa máquina usa arquitetura de processadores paralelos MIMD [Multiple Instruction Multiple Data]. No entanto, se houver mais de 8 processadores em paralelo a solução é NUMA [Non-Uniform Memory Access, ou acesso não uniforme à memória]. 2.2 - Sistemas assimétricos Introdução aos Sistemas Operacionais - www.jairo.pro.br 2/8 Nos sistemas de multiprocessamento assimétrico, os processadores não são tratados igualmente e existe um processador que é o mestre e controla o sistema, que fica distribuindo tarefas para cada processador escravo. Essa solução é antiga e permitia adicionar mais um processador a um sistema desenvolvido para trabalhar com um único processador. Essa solução foi usada nos anos 1960 e 1970, como exemplo existe o modelo IBM System/370 onde era possível adicionar mais um processador. Mais recentemente, a diferença entre multiprocessamento simétrico e assimétrico pode ser o resultado da combinação de software e hardware. Por exemplo, num mesmo hardware o sistema SunOS 41 provia processamento assimétrico, já a versão 5 trabalhava com processamento simétrico. 3 - Sistemas fracamente acoplados O sistema é fracamente acoplado quando depende da rede para distribuir a tarefa de processamento. Ou seja, as CPUs estão em computadores diferentes. E cada computador tem seu próprio sistema operacional e independentemente gerencia os seus próprios recursos. 3.1 - Sistemas operacionais de redes Os sistemas são independentes, cada um roda numa máquina e estão em rede. Um sistema operacional de rede propicia o protocolo para comunicação e transferência de dados entre os usuários e servidores nessa rede. Cada nó na rede é independente e capaz de executar suas próprias aplicações. Network Operating System [NOS], ou Sistema Operacional de Rede é usado para gerenciar a preparação, transmissão e recepção de dados entre computadores em rede. Com o NOS, o acesso a recursos em rede se passa de forma transparente para o usuário, que tem a sensação de que os recursos são locais. Localmente o usuário continua com o seu sistema operacional, e o NOS pode ser visto como uma camada adicional que facilita o acesso a recursos em rede. Num exemplo bem simples, no Windows um drive lógico rotulado como "N" leva para um recurso em outra máquina, mas o usuário vê o recurso como local, no seu sistema. Nesse caso, o acesso ao recurso em rede é transparente para esse usuário. Dessa definição conclui-se que o sistema operacional de rede é independente do sistema operacional nativo naquele computador, ou seja, trata-se de uma "casca" adicional que fornece acesso em rede baseado num protocolo específico. Outro exemplo é o NetWare da Novell, usado para compartilhar servidores de arquivos e impressoras em rede. No início dos anos 1990 liderava esse mercado, mas depois perdeu espaço 1 Sun OS 4: é um sistema operacional Unix criado pela Sun Microsystems. A versão 4 foi lançada em 1988. As versões atuais são chamadas de Solaris. Introdução aos Sistemas Operacionais - www.jairo.pro.br 3/8 para o Linux e para Windows. O NetWare é baseado no paradigma cliente/servidor com programas clientes em Windows9x, Windows NT/2000/XP e Mac OS e OS/2 e com servidores centrais dedicados, que autenticam os clientes e distribuem recursos a eles. Ainda como exemplo, o LANtastic criado pela Artisoft inclui software especializado em um chip no ROM2 da placa de rede, que executa funções de gerenciamento da ligação física. Com isso, o NOS transfere para esse software a tarefa de busca e acesso aos recursos em rede, resultando em transmissão mais rápida de dados através da rede. Mas assim como o NetWare, perdeu muito espaço no mercado após o lançamento do Windows 95. Em 2006 LANtastic suportava inclusive Windows XP. O Mac OS da Apple também trabalha como sistema operacional de rede. 3.2 - Sistemas operacionais distribuídos Conceitualmente, um sistema operacional distribuído é para integrar cooperativamente a tarefa de processamento nos computadores que compõem essa rede. E isso de forma transparente para os usuários, que têm a sensação de que o sistema se comporta como uma arquitetura multiprocessada. Sistema distribuído é composto por uma coleção independente de computadores em rede, mas que para o usuário aparenta ser um só: o hardware é composto de máquinas autônomas, e o software fornece ao usuário a abstração de ser uma única máquina. O sistema operacional que roda nas máquinas dessa rede é que distribui a tarefa de processamento entre os computadores, com ausência de memória compartilhada entre essas máquinas. Nesse sistema, os recursos são disponibilizados na rede de forma transparente ao usuário. Teoricamente, implica em dizer que os usuários nem percebem que esses recursos estão disponíveis na rede e não na máquina local. Aliás, é essa a diferença entre sistema distribuído e rede de computadores: no primeiro caso o usuário vê um único sistema e acha que todos os recursos são locais, no segundo caso o usuário precisa explicitamente solicitar pelo recurso na rede. Numa definição resumida, um sistema distribuído representa um caso especial de rede, e a principal distinção entre eles está no software de comunicação e não no hardware. Este software é usualmente denominado de sistema operacional de rede. A vantagem desse sistema é justamente a simplicidade e facilidade de instalação, administração e uso. Contudo, o sistema distribuído é menos confiável que o sistema clienteservidor, e em geral requer estações de trabalho mais poderosas para algumas atividades, como é o caso de compartilhar uma base de dados ao invés de disponibilizá-la num servidor de banco de dados. Nesse exemplo específico, não apenas as estações envolvidas no compartilhamento sofrem, como também a rede fica sobrecarregada pelo tráfego de dados excessivos e desnecessários. 2 ROM: Read Only Memory, ou memória somente de leitura. Introdução aos Sistemas Operacionais - www.jairo.pro.br 4/8 Parece claro que o aspecto dimensão da rede afeta a melhor escolha do sistema a ser implantado, de um modo geral se a rede for pequena [poucas estações de trabalho] o sistema distribuído é ideal, já se a rede for grande deve-se partir para o sistema cliente-servidor. No sistema distribuído existe uma forte dependência da rede, pois parte significativa dos recursos são acessados desse modo. Ainda assim, o sistema distribuído é mais confiável que, por exemplo, um sistema centralizado onde todos os recursos estão na mesma máquina [pois a máquina central poderia parar e com isso toda a atividade em rede pararia]. No sistema operacional distribuído, em caso de falha de uma máquina o sistema como um todo pode sobreviver, apesar da degradação no desempenho. Além de ser mais confiável, existe o crescimento incremental: mais e mais máquinas podem ser adicionadas ao sistema distribuído, que pode até melhorar o desempenho de processamento. Isso contrasta com o sistema centralizado. As vantagens do sistema distribuído estão no compartilhamento de dados, dispositivos, periféricos e comunicação em rede. Esse sistema é mais flexível do que máquinas simplesmente isoladas. Outra vantagem é a econômica, pois aproveita e usa máquinas ociosas nessa rede. Como desvantagem temos a segurança inadequada, pois os recursos computacionais são compartilhados entre todos os usuários. Outra desvantagem é que a rede precisa ser bem dimensionada para poder dar vazão à demanda de diferentes computadores que se comunicam para dividir a tarefa de processamento. Mas a principal desvantagem é a necessidade de sistemas operacionais específicos e a quase ausência de software de alto nível disponível para sistemas distribuídos. Atualmente, sistemas operacionais distribuídos ainda não estão comercialmente disponíveis. Embora teoricamente vantajoso, comercialmente tem sido um fracasso a implantação desses sistemas. Alguns exemplos de sistemas operacionais distribuídos são: • • • • • • Amoeba Athena Mach Plan 9 V System Sprite http://amoebaos.org/, http://www.cs.vu.nl/pub/amoeba/ http://ist.mit.edu/services/athena http://www.cs.cmu.edu/afs/cs.cmu.edu/project/mach/public/www/mach.html http://plan9.bell-labs.com/plan9/ http://en.wikipedia.org/wiki/V_(operating_system) http://www.eecs.berkeley.edu/Research/Projects/CS/sprite/sprite.html 4 - Outras classificações para sistemas operacionais 4.1 - Sistema descentralizado Introdução aos Sistemas Operacionais - www.jairo.pro.br 5/8 Em um ambiente descentralizado, cada usuário cuida do seu sistema, dos seus aplicativos e dos seus dados (arquivos). Contudo, essa independência pode levar a duplicação de dados e inconsistências, além de redundâncias desnecessárias. Além dos problemas já citados, essa implementação também implica em maiores custos de hardware, manutenção, suporte e operação. O sistema descentralizado somente está sendo citado aqui para efeito de comparação com o próximo item, que é o sistema centralizado. Afinal, sistema descentralizado está relacionado ao ambiente de trabalho adotado em determinada organização, e não especificamente a um tipo de sistema operacional. 4.2 - Sistema centralizado No sistema centralizado, um único computador acomoda os dados e recursos computacionais da organização. Neste caso, o acesso ao computador central se dá a partir de terminais remotos que formam um conjunto chamado de rede de terminais. Porém, tecnicamente em alguns casos essa construção não pode ser classificada como rede de computadores. A sua principal vantagem reside na economia obtida pela aquisição de um único sistema centralizado ao invés de vários computadores descentralizados, além de facilitar as operações de gerenciamento, suporte e comunicação entre os usuários. No passado esse sistema era chamdo de "terminal burro da IBM", mas hoje em dia - apesar de quase extinto - esse conceito está renascendo justamente pela redução de custos que proporciona quando comparado com o sistema descentralizado. E o recente barateamento nas técnicas de virtualização3 tem proporcionado um novo impulso à centralização, mas não implica que a centralização dependa de virtualização. Convém citar que esse "renascimento" ocorre agora dentro de um conceito de ambiente em rede, através de um protocolo padronizado de comunicação. Aqui, redução de custos na aquisição de um único sistema centralizado não significa apenas economia de hardware e software, mas também está sendo levado em conta o fato de que muitas máquinas completas (inclusive com um sistema operacional e aplicativos instalados no sistema de arquivo) estão mais suscetíveis a problemas que acarretam custos de help desk e suporte técnico. A desvantagem reside no próprio sistema centralizado, que é um ponto único de falha: se ele parar, toda a organização irá parar também. 4.3 - Sistema cliente-servidor Atualmente, a maioria das aplicações em rede ocorre num paradigma cliente-servidor. Como o próprio nome diz, nessa transação existem duas partes envolvidas: a do cliente, na forma de um processo cliente gerado por algum aplicativo (por exemplo, navegador da internet), e a parte do 3 A virtualização foi desenvolvida no anos 1960 para melhor utilização do hardware dos mainframes. Introdução aos Sistemas Operacionais - www.jairo.pro.br 6/8 servidor, também na forma de um processo (por exemplo, serviço ou servidor web). No caso do processo cliente, ele é gerado para conectar e transferir os dados para o processo servidor, que precisa estar o tempo todo "escutando" por alguma requisição do cliente. Um exemplo clássico é a impressora de rede: o cliente usa determinado aplicativo que, ao solicitar que imprima, gera um processo cliente que conecta no processo servidor, esse último já na impressora. Aqui, a rede é um veículo que transporta os dados da estação de trabalho do cliente para o servidor de impressão através de um protocolo de comunicação comum às duas partes envolvidas nessa transação. Convém notar que esse acesso é diferente do sistema distribuído, pois agora o usuário precisa manifestar a intenção em imprimir em determinada impressora, nitidamente fora do seu computador desktop. Outro aspecto do modelo cliente-servidor é o protocolo de comunicação (normalmente TCP/IP) padronizado tanto para o cliente quanto servidor, além da porta de acesso (porta TCP) no servidor, que também deve se padronizada e por isso mesmo conhecida do aplicativo cliente. Com isso, tanto cliente quanto servidor têm a liberade de usar o sistema operacional que for mais eficiente para a tarefa em questão, pois toda a comunicação está baseada num protocolo de comunicação em rede que é comum às duas partes envolvidas. É por essas características de uso intensivo da rede, além do desejo de otimizar recursos de hardware, que são construídos sistemas operacionais voltados para tarefas específicas em rede. É daí que vem o conceito de sistema operacional desktop (estação de trabalho) e servidor. Por exemplo, o Windows 7 é um sistema tipicamente desktop, já os sistemas operacionais da famíla Unix (Solaris, AIX, HP-UX, etc.) de um modo geral estão tipicamente voltados para a tarefa de servidores. 4.4 - Sistema baseado na WWW O conceito de aparelho de rede, aparelho de informação ou aparelho de internet engloba uma grande quantidade de equipamentos que normalmente difere dos computadores pessoais por suportar geralmente uma aplicação única como navegador web ou correio eletrônico e, em muitos casos, nem ao menos possuirem teclado, mouse ou monitor. Esses equipamentos portáteis são muito úteis para aqueles usuários que querem ter acesso móvel à internet sem ter de arcar com os problemas e custos de um computador normal. Como exemplos temos computadores de mão como o PalmPilot, smartphone, alguns game players e tablet. Atualmente até aparelhos de televisão (smart TV) permitem navegar na internet. Existe também o conceito de computadores de rede, similares a estações de trabalho Unix sem disco (X-terminal diskless), que são sistemas reduzidos e usam a rede para acessar as aplicações e guardar arquivos e pastas de trabalho. Por serem bem simples, os computadores de rede exigem muito pouca manutenção, suporte e help desk, daí o crescente interesse neles atualmente. Introdução aos Sistemas Operacionais - www.jairo.pro.br 7/8 Por exemplo, pode-se imaginar determinada empresa que, para economizar custos de hardware, software e help desk, adota computadores de rede e contrata os serviços de um provedor de serviço de aplicação (ASP - Application Service Provider) para fornecer tanto o acesso à internet quanto a disponibilização de aplicativos como editores de texto e espaço para armazenamento de dados para que seus funcionários possam trabalhar e salvar seus arquivos. Os funcionários podem então rodar todos os aplicativos disponibilizados pelo ASP, além de disporem de algum espaço em disco para salvar seu trabalho. Como exemplos tem o thin client [cliente magro] e LTSP4. Paradoxalmente, o sistema baseado na WWW nos remete de volta ao quadro antigo do sistema centralizado, só que agora com uma cara nova quando comparado com o teminal burro. 4 LTSP: Linux Terminal Service Project [http://www.ltsp.org/]. Introdução aos Sistemas Operacionais - www.jairo.pro.br 8/8