210 likes | 293 Views
Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação. Software Básico. Aula 13: Características independentes da máquina II. Silvio Fernandes 2009.1. Programas com Overlay.
E N D
Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Software Básico Aula 13: Características independentes da máquina II Silvio Fernandes 2009.1
Programas com Overlay • Este método de implementação reduz a quantidade total de memória exigida para a montagem do programa, permitindo que as Passagens 1 e 2 ocupassem os mesmos endereços na memória • A figura a seguir mostra a estrutura de overlay do nosso programa-exemplo • As letras representam os nomes das seções de controle e as linhas as transferências de controle entre as seções
Programas com Overlay • A seção principal (raiz) de controle chama-se A, que pode chamar B, C ou D/E • A maioria dos sistemas que suportam programas com overlay obedecem a um estrutura de árvore, onde os nós são chamados de segmentos • O segmento raiz é carregado quando a execução é iniciada, e permanece na memória até que o programa termine
Programas com Overlay • Os outros segmentos são carregados à medida que se tornam necessários • Se um segmento S estiver presente na memória, todos os outros que ficam ao longo do percurso entre S e a raiz deverão estar presentes também • Como os segmentos do mesmo nível (ex. B, C e D/E) só podem ser chamados pelo nível imediatamente superior, eles nunca serão requisitados ao mesmo tempo
Programas com Overlay • Dessa forma, para esses segmentos do mesmo nível podem ser atribuídos os mesmo endereços de memória • Se um segmento for carregado através de uma transferência de controle, ele será superposto (overlay) a qualquer outro segmento do mesmo nível que estiver na memória • A estrutura de um programa usando overlay é definida pelo loader usando comandos
Programas com Overlay • A instrução SEGMENTnome-seg (seção de controle) • define um segmento, atribui um nome ao segmento, e relaciona as seções de controle que ficarão contidas nele • A instrução PARENTnome-seg • Indentifica o segmento (definido anteriormente) que funcionará como o pai do segmento definido a seguir
Programas com Overlay • Depois que a estrutura de overlay estiver definida, será fácil encontrar os endereços • A relocação e o link podem ser feitos da maneira habitual, com uma única exceção: • As transferências de controle de um pai para um filho deve levar em conta a possibilidade de que o segmento chamado não esteja na memória • O segmento raiz pode ser carregado diretamente na memória • Os outros segmentos serão gravados num arquivo de trabalho especial chamado SEGFILE criado pelo loader
Programas com Overlay • A carga efetiva dos segmentos durante a execução do programa é controlada por um gerenciador de overlay • Ele é uma seção de controle especial denominada OVLMGR, incluída automaticamente no segmento-raiz do programa pelo loader • O OVLMGR deve dispor de informações sobre a estrutura de overlay armazenadas numa tabela de segmentos, SEGTAB, criada pelo loader e incluída no seg-raiz como uma seção separada
Programas com Overlay • A SEGTAB descreve a estrutura de árvore, especifica o nível de cada segmento com seu respectivo endereço onde deve ser carregado, o endereço de seu ponto de entrada, e a posição do segmento em SEGFILE • SEGTAB possui também áreas de transferência especiais para cada segmento, exceto a raiz • Estas áreas contém instruções para a transferência de controle entre os segmentos
Programas com Overlay • Se houver um segmento na memória, a área de transferência deste segmento conterá uma instrução de salto para o seu ponto de entrada • Se não houver nenhum segmento na memória, a área de transferência conterá as instruções que chamam o OVLMGR e passam para ele informações referentes ao segmento que deve ser carregado em seguida
Programas com Overlay • Uma transferência de controle de um segmento para outro inferior (pode resultar num overlay) será transformada pelo loader num salto para a área de transferência deste segmento • Como SEGTAB reside no segmento-raiz, as áreas de transferência permanecem sempre na memória
Programas com Overlay • A figura a seguir representa um programa com os segmentos 1, 2 e 4 na memória, e as instruções da seção de controle A estão sendo executada • O controle está com o segmento 1, entretanto, os seg. 2 e 4 permanecerão na memória até que sejam superpostos por outros segmentos • As áreas de transferências dos seg. 2 e 4 contem salto para as seções B e H
Programas com Overlay • As outras áreas de transferência contem instruções que chamam o OVLMGR (áreas sombreadas em SEGTAB)
Programas com Overlay • Se a seção A executar uma instrução “+JSUB B”, o resultado será um salto para a área de transferência do seg. 2 • Isso ocasionará uma transferência direto do controle para B • Se A chamar D, então a áreas de transferência do seg. 6 contém instruções que chamam o OVLMGR, que carrega no endereço apropriado o seg. 6 a partir de SEGFILE
Programas com Overlay • Em seguida, o gerenciador de overlay atualiza SEGTAB para indicar que o seg. 6 foi carregado, e que os seg. 2 e 4 não estão mais na memória
Referências • Leland L Beck. “Desenvolvimento de software básico”. 2ª ed. Rio de Janeiro: Campus, 1993. 525p.