Você está na página 1de 63

Introdução Contı́gua Particionada Estratégias

Aula 6: Gerência de Memória

Prof. M.Sc. Rodrigo Costa e Prof. M.Sc. Carlos Maurı́cio


rodccosta@gmail.com e cmauriciojd@gmail.com
Curso de Informática - Propriedades dos Sistemas Operacionais

Fortaleza-CE, Brasil
Introdução Contı́gua Particionada Estratégias

Sumário
Introdução
Requisitos
Atribuição de Endereços
Tipos de Gerenciamento

Alocação Contı́gua

Alocação Particionada
Alocação Particionada Estática
Alocação Particionada Dinâmica
Soluções para Fragmentação

Estratégias de Alocação de Partição


Swaping
Introdução Contı́gua Particionada Estratégias

Multiprogramação
Divisão em partições de tamanhos
variados
Processos usam a menor partição possı́vel.

Múltiplas filas de processos


Desperdı́cio de memória e Fragmentação
interna.

Figura 1: filas de para ocupação


de memória. Fonte: [6].
Introdução Contı́gua Particionada Estratégias

Introdução

Um sistema de memória possui pelo menos dois nı́veis


◮ Memória Principal (MP): RAM (acessada pela CPU)
◮ Memória Secundária (MS): discos

Memória Principal
É onde residem os programas e dados utilizados pelo processador.

Em sistemas multiprogramáveis a gerência de memória é um


fator crı́tico
Manter na memória principal o maior número de processos residentes,
permitindo maximizar o compartilhamento do processador e demais
recursos computacionais.
Introdução Contı́gua Particionada Estratégias

Introdução
Considerações
◮ A memória é um recurso escasso;
◮ Programas só executam se estiverem na memória principal;
◮ Quanto mais processos residentes na memória principal, melhor será
o compartilhamento do processador.

Sistema Operacional (SO) deve:


◮ controlar quais regiões de memória são utilizadas e por qual
processo;
◮ decidir qual processo deve ser carregado para a memória, quando
houver espaço disponı́vel;
◮ alocar e desalocar espaço de memória;
◮ ocupar pouca memória.
Introdução Contı́gua Particionada Estratégias

Modelo de Multiprogramação

Eficiência da CPU
◮ Seja p a fração do tempo total gasto com E/S
◮ e n processos na memória, logo p n (probabilidade de todos estarem
em E/S)

Utilização da CPU
η = 1 − pn
Introdução Contı́gua Particionada Estratégias

Modelo de Multiprogramação

100
Eficiência (η)

80

60

40

20 20% de I/O
50% de I/O
80% de I/O
0
0 2 4 6 8 10
Número de processos na memória

Figura 2: Variação da eficiência em função do número de processos em execução.


Fonte: [6].
Introdução Contı́gua Particionada Estratégias

Exemplo
Assim, a ocupação de memória é fundamental para aumentar
a eficiência do computador
◮ RAM com 1Mbytes:
◮ SO ocupa 200 Kbytes;
◮ Cada programa ocupa 200 Kbytes.

Se n=4 (programas na memória)


p = 80% ↔ η = 60%

RAM com 2 Mbytes e n=9


η = 87%

RAM com 3 Mbytes e n=14


η = 96%
Introdução Contı́gua Particionada Estratégias

Introdução

Funções do Gerenciamento de Memória


◮ Manter o maior número de processos na memória;
◮ Controlar quais as unidades de memória que estão ou não em uso,
para que sejam alocadas quando necessário;
◮ Liberar as unidades de memória que foram desocupadas por um
processo que finalizou;
◮ Tratar da troca entre memória principal e memória secundária,
quando a memória fı́sica não é suficiente.
Introdução Contı́gua Particionada Estratégias

Requisitos
Relocação
◮ O programador não deve se preocupar com o local onde o programa
(processo) será carregado para execução;
◮ Durante a execução, o processo poderá sair da memória e retornar
para um local diferente;
◮ Referências à posições de endereço lógico devem ser resolvidas para
endereços de memória fı́sica.

Proteção
◮ Processos não devem poder referenciar posições de memória em
outros processos sem permissão;
◮ Por causa da relocação, os endereços fı́sicos podem mudar durante
o tempo de execução. Assim não é possı́vel observar qualquer
informação de endereçamento enquanto analisa-se o código
(programa).
Introdução Contı́gua Particionada Estratégias

Requisitos

Compartilhamento
◮ Deve-se permitir que vários processos possam acessar a mesma
porção de memória;
◮ O mecanismo de proteção deve ter flexibilidade.
Exemplo: exclusão mútua.

Organização lógica
◮ Programas são normalmente separados em módulos que podem ser
escritos e compilados separadamente;
◮ Graus diferentes de proteção podem ser atribuı́dos aos módulos;
◮ Compartilhamento de módulos;
◮ Manipulação de diferentes módulos de um mesmo executável pode
ser melhor realizada através de segmentação.
Introdução Contı́gua Particionada Estratégias

Requisitos

Organização fı́sica
◮ Memória é organizada como uma hierarquia;
◮ Se um programa precisa de mais memória do que o disponı́vel na
Memória Principal (MP), a Memória Secundária (MS) deverá ser
utilizada;
◮ Uso de memória cache;
◮ Este gerenciamento deverá ser feito de forma transparente pelo
Sistema Operacional (SO).
Introdução Contı́gua Particionada Estratégias

Atribuição de Endereços
Como tais programas usam endereços simbólicos, é preciso realizar
um mapeamento p/ end. real.
Existem três momentos possı́veis para o mapeamento:
Na compilação (código absoluto)
Se a localização de memória é conhecida a priori, o código absoluto pode
ser gerado, mas as mudanças no endereço inicial requerem recompilação
do código (ex.: MS-DOS).

Na inicialização (código relocável)


Compilador tem que gerar um código realocável. Mudanças requerem
somente recarga do código do usuário.

Na execução
Mapeamento é adiado até a execução. Requer suporte de hardware, tal
como registradores base e limite.
Introdução Contı́gua Particionada Estratégias

Transformação de um programa em processo

Figura 3: mapeamento da memória pode ocorrer em tempo de compilação ou em de


execução. Fonte: [1].
Introdução Contı́gua Particionada Estratégias

Endereçamento Lógico versus Fı́sico

Memória Lógica
Endereço conhecido pelos processos.

Memória Fı́sica
Endereço fı́sico da memória, no qual o hardware de memória conhece.

Espaço de Endereçamento Lógico


Formado por todos os endereços lógicos que um processo pode formar.

Espaço de Endereçamento Fı́sico


Formado por todos os endereços fı́sicos que o hardware de memória
conhece.
Introdução Contı́gua Particionada Estratégias

Memory Management Unit


◮ Mecanismo de hardware capaz de gerenciar a memória.
◮ Traduz endereços lógicos em endereços fı́sicos.

Figura 4: diagrama incluı́ndo a MMU entre o processador e a memória. Fonte: [1].

Complexidade variável de acordo com a funcionalidade


oferecida
Mecanismos de suporte para proteção, carga de programas, tradução de endereços
lógicos a endereços fı́sicos, etc...
Introdução Contı́gua Particionada Estratégias

Mecanismos
Carregador Absoluto
◮ Endereço lógico do processo igual ao endereço fı́sico da memória.
◮ Não é necessário a correção de endereços de memória durante a
carga do programa.

Figura 5: mecanismo de proteção para um carregador absoluto. Fonte: [4, 5].


Introdução Contı́gua Particionada Estratégias

Mecanismos
Carregador Relocador
◮ Os programas são gerados para o endereço zero da memória.
◮ Quando o programa for carregado é necessário que os seus
endereços sejam corrigidos para que ele funcione corretamente.
◮ A relocação é feita em tempo de execução.

Figura 6: mecanismo de proteção para um carregador relocável. Fonte: [4, 5].


Introdução Contı́gua Particionada Estratégias

Mecanismos: Carregamento Dinâmico

Carregamento Dinâmico
Recurso utilizado para alocar memória de acordo com a necessidade do
programa.

Bibliotecas compartilhadas
São carregadas sob demanda (.DLL e .SO).

Overlays
Arquivos de overlay e Muito comum em Linguagens de Programação
comercial da década de 80 e 90.
Introdução Contı́gua Particionada Estratégias

Organização e Gerência de Memória

Toda vez que desejarmos executar um programa, deveremos carregá-lo na


Memória Principal (MP) para que o processador possa referenciar suas
instruções e dados.

Nos sistemas monoprogramados, a gerência de memória não é muito


complexa, mas nos multiprogramados ela se torna crı́tica.
Introdução Contı́gua Particionada Estratégias

Tipos de Gerenciamento de Memória

Os principais esquemas de organização e gerência da Memória


Principal (MP) são:

Figura 7: esquemas de gerenciamento de memória. Fonte: [1].


Introdução Contı́gua Particionada Estratégias

Alocação Contı́gua Simples

Principais caracterı́sticas:
◮ Implementada nos primeiros
Sistema Operacionals (SOs), mas
ainda está presente em sistemas
monoprogramáveis;
◮ Além do SO, apenas uma aplicação
reside na memória em cada
instante.
◮ Exemplo: DOS.

Figura 8: divisão da memória de um


Sistema Monoprogramável. Fonte: [3].
Introdução Contı́gua Particionada Estratégias

Alocação Contı́gua
Comentários
◮ O SO pode ocupar tanto a parte baixa quanto a parte mais alta,
dependendo da localização do vetor de interrupções.

Figura 9: Fonte: [7].


Introdução Contı́gua Particionada Estratégias

Alocação Contı́gua

Caracterı́sticas
◮ Esquema mais simples para gerência de memória;
◮ Um usuário não pode usar uma área maior do que a disponı́vel;
◮ Sem proteção: usuário tem controle total da memória podendo
inclusive acessar a área do SO.
Introdução Contı́gua Particionada Estratégias

Alocação Contı́gua Simples

Evolução: registrador de proteção


delimita as áreas do sistema
operacional e do usuário
Sistema verifica acessos à memória em
relação ao endereço do registrador.

Figura 10: alocação contı́gua simples com


proteção. Fonte: [7].
Introdução Contı́gua Particionada Estratégias

Alocação Contı́gua Simples


Proteção
Sempre que um programa do usuário faz referência a um endereço de
memória, o sistema verifica se o endereço está nos limites.
Erros ou Exceções
Caso não esteja, o programa pode ser cancelado e ser gerada uma
mensagem de erro.

Figura 11: utilização de um carregador absoluto como forma de proteção de memória.


Fonte: [7].
Introdução Contı́gua Particionada Estratégias

Alocação Contı́gua Simples


Vantagens:
Fácil implementação e código reduzido.

Desvantagem:
Não permite utilização eficiente dos recursos.
Exemplos:
◮ Apenas um usuário pode dispor dos recursos
computacionais;
◮ No caso do programa do usuário não
preencher totalmente a memória principal,
existirá um espaço de memória livre sem
utilização;
◮ Programas limitados pelo tamanho da Figura 12: espaço de memória
livre ociosa. Fonte: [2].
memória principal disponı́vel.
Introdução Contı́gua Particionada Estratégias

Alocação Contı́gua com Sobreposição

Sobreposição (Overlay)
◮ Dividir o programa em
módulos;
◮ Permitir execução
independente de cada módulo,
usando a mesma área de
memória;

Área de Overlay
Área de memória comum onde
módulos compartilham mesmo
espaço. Figura 13: exemplo de gerenciamento de memória
com sobreposição. Fonte: [2].
Introdução Contı́gua Particionada Estratégias

Overlays

Figura 14: exemplo de utilização do overlay. Fonte: [7].


Introdução Contı́gua Particionada Estratégias

Overlays

Vantagem
◮ O módulo com maior tamanho determina o tamanho da área de
troca, pois qualquer um dos módulos deve caber na área de troca.
◮ Fazendo a troca de módulos, pode-se ter um programa maior que a
memória.
Introdução Contı́gua Particionada Estratégias

Overlays

Desvantagens:
◮ O mecanismo de overlay é pouco transparente, pois a definição das
áreas de overlay é função do programador;
◮ Sua implementação é realizada através de comandos especı́ficos da
Linguagem de Programação (LP) utilizada.
◮ Alta complexidade computacional: Dependendo da definição, pode
ocasionar sérias implicações no desempenho das aplicações, devido à
transferência excessiva dos módulos entre o disco e a memória.
Introdução Contı́gua Particionada Estratégias

Em SOs que suportam o


conceito de Multiprogramação,
é preciso outras formas de
organização da memória
principal.
Introdução Contı́gua Particionada Estratégias

Alocação Particionada

Multiprogramação
Nos primeiros SOs multiprogramados, a memória principal era dividida em
pedaços de tamanho fixo (distintos), chamados de partições.

Definição do tamanho
◮ O tamanho das partições era estabelecido na fase de inicialização do
sistema (boot), em função dos tamanhos dos programas que iriam
ser executados.
◮ Para alteração do particionamento, era necessário uma nova
inicialização com uma nova configuração.
◮ Faz-se necessário o controle de uma fila para ocupação da memória.
Introdução Contı́gua Particionada Estratégias

Alocação Particionada - Exemplo

Figura 15: particionamento de memória. Fonte: [2].


Introdução Contı́gua Particionada Estratégias

Alocação Particionada Estática

Caracterı́sticas
◮ Partições fixas com tamanho e número de partições fixos;
◮ Qualquer espaço não utilizado é literalmente perdido.

Tipos:
◮ Estática Absoluta;
◮ Estática Relocável.
Introdução Contı́gua Particionada Estratégias

Alocação Particionada Absoluta

Caracterı́sticas:
◮ Compiladores gerando código
absoluto;
◮ Programas exclusivos para
partições especı́ficas;
◮ Simples de gerenciar;
◮ E se todos os processos só
pudessem ser executados em
uma mesma partição? (mesmo Figura 16: memória particionada estática absoluta.
Fonte: [7].
endereço base?)
Introdução Contı́gua Particionada Estratégias

Alocação Particionada Estática Relocável

Caracterı́sticas
◮ Compiladores gerando código
relocável;
◮ Endereços relativos ao inı́cio da
partição;
◮ Programas podem rodar em
qualquer partição.
◮ Sempre que um programa era
carregado, o sistema percorria Figura 17: memória particionada estática relocável.
Fonte: [7].
toda a tabela de partições para
localizar uma partição livre.
Introdução Contı́gua Particionada Estratégias

Alocação Particionada Dinâmica


Objetivo
Reduzir o problema de fragmentação e, consequentemente, aumentar o
grau de compartilhamento de memória.
Não há mais partição com tamanho fixo
Cada programa utiliza o espaço necessário e este espaço passa a ser a sua
partição.

Figura 18: alocação particionada dinâmica. Fonte: [7].


Introdução Contı́gua Particionada Estratégias

Alocação Particionada Dinâmica: Exemplo

Figura 19: caracterı́sticas do processo e da memória. Fonte: [7].


Introdução Contı́gua Particionada Estratégias

Alocação Particionada Dinâmica: Exemplo

Figura 19: execução dos processos no sistema em questão. Fonte: [7].


Introdução Contı́gua Particionada Estratégias

Alocação Particionada Dinâmica: Problemas


Fragmentação Externa
Neste esquema, a fragmentação começa a ocorrer quando os programas
terminam e deixam espaços cada vez menores na memória, impedindo o
ingresso de novas aplicações.

Figura 20: problema de fragmentação de memória. Fonte: [7].


Introdução Contı́gua Particionada Estratégias

Proteção
Proteção
A proteção é baseada em dois registradores que indicam os limites inferior
e superior da partição onde o programa é executado.

Figura 21: forma de proteção da memória. Fonte: [7].


Introdução Contı́gua Particionada Estratégias

Erros

Erros
Acessos do processo do usuário provocam a comparação com o registrador
limite. Caso haja invasão, o processo é terminado com uma mensagem de
erro.

Fragmentação
Os programas não ocupam totalmente o espaço das partições, gerando
uma fragmentação interna.
Introdução Contı́gua Particionada Estratégias

Soluções para Fragmentação


Solução 1
Uma forma é unir espaços livres adjacentes. Assim, dois blocos livres
podem formar um único espaço de tamanho maior e assim, caber
programas maiores. No exemplo anterior, caso o processo C termine.

Figura 22: união de áreas livres. Fonte: [7].


Introdução Contı́gua Particionada Estratégias

Soluções para Fragmentação


Solução 2: compactação
Fazer uma relocação de todas as regiões ocupadas, eliminando todos os
espaços entre elas e criando-se uma única área livre contı́gua.

Figura 23: compactação de memória. Fonte: [7].


Introdução Contı́gua Particionada Estratégias

Estratégias de Alocação de Partição I

Importância
Procuram evitar, ou diminuir o problema da fragmentação (externa ou
interna) antes que ele ocorra.

Fundamentos
Os SOs determinam em qual partição livre o programa será carregado para
sua execução

Melhor Estratégia
A melhor estratégia depende de uma série de fatores, sendo o mais
importante o tamanho dos programas processados.

Os sistemas operacionais adotam basicamente três estratégias


Best-fit, Worst-fit e First-fit.
Introdução Contı́gua Particionada Estratégias

Implementação
O SO possui uma lista de areas livres da Memoria Principal

Figura 24: exemplo de lista de áreas livres. Fonte: [2].


Introdução Contı́gua Particionada Estratégias

Best Fit

Escolhe a melhor partição


A partição em que o programa deixa o menor espaço sem utilização é
escolhida. Em outras palavras, a partição com espaço livre mais próximo
do tamanho do processo é escolhida.

Caracterı́sticas
◮ Memória fica com pequenas áreas livres nas partições: isto aumenta
a fragmentação, pois cada vez mais vão surgindo pequenas áreas
não contı́guas que só podem abrigar processos cada vez mais
pequenos;
◮ tempo de busca grande: devido a verificação do maior tamanho.
Para diminuir o tempo de processamento deve-se ordenar a lista de
áreas livres por tamanho e assim, escolher a partição com maior
espaço livre.
Introdução Contı́gua Particionada Estratégias

Worst Fit

Escolhe a pior partição


O programa que deixa um maior espaço sem utilização.

Permite que um maior número de programas utilize a memória


Diminui o problema de fragmentação, pois este algoritmo torna a memória
menos fragmentada, deixando espaços livres maiores.
Introdução Contı́gua Particionada Estratégias

First-Fit

Escolhe a primeira partição livre


A primeira partição livre, de tamanho suficiente para a execução do
programa é escolhida.

É a mais rápida e consome menos recursos do sistema.


Lista de áreas livres ordenada por endereços de forma crescente.

Caracterı́sticas
mais simples, mais rápido e melhor na maioria das vezes.
Introdução Contı́gua Particionada Estratégias

Circular-fit ou Next-Fit (próxima alocação)

Caracterı́sticas
◮ similar ao first-fit, mas inicia a procura na lacuna seguinte a última
sobra.
◮ performance inferior ao First-Fit.
Introdução Contı́gua Particionada Estratégias

Exemplo

Figura 25: exemplo de diferentes estratégias de alocação de um processo. Fonte: [2].


Introdução Contı́gua Particionada Estratégias

Introdução

◮ Um programa não poderia ser executado pela falta de uma


partição livre disponı́vel.
◮ Esta técnica veio tentar resolver este problema.
◮ Quando não há espaço na memória principal (RAM), utiliza-se
a memoria secundária (Disco).
◮ O swapping permitiu um maior compartilhamento de memória
e um maior throughput.
◮ Seu maior problema é o elevado custo das operações de E/S
(swapped in/out)
◮ Atualmente, o conceito de swapping é aplicado junto ao de
memória virtual.
Introdução Contı́gua Particionada Estratégias

Introdução

O Swapping é uma técnica aplicada à Gerência de Memória para programas


que esperam por memória livre para serem executados.

O sistema escolhe
um programa
residente que:
◮ É levado da
memória para o
disco (swap
out;)
◮ Retornando-o
posteriormente
para a memória
(swap in). Figura 26: princı́pio do Swapping. Fonte: [2].
Introdução Contı́gua Particionada Estratégias

Swapping

O processo escolhido para swapping deve ser aquele com menor chance de
ser escalonado.

Processos retirados da memória geralmente estão em estado de espera,


mas é possı́vel que processos prontos sejam selecionados para swapping.
Processos fora da memória principal são chamados de não-residentes.

Para que o sistema operacional realize swapping, é necessário que ele


implemente a técnica de relocação dinâmica de programas, pois o programa
pode sair e voltar diversas vezes para a memória, sendo necessária a
relocação a cada carregamento.
Introdução Contı́gua Particionada Estratégias

Swapping

Registrador de Relocação
A relocação dinâmica é realizada através de um registrador especial
denominado registrador de relocação. No momento em que o programa
é carregado na memória, este registrador recebe o endereço inicial da
posição de memória que o programa irá ocupar. Toda vez que ocorrer
uma referência a algum endereço, o endereço contido na instrução será
somado ao conteúdo do registrador, gerando, assim, o endereço fı́sico.
Introdução Contı́gua Particionada Estratégias

Registradores

Figura 27: registradores de relocação. Fonte: [2].


Introdução Contı́gua Particionada Estratégias

Exercı́cios I
1. Comente sobre a importância da Gerência de Memória em sistemas operacionais.
2. Explique a diferença entre os endereços lógico e fı́sico. Quando e por que ambos
são iguais em alguns casos?
3. Como é dividida a MP através da alocação contı́gua simples? Cite um
problema e a solução encontrada nesse tipo de alocação.
4. De que forma é feita a proteção na alocação contı́gua simples?
5. Por que era necessário a alocação de endereços no esquema de alocação
contı́gua da memória e como funcionam os registradores de base e de limite?
6. Explique as vantagens de se utilizar as bibliotecas dinâmicas.
7. Qual a diferença entre os mecanismos de proteção da alocação contigua simples
e a alocação particionada?
8. Defina alocação particionada estática e mostre a diferença entre alocação
particionada estática absoluta e alocação particionada estática relocável.
9. Qual o problema enfrentado na alocação particionada estática absoluta e
relocável, que foi melhorado na alocação particionada dinâmica?
10. Quais as soluções encontradas na alocação particionada dinâmica para o
problema de fragmentação?
Introdução Contı́gua Particionada Estratégias

Exercı́cios II
11. Compare as técnicas Overlay e Swapping.
12. Explique por meio de um desenho ilustrativo as fragmentações interna e externa.
13. Defina fragmentação interna e externa e cite quais as formas de evitá-las.
14. O que é Swapping? Qual a vantagem de existir o Swapping?
15. O que é swap in e swap out?
16. O que é memória virtual?
17. Defina espaço de endereçamento e explique espaço de endereçamento real e
virtual.
18. Descreva o princı́pio de funcionamento dos seguintes algoritmos de substituição
de página: best fit, worst fit and first fit.
19. Em um sistema com partições variáveis, considere as seguintes partições livres:
10K, 20K, 4K, 7K, 9K, 12K, 15K e 18K. Como os algoritmos First-fit, Best-fit,
Worst-fit e Nextfit alocariam partições para as seguintes requisições: a. 12K, b.
10K e c. 9K.
20. Explique o efeito da fragmentação externa no exercı́cio anterior.
21. Quais são as três estratégias de alocação utilizada pelos sistemas operacionais?
Introdução Contı́gua Particionada Estratégias

Exercı́cios III

22. Tendo-se partições de memória de tamanho 100K, 400K, 200K, 300K e 600K
(nesta ordem), como seriam alocados os processos de tamanho 215K, 420K,
113K e 427K (nesta ordem) pelos algoritmos do exercı́cio anterior? Qual
algoritmo é o mais eficiente?
23. Considere um espaço de endereço lógico formado por oito páginas de 1024
endereços cada, as quais são mapeadas para uma memória fı́sica de 32 frames.
Quantos bits há no endereço lógico? E no endereço fı́sico?
24. Explique a diferença entre endereços lógico e fı́sico. Existe algum caso em que
ambos são iguais? Se sim, dê um exemplo.
25. Explique uma forma de diminuir as diferentes fragmentações.
26. Considere um sistema que possua as seguintes áreas livres na memória principal,
ordenadas crescentemente: 10 Kb, 4 Kb, 20 Kb, 18 Kb, 7 Kb, 9 Kb, 12 Kb e 15
Kb. Considere ainda três programas, com respectivos tamanhos iguais a 9 Kb,
12 Kb e 10 Kb. Na alocação destes três programas, determine quais seriam as
respectivas partições escolhidas utilizando-se - uma por vez - as estratégias
first-fit, best-fit e worst-fit.
Introdução Contı́gua Particionada Estratégias

Exercı́cios IV

27. Em um sistema que utiliza uma alocação particionada dinamicamente como


mecanismo de gerência de memória. O SO aloca uma área total de 50 KB para
os programas. Inicialmente existem 4 processos A, B, C, D após a inicialização,
com tamanhos iguais à 5, 3, 10 e 6 KB, respectivamente. Realize as seguintes
operações a seguir, sequencialmente, mostrando o estado da memória após cada
uma delas, utilizando duas estratégias a sua escolha a. Tire C da memória e
aloque um processo E que possui 6 KB. b. Tire A da memória e aloque um
processo F que possui 4 KB.
Introdução Contı́gua Particionada Estratégias

Abreviaturas I

LP Linguagem de Programação
MMU Memory Management Unit
MP Memória Principal
MS Memória Secundária
SO Sistema Operacional
Referências

Referências I

[1] Cristiano Leite de Castro and Olinda Nogueira Paes Cardoso. Sistemas operacionais
- universidade federal de lavras, 2006.
[2] F. M. Machado and L. P. Maia. Arquitetura de Sistemas Operacionais. Grupo Gen:
LTC, Rio de Janeiro, 4 edition, 2007.
[3] Prof. Ernesto Massa, 2010. URL http://ernestomassa-so.blogspot.com.
[4] R. Oliveira, A. Carissimi, and S. Toscani. Livros Didáticos da UFRGS, volume 5:
Sistema Operacionais. Artmed, São Paulo, 2009.
[5] Anderson Luiz Fernandes Perez. Sistemas operacionais, 2009. URL
www.univasf.edu.br/~ anderson.perez/ensino/so.
[6] Andrew S. Tanenbaum. Sistemas Operacionais Modernos. Pearson do Brasil, São
Paulo, 3 edition, 2010.
[7] E. N. Zagari. Sistemas operacionais, 2006.