1 / 31

6. Sistemas com Múltiplos Processadores

6. Sistemas com Múltiplos Processadores. Introdução. Limitações à velocidade de processamento do hardware Propagação dos sinais eléctricos Limitados pela velocidade da luz nos condutores eléctricos Os computadores têm que ser cada vez mais pequenos Dissipação Calor

Download Presentation

6. Sistemas com Múltiplos Processadores

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 6. Sistemas com Múltiplos Processadores

  2. Introdução • Limitações à velocidade de processamento do hardware • Propagação dos sinais eléctricos • Limitados pela velocidade da luz nos condutores eléctricos • Os computadores têm que ser cada vez mais pequenos • Dissipação Calor • Por outro lado, quanto mais pequenos são mais difícil é efectuar a dissipação de calor • Solução • Obter maior capacidade de processamento através da associação de vários elementos com capacidade processadora (nodos)

  3. Introdução • Arquitecturas típicas • Multiprocessadores • Várias CPUs, habitualmente na mesma placa • Comunicação entre CPUs através de memória partilhada • Clusters (Multicomputadores) • Cada CPU tem a sua memória • Comunicação entre CPUs feita através de mensagens • Sistemas distribuídos • Hardware disperso pelo mundo • Sistemas em rede – partilha de alguns recursos (ex: ficheiros) • Sistemas verdadeiramente distribuídos – partilha de tudo

  4. Introdução • Arquitecturas típicas

  5. CPU CPU CPU Memória partilhada CPU CPU CPU CPU CPU Multiprocessadores • Vários processadores fisicamente muito próximos uns dos outros • Uma memória física partilhada por todos os processadores • Geralmente dividida em vários módulos • Utilizados na resolução de cálculos computacionais muito exigentes em processamento, mas paralelizáveis

  6. Multiprocessadores • Hardware • Ligação por BUS • Todos os CPUs e Memória partilham o mesmo BUS • A capacidade de processamento fica limitada pela velocidade do BUS • Possibilidade de engarrafamento (bottlenecks) no BUS • Cada CPU tem que esperar que o BUS esteja livre para poder aceder à memória partilhada • Soluções para minorar este problema: • Dotar cada CPU de uma cache – são necessárias políticas de coerência mais complexas • Dotar cada CPU de uma memória privada

  7. Multiprocessadores • Ligação por BUS(configurações) Simples Cada CPU tem a sua cache Cada CPU tem a sua cache e uma memória privada

  8. Multiprocessadores • Comutadores (Switches) • Alternativa ao BUS para minorar engarrafamentos • Conseguem-se mais ligações em simultâneo estabelecendo caminhos separados entre os CPUs e a memória partilhada • Distribui-se a memória partilhada por vários módulos

  9. Switch Multiprocessadores • Switch clássico • O switch é basicamente constituído por um conjunto de linhas que se cruzam, existindo um interruptor por cruzamento • Quando o interruptor é activado, as duas linhas que se cruzam ficam ligadas uma à outra • Com n processadores e n módulos de memória são necessários n x n pontos de cruzamento, pelo que não é aconselhável este esquema para valores elevados de n

  10. Multiprocessadores • Organização do Sistema Operativo • Cada CPU tem o seu SO • O código do SO encontra-se carregado em memória • Cada CPU corre uma cópia privada desse código • Problema: • A arquitectura multiprocessador fica parecida com um conjunto de arquitecturas uniprocessador • No entanto está facilitada a comunicação entre processos e a partilha de periféricos Memória

  11. Multiprocessadores • Master-Slave • Um dos CPUs – o Master – está encarregue de correr o sistema operativo • Os outros CPUs – Slaves – direccionam as chamadas ao sistema para o Master • Problema: • Probabilidade elevada de engarrafamento no Master quando o número de processadores é elevado

  12. Multiprocessadores • SMP – Symmetric Multiprocessor • Cada processador pode processar as chamadas ao sistema e correr processos do SO • São necessários mecanismos de sincronização para assegurar a exclusão mútua quando se correm certos processos do SO • Ex: 2 processadores a actualizar process tables em simultâneo – uma região crítica... • Soluções: • Proteger todo o SO com um mecanismo de sincronização • Problema: o sistema fica parecido com Master-Slave... • Uma alternativa melhor consiste em dividir o SO em regiões críticas independentes e proteger individualmente cada uma delas • Problema: é preciso ter em especial atenção a possibilidade de deadlocks

  13. Multiprocessadores • Sincronização • Para um sistema uniprocessador vimos que as operações atómicas permitiam a implementação de mecanismos de sincronização eficientes • Com multiprocessadores são inviáveis as operações atómicas sob o ponto de vista do SO • Não se podem utilizar semáforos... • Outra possibilidade é a utilização da instrução TSL (Test and Set Lock) – atómica do ponto de vista da CPU • Do modo que foi estudado anteriormente não funciona, pois um processador B pode-se “intrometer” enquanto um processador A executa a instrução TSL

  14. Multiprocessadores • No entanto existe uma variante da instrução TSL • O primeiro passo é trancar o BUS, de seguida executa-se TSL e destranca-se o BUS (ou o switch) • Deste modo previne-se que um processador B aceda à memória, enquanto um processador A executa a instrução TSL • O modo como um processador reage a um trinco fechado levanta outra questão: • Fica em ciclo a testar o trinco ? • Ou efectua uma comutação de processos ? • No caso de sistema uniprocessador a escolha seria fácil – bloquear o processo corrente e efectuar uma comutação • Nos multiprocessadores não é bem assim...

  15. Multiprocessadores • Caso 1 – o processador fica em ciclo • Neste caso o trinco denomina-se Spin Lock • Tem-se uma situação de espera activa – o CPU vai ficar em ciclo durante o qual não efectua processamento útil • Mas o mais grave é o CPU ocupar desnecessariamente o BUS(Muitos CPUs trancados podem ser a causa de um bottleneck) • Existem algumas estratégias para evitar a ocupação do BUS • Guardar o valor trinco num bloco de cache especial(assim o CPU não utiliza o BUS) • Ir introduzindo um atraso adicional entre verificações do valor do trinco

  16. Multiprocessadores • Caso 2 – o processador comuta de processo • A comutação de processos em arquitecturas multiprocessador não é tão rápida como numa arquitectura uniprocessador • Se demorar mais tempo do que a destrancar o trinco, não vale a pena... • Pode ainda acontecer que os recursos trancados sejam por exemplo as process tables dos processos executáveis • Neste caso é impossível escolher um novo processo para correr... • Uma terceira hipótese seria a possibilidade de escolha entre comutar ou não, consoante a situação em causa

  17. Multiprocessadores • Sequenciamento • O sequenciador de processos é mais complexo do que num sistema uniprocessador • É necessário escolher não só qual o processo a executar, mas também qual o processador a atribuir a esse processo • O sequenciador deve-se também preocupar com os grupos de processos (ou threads) que estão relacionados entre si • Suponha-se que existe um grupo de dois processos – um produtor e um consumidor • Não faz sentido correr o consumidor e só muito mais tarde o produtor... Convém que corram os dois ao mesmo tempo

  18. Multiprocessadores • Alguns tipos de algoritmos • Timesharing • Trata os processos individualmente • Todos os processadores têm que aceder à fila de processos executáveis (o que pode originar engarrafamentos) • Spacesharing • Trata os processos (ou threads) por grupos relacionados • Atribui conjuntos de processadores a grupos de processos • Os processos correm no conjunto de processadores atribuídos até terminarem • Gang • Cada grupo de processos corre num conjunto de processadores durante um certo intervalo de tempo - quantum • No fim do quantum comuta-se para um novo grupo

  19. M M CPU CPU CPU CPU M M M M CPU CPU Ligações CPU CPU M M Clusters (Multicomputadores) • Várias CPUs ligados através de uma rede local dedicada, e que comunicam entre si através de mensagens • Cada CPU tem a sua memória privada • O projecto da rede e a interface CPU-rede são os factores mais importantes para o desempenho do sistema • Tal como os multiprocessadores, são utilizados na resolução de cálculos computacionais complexos

  20. Clusters (Multicomputadores) • Ligações típicas • Estrela • Um nodo central e todos os outrosligados a ele • Inexistência de caminhos alternativos • Devido a isso, o nodo central pode ser um switch • Anel • Cada nodo ligado a dois vizinhos • Só existem dois caminhos • Os caminhos podem ser demasiado longos • Muito utilizada quando existem poucos nodos

  21. Clusters (Multicomputadores) • Ligações típicas • Grelha • Muitos caminhos alternativos • Alguns caminhos são longos • Toro duplo • Variante da grelha com oobjectivo de encurtar caminhos

  22. Clusters (Multicomputadores) • Ligações típicas • Cubos e hiper-cubos • Estruturas de ligações caracterizadas por o caminho mais ser proporcional ao número de dimensões do hiper-cubo • Cubo (3D) – caminho mais longo – 3 ligações • Hipercubo 4D – caminho mais longo – 4 ligações • Utilizada quando existe um nº muito elevado de nodos (ex: 1024 nodos)

  23. Clusters (Multicomputadores) • Comunicação por envio/recepção de mensagens • Utilização de chamadas ao sistema do tipo Send e Receive(de modo análogo ao estudado para as filas de mensagens) • As chamadas podem ser bloqueantes ou não bloqueantes • Bloqueantes • o emissor bloqueia enquanto a mensagem não é enviada • o receptor bloqueia enquanto não recebe a mensagem • Não bloqueantes • do lado do emissor, a mensagem é copiada para um buffer do núcleo, e depois disso o processo continua em execução • há que ter em conta que não se pode enviar uma nova mensagem enquanto a anterior não tiver sido despachada

  24. Clusters (Multicomputadores) • Chamadas bloqueantes vs. não-bloqueantes

  25. Clusters (Multicomputadores) • Comunicação por RPC (Remote Procedure Call) • Abordagem alternativa que tenta evitar que a comunicação se assemelhe a operações de I/O • Basicamente consiste no envio de parâmetros para um procedimento que corre noutra máquina • Limitações: • Não podem ser passados parâmetros por referência – pois o espaço de endereçamento na outra máquina é diferente • O número de parâmetros não pode ser variável (como acontece, por exemplo, na função fprintf) • Não podem ser utilizadas variáveis globais(Existem alguns “truques” para contornar estas limitações)

  26. Clusters (Multicomputadores) • Comunicação por DSM (Distributed Shared Memory) • Neste modelo, o SO estabelece um espaço de endereçamento global divido em páginas que são espalhadas pelo vários nodos • Quando um nodo faz uma referência a uma página que não se encontra carregada na sua memória, passa-se ao modo núcleo e o SO procura a página em questão • As mensagens trocadas pelos nodos consistem em páginas de memória • Do ponto de vista do SO, basicamente ocorre uma page-fault, mas vai-se buscar a página a outro nodo e não ao disco • Do ponto de vista do utilizador, aparentemente é utilizada memória partilhada, embora fisicamente não o seja

  27. Clusters (Multicomputadores) • Sequenciamento • Um sequenciador para clusters pode ser visto como um sequenciador a dois níveis • Sequenciador global • Efectua a escolha do nodo no qual vai ser iniciado um processo • Tenta manter os recursos equilibrados nos vários nodos • Sequenciador local • Presente em cada nodo • Comporta-se como um sequenciador para um sistema uniprocessador

  28. Sistemas Distribuídos • Os vários nodos são agora computadores completos • Estão espalhados por uma rede que pode ser a Internet • Podem-se subdividir em duas categorias: • Sistemas em rede • São partilhados alguns recursos entre os vários nodos, mas não processadores (é o caso da rede de computadores do ISCTE) • Os sistemas operativos diferem de nodo para nodo • Sistemas operativos distribuídos • Neste caso existe também partilha de processadores • Utiliza-se um único sistema operativo • A grande diferença em relação aos clusters reside no tempo que uma mensagem demora a chegar de um nodo a outro, o que obriga o SO a possuir algumas características adequadas ao problema

  29. Sistemas Distribuídos • A possibilidade de existirem diversos Sistemas Operativos obriga à existência de uma base comum para as aplicações – Middleware – • O middleware pode ser considerado um sistema operativo a correr por cima de outro sistema operativo

  30. Sistemas Distribuídos • O middleware pode ser a vários níveis • Documentos • Ex: WWW (World Wide Web) • Sistema de ficheiros • Partilha de ficheiros, uploads/downloads, etc. • Objectos • Linguagens de programação orientadas para objectos distribuídos (invocar métodos remotamente) • Ex: CORBA (Common Object Request Broker Arquitecture) • Midlleware coordenado • Troca de dados e sincronização entre vários processos a correr em máquinas diferentes • Ex: Jini (Sun)

  31. Sistemas Distribuídos • Sistema verdadeiramente distribuído • Existência de um único SO que transformasse um conjunto de máquinas espalhadas pelo mundo numa única máquina virtual • Existência de chamadas ao sistema comuns em todas as máquinas • Criação e destruição de processos feitos de igual modo em todas as máquinas. Existência de sequenciamento global • Um único sistema de ficheiros comum. Cada utilizador estaria sujeito às mesmas regras de protecção e segurança • Este sistema teria características próximas dos clusters e dos sistemas em rede. (E eventualmente de multiprocessadores) • Ainda não existe nenhum sistema operativo com todos estes requisitos...

More Related