Memória
Como organizar a memória de forma a saber-se qual o espaço livre para carregar novos processos e qual o espaço ocupado por processos já em memória?
Como associar endereços de variáveis no programa a endereços de memória real?
O que fazer se o processo ou conjunto de processos precisar de mais memória do que há disponível?
Carregar um processo do disco para memória tem os seus custos, como reduzir os custos de acesso a disco?
DCC/FCUP Fernando Silva
Sistemas de Operação
1
Métodos de particionamento da memória
Partição simples (monoprogramação, sem paginação ou swapping)
Partições fixas (dá suporte à multprogramação, problema: fragmentação interna)
Partições variáveis (tb dá suporte à multiprogramação, problema: fragmentação externa) paginação segmentação
DCC/FCUP Fernando Silva
Sistemas de Operação
2
Recolocação dos programas e protecção
A multiprogramação introduz dois problemas:
Recolocação de programas: os endereços dos programas têm de ser relativos a um endereço base da partição para onde vão ser carregados, sendo o endereço real a soma dos dois (endereço lógico
+ base).
Protecção: como evitar que um processo “salte” para uma instrução na memória de outro processo, ou que leia ou escreva na memória desse processo?
Uma solução para estes problemas, recolocação e protecção, é usar dois registos especiais de hardware: base e limite.
DCC/FCUP Fernando Silva
Sistemas de Operação
3
base
limite
CPU
endereco logico particao
YES
<
+
RAM endereco-fisico NO trap: erro no enderecamento
Para cada endereçamento feito, endereço lógico, se este for menor que o tamanho da partição (reg. limite), é-lhe adicionado o endereço-base, para se obter o endereço-real.
Esta solução tem a vantagem de o processo (programa) ficar independente da partição onde foi colocado em 1º lugar.
DCC/FCUP Fernando Silva
Sistemas de Operação
4
Memória Virtual
O que