Você está na página 1de 1

Multiprogramação com Partições Fixas

A maneira mais simples de implementar a multiprogramação, em termos de memória, é


dividir a mesma em n partições desiguais. Quando um job chega, há duas
possibilidades: ele é colocado em uma fila de entrada da menor partição capaz de
armazená-lo ou ele é colocado em uma fila de entrada única.

Uma vez que as partições são fixas, qualquer espaço não ocupado por um job é perdido.
A desvantagem de classificar os jobs em entradas separadas é apresentada quando uma
fila para uma partição grande está vazia e filas para partições pequenas estão muito
cheias. Uma possível alternativa é colocar todos os jobs em uma única fila de entrada e
sempre que uma partição encontra-se livre, alocar para o próximo job da fila. Para não
desperdiçar espaço pode-se realizar uma pesquisa para selecionar o job que melhor se
ajuste ao tamanho da partição. No entanto, isto pode deixar jobs pequenos de fora, o que
também é indesejável. Neste caso, é interessante dispor de pelo menos uma partição
pequena para jobs pequenos ou criar uma regra que limite o número de vezes que um
job pode ser ignorado, obrigando que o mesmo seja selecionado em um determinado
momento.

Dois conceitos importantes devem ser introduzidos quando há a ocorrência de


multiprogramação: realocação e proteção.

Programas (jobs) diferentes são colocados em endereços diferentes (partições). Quando


um programa é vinculado, o linkeditor deve saber em que endereço o programa deve
começar na memória. Como o gerenciador de memória só decide em qual partição
(endereço) o programa vai executar quando este chegar, não há garantia sobre em qual
partição um programa vai realmente ser executado. Este problema é conhecido como
realocação: modificação dos endereços especificados dentro do programa de acordo
com a partição onde ele foi colocado.

Outra questão importante está na proteção: programas diferentes não podem ter acesso a
dados e/ou instruções fora de sua partição. Sem esta proteção, a construção de sistemas
maliciosos seria facilitada. Uma possível alternativa para ambos os problemas é equipar
a máquina com dois registradores especiais de hardware chamados registradores de base
e registradores de limite. Quando um processo é agendado, o registrador de base é
carregado com o endereço de início de sua partição e o registrador de limite com o
comprimento de sua partição. Assim, instruções são verificadas em relação ao seu
endereço de armazenamento e para verificar se o mesmo não está fora da partição. O
hardware protege os RB e RL para impedir que programas de usuário os modifiquem.

Você também pode gostar