Arquitetura de Computadores Ricardo de Sousa Britto
Motivação SEGMENTAÇÃ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
Funcionamento SEGMENTAÇÃO 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.
Funcionamento SEGMENTAÇÃO 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.
Segmentção X Paginação SEGMENTAÇÃO Segmentção X Paginação
Implementação SEGMENTAÇÃO Existem duas formas de se implementar segmentação: Swapping Paginaçã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 por Swapping
Segmentação por Swapping
Compactação SEGMENTAÇÃ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
Compensação de Buracos 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 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 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
Paralelismo Real X Paralelismo Simulado 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
Paralelismo Real X Paralelismo Simulado 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
Procedimento Produtor MULTIPROGRAMAÇÃO Procedimento Produtor
Procedimento Consumidor MULTIPROGRAMAÇÃO Procedimento Consumidor
Problema Inconsistência nos valores para entrada e saída 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