Arquitetura de Computadores Ricardo de Sousa Britto SEGMENTAÇÃO Motivação Sistema de Memória virtual por paginação é unidimensional. Problema: Estruturas de dados dinâmicas (pilhas, tabelas de símbolos ...) podem encostar umas nas outras. Solução: Dividir a memória em segmentos Segmentos: Espaços de endereçamento unidimensionais independentes de tamanho variável SEGMENTAÇÃO Motivação SEGMENTAÇÃO Motivação SEGMENTAÇÃO Funcionamento A memória é organizada de forma bidimensional. Um segmento armazena apenas um tipo de estrutura de dados e não é transparente para o usuário. Permite manipular de forma independente estruturas dinâmicas. SEGMENTAÇÃO Funcionamento Segmentos diferentes podem ter diferentes tipos de proteção. Procedimentos podem ser armazenados em segmentos distintos. Se um procedimento for modificado, nenhum outro precisa ser modificado. Procedimentos podem ser compartilhados por processos paralelos. SEGMENTAÇÃO Segmentção X Paginação SEGMENTAÇÃO Implementação Existem duas formas de se implementar segmentação: – – Swapping Paginação SEGMENTAÇÃO Segmentação por Swapping Semelhante a paginação por demanda. Memória armazena conjunto de segmentos de tamanho variável. Problema: geração de buracos = Fragmentação externa Solução: Compactação, Best fit, First fit, Compensação de Buracos. SEGMENTAÇÃO Segmentação por Swapping SEGMENTAÇÃO Segmentação por Swapping SEGMENTAÇÃO Compactação Mover todos os segmentos que estiverem acima de um buraco de modo a ocupar-lo Duas abordagens: Compactar quando aparece um buraco ou quando tem um quantidade determinada Desvantagem: Gasta muito tempo para ser executada SEGMENTAÇÃO Best Fit Colocar um novo segmento na memória de forma a deixar a menor folga possível Evita que buracos grandes sejam transformados em buracos menores Deve-se manter uma lista de buracos, contendo o endereço e tamanho deles SEGMENTAÇÃO First Fit Deve-se manter uma lista de buracos, contendo o endereço e tamanho deles Fica-se percorrendo a lista até encontrar um buraco suficientemente grande Mais rápido que o best fit SEGMENTAÇÃO Compensação de Buracos Ao retirar um segmento vizinho a um buraco, cria-se um buraco maior formado pela soma do velho e do espaço novo Deve-se manter uma lista de buracos, contendo o endereço e tamanho deles Pode ser utilizado juntamente com o best fit e o first fit SEGMENTAÇÃO Segmentação por Paginação Segmentos são divididos em um conjunto de páginas Páginas são carregadas por demanda na memória principal Em um dado momento, algumas páginas de um segmento podem estar na memória principal e outras na memória virtual É necessário manter uma tabela de páginas pra cada segmento SEGMENTAÇÃO Segmentação por Paginação MULTIPROGRAMAÇÃO Motivação Alguns algoritmos podem ser mais bem programados se forem implementados por meio de 2 ou mais processos cooperantes Outros algoritmos podem ser divididos em várias partes, de forma a serem executadas em paralelo MULTIPROGRAMAÇÃO Paralelismo Real X Paralelismo Simulado Paralelismo real: processos rodam em pc com mais de um processador ou roda em vários pcs Paralelismo simulado: processos compartilham um mesmo pc, sendo escalonados pelo SO MULTIPROGRAMAÇÃO Paralelismo Real X Paralelismo Simulado MULTIPROGRAMAÇÃO Condição de Corrida Dois processos (produtor e consumidor) assíncronos comunicam-se por meio de um buffer circular. Produtor: calcula números e os armazena no buffer Consumidor: remove os números do buffer (um por vez) e os imprime MULTIPROGRAMAÇÃO Condição de Corrida Ponteiro entrada: aponta para a próxima palavra livre do buffer Ponteiro saída: aponta para o próximo número a ser removido O topo do buffer é logicamente contíguo ao fundo Entrada = Saída, buffer vazio Quando entrada esta logicamente uma palavra atrás de saída, o buffer está cheio MULTIPROGRAMAÇÃO Condição de Corrida MULTIPROGRAMAÇÃO Procedimento Produtor MULTIPROGRAMAÇÃO Procedimento Consumidor MULTIPROGRAMAÇÃO Problema Inconsistência nos valores para entrada e saída Processo produtor envia sinal de acordar para consumidor em momento errado Isso leva aos os dois processos dormirem em um determinado momento, situação que se prolonga indefinidamente MULTIPROGRAMAÇÃO Solução Bit de espera acordado: Um bit assegura que um processo só deve dormir se este bit estiver em zero Semáforos: Bloqueiam determinado recurso para leitura e escrita. Em determinado momento, se um processo estiver alterando um recurso, nenhum outro processo pode escrever ou ler nesse momento MULTIPROGRAMAÇÃO Semáforos