MULTIPROCESSADORES [email protected] Acoplamento de processadores Fortemente acoplados As CPUs são conectadas no nível de barramento As CPUs podem acessar uma memória compartilhada Fracamente acoplados Também conhecido como clusters Computadores comuns com um ou dois processadores cada interconectados por uma rede de alta velocidade Tipos de sistemas operacionais multiprocessados O que muda quando passamos a ter mais de um processador, compartilhando a memória RAM? Como fica o desenho de Fubica? Cada um no seu quadrado Cada CPU com seu próprio SO Mestre/escravo Multiprocessadores mestre-escravo Direitos iguais! Multiprocessadores simétricos (SMP) Desafios Desafios Desafios Escalonamento com multiprocessadores 1. 2. Qual o próximo processo a ganhar a CPU? Em que CPU? Ou em que CPUs? Compartilhamento No tempo Um processo ganha uma fatia de tempo do processador No espaço Um processo ganha um conjunto de processadores (dimensão adicional) por uma fatia de tempo Processos possuem diversas linhas de execução, de forma que é possível executá-lo em diferentes CPUs Escalonamento com compartilhamento no tempo Fila única de processos prontos + simples + balanceamento de carga automática − contenção pela estrutura compartilhada − custo da mudança de contexto quando um processo bloqueia para E/S − spinlocks Escalonamento esperto Escalonamento por afinidade Escalonamento com compartilhamento no espaço Processos formados por múltiplas linhas de execução Clusters e supercomputadores Algoritmo mais simples (FCFS): Tem CPUs suficientes? Sim: escalona o processo Não: espera até que um número de CPUs suficientes esteja disponível Menor Job Primeiro Detalhe: a CPU fica ociosa quando a linha de execução é bloqueada para E/S Backfilling Solicita o tempo esperado de uso dos processadores Permite que novas requisições sejam atendidas antes de requisições mais antigas Requisições mais antigas devem ter mais chance de ganhar os processadores que requisições mais novas Deve-se evitar que requisições grandes sejam postergadas indefinidamente Conservative backfilling (simplificadamente) Põe os jobs no primeiro slot que eles couberem Sempre que um job usar menos que o tempo alocado, o escalonador tenta promover jobs já escalonados para executarem antes Ex.: Crono