Em sistemas multiprogramados, uma forma de resolver o proble...

Próximas questões
Com base no mesmo assunto
Q91129 Sistemas Operacionais
Julgue os itens a seguir, acerca do gerenciamento de memória.

Em sistemas multiprogramados, uma forma de resolver o problema da realocação consiste em alterar as instruções do programa de acordo com a partição de memória em que ele será carregado.
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: C - certo

Ao abordar o gerenciamento de memória em sistemas operacionais, a questão toca em um conceito fundamental: a realocação de programas na memória. Em um ambiente multiprogramado, o sistema operacional deve ser capaz de carregar programas em diferentes áreas da memória física, as quais são chamadas de partições. Para que um programa seja executado corretamente, independentemente da região de memória em que esteja, é necessário ajustar todas as suas instruções que fazem referência a endereços de memória.

Eis o motivo pelo qual o item está correto: uma técnica chamada realocação dinâmica é usada durante a carga do programa. Durante o processo de carregamento, o sistema operacional utiliza um registro de realocação para ajustar todas as instruções do programa que dependem de endereços específicos. Esse registro contém o endereço base da partição de memória para onde o programa será carregado. As instruções que necessitam de acesso direto à memória são então modificadas de acordo com esse endereço base, garantindo que as referências à memória apontem para as localizações corretas, independentemente da posição física real do programa na memória.

Essa abordagem é uma solução para assegurar que os programas possam ser executados em qualquer parte do espaço de memória física disponível, sem a necessidade de serem escritos ou compilados especificamente para um endereço de memória fixo, o que oferece flexibilidade e otimização do uso da memória.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Quando falamos em realocação, temos duas variações: a estática e a dinâmica. A questão se refere à estática.
Cada processo possui o seu espaço de endereçamento. O programa é carregado em memória por completo e todas as suas referências à memória são modificadas somando os endereços que o programa contém com o endereço físico onde o processo foi carregado.
Não entendi bem esta questão. Se alguém tiver referências sobre este assunto e puder compartilhar links aqui.

Eu não entendi a parte: ...alterar as instruções do programa...

Eu devo alterar o código do programa que está em memória? Alguém poderia me ajudar?

Mateus, pelo visto é isso mesmo! 


De acordo com o Tanembaum em Sistemas Operacionais Modernos, 3ªEd, página 143-144:


"Uma possível solução para isso é modificar as instruções do programa segundo a partição de memória em que ele será carregado. Programas carregados na partição 1 terão 100K adicionados a cada endereço; programas carregados na partição 2 terão a adição de 200K e assim por diante. Para executar a relocação do programa, ao carregá-lo em uma partição de memória, o ligador deve incluir no código binário uma lista ou um mapa informando quais palavras do programa são endereços que necessitam de realocação e quais são códigos de operação, constantes ou outros itens que não devem ser realocados."


É meio estranha essa ideia, mas no parágrafo anterior ele dá uma dica: "Quando um programa é ligado (isto é, quando se combinam o programa principal, procedimentos escritos pelo usuário e procedimentos de biblioteca em um único espaço de endereçamento), o ligador (linker) tem de saber em que endereço o programa deve começar na memória".

Obrigado Paulo!

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo