Em sistemas multiprogramados, uma forma de resolver o proble...
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
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.
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