Unidade5_P1
-
Upload
adriano-torres-cravo -
Category
Documents
-
view
22 -
download
1
Transcript of Unidade5_P1
EADDCC006 #1
Pontifícia Universidade Católica PUC - Minas Poços de Caldas
Introdução aos Sistemas Operacionais
Prof. D.Sc. Eduardo Barrére
www.barrere.ufjf.br
EADDCC006
Licenciatura em ComputaçãoLicenciatura em Computação
EADDCC006 #2
Pontifícia Universidade Católica PUC - Minas Poços de Caldas
Introdução aos Sistemas OperacionaisIntrodução aos Sistemas Operacionais
Unidade 5
Gerência de Memória
Parte 1
EADDCC006 #3
EADDCC006 – Introdução aos Sistemas Operacionais
Prezado(a) Aluno(a),Nesta unidade iremos aprender os conceitos básicos que envolve o gerenciamento de memória por parte do
SO.
Nesta unidade você deve cumprir as seguintes atividades:- TEXTO DE ESTUDO: Este documento apresenta os conceitos e informações pertinentes à Unidade 3 –
Sistemas de Arquivos. - REFERÊNCIAS BIBLIOGRÁFICAS: Após a leitura do texto a seguir, realize um estudo mais detalhado do
conteúdo nas referências citadas na Unidade 1. É importante destacar que esses conteúdos também podem ser obtidos em outros livros e que você deve se sentir a vontade para buscar a literatura que mais lhe agrade, desde que ela aborde os mesmos tópicos da unidade em questão.
- ATIVIDADES AVALIATIVAS: Atividade 16: Lista de Exercícios (Questionário).Atividade 4: Elaboração do Glossário (a ser elaborado durante toda a disciplina).
- FICHA DE ESTUDO: Montar uma ficha de estudo com os principais conceitos apresentados na unidade, de forma a facilitar o seu estudo para a prova.
Lembre-se da importância de estabelecer o seu próprio cronograma de estudos dentre as atividades passadas pelo professor, pois o conteúdo é extenso e não é possível aprendê-lo todo na véspera da prova.
Bom estudo!
ORIENTAÇÕES DE ESTUDO
EADDCC006 #4
Lembrando....
O Sistema Operacional é responsável por gerenciar:
EADDCC006 #5
Gerenciador de Memória
Problemas a serem resolvidos pelo gerenciador de memória:
A memória principal (RAM) é um recurso ainda caro e
escasso.
Com a evolução dos computadores, mais e mais programas
(cada vez maiores) devem estar em execução ao mesmo
tempo num computador (multiprogramação).
Muita Demanda (vários processos)
x
Pouco Recurso (espaço na memória)
EADDCC006 #6
Funções do Gerenciador de Memória
O gerenciador de memória deve:
Controlar as partes de memória que estão ou
não em uso.
Alocar memória para processos, quando
solicitado.
Desalocar (liberar) memória quando o processo
terminar.
Gerenciar a troca entre a memória principal e o
disco (memória virtual).
Proteger a região de memória de cada processo.
EADDCC006 #7
Alocação de MemóriaAlocação de Memória
EADDCC006 #8
Alocação de Memória
A alocação de memória (reserva de uma região de memória para
um processo) pode ser feita das seguintes maneiras:
Alocação Contígua
– Simples.
– Particionada
• Estática (Absoluta e Relocável).
• Dinâmica.
Alocação Não-Contígua (envolve memória virtual)
– Paginada.
– Segmentada.
– Segmentada com Paginação.
EADDCC006 #9
Alocação Contígua Simples
Utilizada em sistemas Monousuário / Monoprogramáveis.
(ainda utilizada em sistemas computacionais simples, a
maioria deles microcontrolados)
Sistema Operacional
Área para o
programa do usuário
Sistema Operacional
Programa dousuário
Área livre
Área de memória para o SO
Região de Memória ocupada pelo Programa do
usuário
EADDCC006 #10
Alocação Contígua Simples
O programa do usuário é limitado pelo tamanho da memória principal disponível.
Sistema Operacional
Área deOverlay
Área do Módulo Principal
Cad. Imp. Cons.
Solução: Overlay
• Dividir o programa em módulos;
• Permitir execução independente de cada módulo, usando a mesma área de memória;
• Exemplo: dividir o programas em módulos: Cadastro de clientes, Relatórios, Consultas, etc. Cada módulo é carregado na memória conforme o usuário solicita sua execução (como se fossem programas independentes)
EADDCC006 #11
Alocação Contígua Particionada
A Alocação Particionada surgiu com os
sistemas Multiprogramáveis / Multiusuários
(ocupação mais eficiente do processador),
visando permitir o compartilhamento da
memória entre os diversos processos.
• Estática (Absoluta e Relocável).
• Dinâmica.
EADDCC006 #12
Alocação Contígua
Particionada Estática - Absoluta
As partições (divisões da memória em partes)
têm o tamanho definido pelo SO na
inicialização do sistema e cada programa é
compilado para uma partição específica.
Compiladores geram código absoluto
– Endereços relativos ao início da memória.
Em outras palavras, cada código fonte é
compilado para ser executado em uma, e somente
uma, região de memória.
EADDCC006 #13
Alocação Contígua
Particionada Estática - Absoluta
AECDB
4MB 6MB 1MB 3MB 2MB
Sistema Operacional
Partição1 – 2MB
Partição2 – 5MB
Partição3 – 8MB
O quanto cada programa ocupa de memória
Particionamentopré-definido da
memória
Uma questão interessante e não
resolvida por este tipo de Alocação:
Os programas atuais ocupam uma
quantidade de memória variável,
conforme sua execução.
Neste tipo de alocação esse
problema tem que ser previsto
antes da compilação do código
fonte (geração do executável) ����
EADDCC006 #14
Alocação Contígua
Particionada Estática - Absoluta
AECDB
4MB 6MB 1MB 3MB 2MB
Sistema Operacional
Partição1 – 2MB
Partição2 – 5MB
Partição3 – 8MB
Fila representando a ordem de solicitação para executar os programas
Imagine que todos os programas chegaram quase ao mesmo tempo (respeitando a ordem acima) e que antes de executar o primeiro a
chegar (A), todas as solicitações de execução já tenham sido efetuadas.
EADDCC006 #15
Alocação Contígua
Particionada Estática - Absoluta
AECDB
4MB 6MB 1MB 3MB 2MB
Sistema Operacional
Partição1 – 2MB
Partição2 – 5MB
Partição3 – 8MB
A
Fila representando a ordem de solicitação para executar os programas
Imagine que todos os programas chegaram quase ao mesmo tempo (respeitando a ordem acima) e que antes de executar o primeiro a
chegar (A), todas as solicitações de execução já tenham sido efetuadas.
EADDCC006 #16
Alocação Contígua
Particionada Estática - Absoluta
AECDB
4MB 6MB 1MB 3MB 2MB
Sistema Operacional
Partição1 – 2MB
Partição2 – 5MB
Partição3 – 8MB
A
E
Fila representando a ordem de solicitação para executar os programas
Imagine que todos os programas chegaram quase ao mesmo tempo (respeitando a ordem acima) e que antes de executar o primeiro a
chegar (A), todas as solicitações de execução já tenham sido efetuadas.
EADDCC006 #17
Alocação Contígua
Particionada Estática - Absoluta
AECDB
4MB 6MB 1MB 3MB 2MB
Sistema Operacional
Partição1 – 2MB
Partição2 – 5MB
Partição3 – 8MB
AC
E
Fila representando a ordem de solicitação para executar os programas
Imagine que todos os programas chegaram quase ao mesmo tempo (respeitando a ordem acima) e que antes de executar o primeiro a
chegar (A), todas as solicitações de execução já tenham sido efetuadas.
EADDCC006 #18
Alocação Contígua
Particionada Estática - Absoluta
AECDB
4MB 6MB 1MB 3MB 2MB
Sistema Operacional
Partição1 – 2MB
Partição2 – 5MB
Partição3 – 8MBD
AC
E
Fila representando a ordem de solicitação para executar os programas
Imagine que todos os programas chegaram quase ao mesmo tempo (respeitando a ordem acima) e que antes de executar o primeiro a
chegar (A), todas as solicitações de execução já tenham sido efetuadas.
EADDCC006 #19
Alocação Contígua
Particionada Estática - Absoluta
AECDB
4MB 6MB 1MB 3MB 2MB
Sistema Operacional
Partição1 – 2MB
Partição2 – 5MB
Partição3 – 8MBD
AC
EB
Fila representando a ordem de solicitação para executar os programas
Imagine que todos os programas chegaram quase ao mesmo tempo (respeitando a ordem acima) e que antes de executar o primeiro a
chegar (A), todas as solicitações de execução já tenham sido efetuadas.
EADDCC006 #20
Alocação Contígua
Particionada Estática - Absoluta
AECDB
4MB 6MB 1MB 3MB 2MB
Sistema Operacional
Partição1 – 2MB
Partição2 – 5MB
Partição3 – 8MBD
AC
EB
Fila representando a ordem de solicitação para executar os programas
Sistema Operacional
Programa A
Partição2 – 5MB
Partição3 – 8MBD
C
EB
EADDCC006 #21
Alocação Contígua
Particionada Estática - Absoluta
AECDB
4MB 6MB 1MB 3MB 2MB
Sistema Operacional
Partição1 – 2MB
Partição2 – 5MB
Partição3 – 8MBD
AC
EB
Fila representando a ordem de solicitação para executar os programas
Sistema Operacional
Programa A
Programa E (3MB)“Área Livre” - 2MB
Partição3 – 8MBD
C
B
EADDCC006 #22
Alocação Contígua
Particionada Estática - Absoluta
AECDB
4MB 6MB 1MB 3MB 2MB
Sistema Operacional
Partição1 – 2MB
Partição2 – 5MB
Partição3 – 8MBD
AC
EB
Fila representando a ordem de solicitação para executar os programas
Sistema Operacional
Programa A
Programa E (3MB)“Área Livre” - 2MB
Programa D (6MB)“Área Livre” - 2MB
C
B
EADDCC006 #23
Alocação Contígua
Particionada Estática - Absoluta
AECDB
4MB 6MB 1MB 3MB 2MB
Sistema Operacional
Partição1 – 2MB
Partição2 – 5MB
Partição3 – 8MBD
AC
EB
Fila representando a ordem de solicitação para executar os programas
Sistema Operacional
Programa A
Programa E (3MB)“Área Livre” - 2MB
Programa D (6MB)“Área Livre” - 2MB
C
B
Programas não ocupam totalmente o espaço das partições, gerando uma fragmentação interna.
EADDCC006 #24
Alocação Contígua
Particionada Estática - Absoluta
AECDB
4MB 6MB 1MB 3MB 2MB
Fila representando a ordem de solicitação para executar os programas
Sistema Operacional
Programa A
Programa E (3MB)“Área Livre” - 2MB
Programa D (6MB)“Área Livre” - 2MB
C
B
Neste tipo de alocação, não posso utilizar as áreas de memórias livres para colocar outros programas e muito menos juntar essas áreas para formar uma outra partição de memória.No nosso exemplo: • Cada partição tem 2MB livres, o que seria suficiente para colocar o programa C, mas não podemos colocar mais de um programa por partição �
• Somando as duas áreas livres temos 4MB, o que seria suficiente para colocar o programa B �
Conclusão, na maioria dos computadores atuais esse técnica de alocação não é eficiente !!!
EADDCC006 #25
Alocação Contígua
Particionada Estática - Relocável
As partições têm o tamanho definido pelo SO na
inicialização do sistema e cada programa é
compilado para ser executado em qualquer
partição (endereçamento relativo).
Compiladores gerando código relocável
– Endereços relativos ao início da partição
EADDCC006 #26
Alocação Contígua
Particionada Estática - Relocável
Sistema Operacional
Partição1 – 2 MB
Partição2 – 5 MB
Partição3 – 8 MB
D AC B E
AEBDC
1MB 6MB 4MB 3MB 2MB
Fila representando a ordem de solicitação para executar os programas
EADDCC006 #27
Alocação Contígua
Particionada Estática - Relocável
Sistema Operacional
Programa A
Partição2 – 5 MB
Partição3 – 8 MB
DC B E
AEBDC
1MB 6MB 4MB 3MB 2MB
Fila representando a ordem de solicitação para executar os programas
EADDCC006 #28
Alocação Contígua
Particionada Estática - Relocável
Sistema Operacional
Programa A
Programa E (3MB)“Área Livre” - 2MB
Partição3 – 8 MB
DC B
AEBDC
1MB 6MB 4MB 3MB 2MB
Fila representando a ordem de solicitação para executar os programas
EADDCC006 #29
Alocação Contígua
Particionada Estática - Relocável
Sistema Operacional
Programa A
Programa E (3MB)“Área Livre” - 2MB
Programa B (4MB)“Área Livre” - 4MB
DC
AEBDC
1MB 6MB 4MB 3MB 2MB
Fila representando a ordem de solicitação para executar os programas
EADDCC006 #30
Alocação Contígua
Particionada Dinâmica
As partições são alocadas conforme os programas são executados. O espaço utilizado por um programa é a sua partição.
Sendo assim, não ocorre fragmentação interna (diferença entre o tamanho da partição e da área ocupada pelo processo).
EADDCC006 #31
ABCDE
3MB 6MB 1MB 4MB 2MB
Sistema Operacional
Área Livre = 11MB
BCEA
Alocação Contígua
Particionada Dinâmica
EADDCC006 #32
ABCDE
3MB 6MB 1MB 4MB 2MB
Sistema Operacional
Programa B
Área Livre = 7MB
CEA
Alocação Contígua
Particionada Dinâmica
EADDCC006 #33
ABCDE
3MB 6MB 1MB 4MB 2MB
Sistema Operacional
Programa B
Programa C
Área Livre = 6MB
EA
Alocação Contígua
Particionada Dinâmica
EADDCC006 #34
ABCDE
3MB 6MB 1MB 4MB 2MB
Sistema Operacional
Programa B
Programa C
Programa E
Área Livre = 3MB
A
Alocação Contígua
Particionada Dinâmica
EADDCC006 #35
ABCDE
3MB 6MB 1MB 4MB 2MB
Sistema Operacional
Programa B
Programa C
Programa E
Programa A
Área Livre = 1MBÁrea Livre = 1MB
Alocação Contígua
Particionada Dinâmica
EADDCC006 #36
Sistema Operacional
Programa B
Área Livre
Programa C
Programa A
Programa E
Sistema Operacional
Programa B
Área Livre
Área Livre
Programa A
Programa E
Fim do
Programa C
Este espaço deixado pelo término do processo correspondente ao programa C, gerou uma lacuna chamada fragmentação externa.
Com o surgimento de várias lacunas:* É possível termos espaço livre na memória suficiente para executar um novo programa, mas esse espaço pode não ser contínuo! Atitude?* Qual lacuna alocar a um processo que pede por um espaço X de memória?
Alocação Contígua
Particionada Dinâmica
EADDCC006 #37
Soluções para a fragmentação gerada no decorrer do funcionamento do computador:
• Reunião das lacunas, Relocação Dinâmica ou compactação: Movimentação dos programas na memória principal, deixando somente uma lacuna no final da memória.
• Resolve o problema da fragmentação.
• Consome recursos do sistema (Processador, disco, etc.) e é muito lento!
Alocação Contígua
Particionada Dinâmica
EADDCC006 #38
Para se decidir em qual lacuna colocar o processo, podemos adotar uma das seguintes soluções:
• Best-Fit
•Worst-Fit
• First-Fit
Alocação Contígua
Particionada Dinâmica
< ver simulador, via link na plataforma >
EADDCC006 #39
Best-Fit (melhor alocação): Espaço mais próximo do tamanho do processo, sobrando uma lacuna pequena.
Imagine que queremos alocar memória o processo P6, que ocupa 1MB.
Alocação Contígua
Particionada Dinâmica
P5
Área livre 4 = 5MB
Área livre 3 = 4MB
P4
Área livre 2 = 1MB
P3
Área livre 1 = 2MB
P2
P1
EADDCC006 #40
Best-Fit (melhor alocação): Espaço mais próximo do tamanho do processo, sobrando uma lacuna pequena.
Imagine que queremos alocar memória o processo P6, que ocupa 1MB.
Alocação Contígua
Particionada Dinâmica
P5
Área livre 4 = 5MB
Área livre 3 = 4MB
P4
Área livre 2 = 1MB
P3
Área livre 1 = 2MB
P2
P1
EADDCC006 #41
Alocação Contígua
Particionada Dinâmica
P5
Área livre 3 = 5MB
Área livre 2 = 4MB
P4
P6
P3
Área livre 1 = 2MB
P2
P1
Best-Fit (melhor alocação): Espaço mais próximo do tamanho do processo, sobrando uma lacuna pequena.
Imagine que queremos alocar memória o processo P6, que ocupa 1MB.
EADDCC006 #42
Worst-Fit (pior alocação): Cria o maior espaço possível, ou seja, deixa sempre a maior lacuna possível.
Vamos utilizar o mesmo processo P6 (que ocupa 1MB).
Alocação Contígua
Particionada Dinâmica
P5
Área livre 4 = 5MB
Área livre 3 = 4MB
P4
Área livre 2 = 1MB
P3
Área livre 1 = 2MB
P2
P1
EADDCC006 #43
Worst-Fit (pior alocação): Cria o maior espaço possível, ou seja, deixa sempre a maior lacuna possível.
Vamos utilizar o mesmo processo P6 (que ocupa 1MB).
Alocação Contígua
Particionada Dinâmica
P5
Área livre 4 = 5MB
Área livre 3 = 4MB
P4
Área livre 2 = 1MB
P3
Área livre 1 = 2MB
P2
P1
EADDCC006 #44
Worst-Fit (pior alocação): Cria o maior espaço possível, ou seja, deixa sempre a maior lacuna possível.
Vamos utilizar o mesmo processo P6 (que ocupa 1MB).
Alocação Contígua
Particionada Dinâmica
Área livre 4 = 4MB
P5
P6
Área livre 3 = 4MB
P4
Área livre 2 = 1MB
P3
Área livre 1 = 2MB
P2
P1
EADDCC006 #45
First-Fit (primeira alocação): Aloca na primeira lacuna que couber. Melhor performance.
Vamos utilizar o mesmo processo P6 (que ocupa 1MB).
Alocação Contígua
Particionada Dinâmica
P5
Área livre 4 = 5MB
Área livre 3 = 4MB
P4
Área livre 2 = 1MB
P3
Área livre 1 = 2MB
P2
P1
EADDCC006 #46
First-Fit (primeira alocação): Aloca na primeira lacuna que couber. Melhor performance.
Vamos utilizar o mesmo processo P6 (que ocupa 1MB).
Alocação Contígua
Particionada Dinâmica
P5
Área livre 4 = 5MB
Área livre 3 = 4MB
P4
Área livre 2 = 1MB
P3
Área livre 1 = 2MB
P2
P1
EADDCC006 #47
First-Fit (primeira alocação): Aloca na primeira lacuna que couber. Melhor performance.
Vamos utilizar o mesmo processo P6 (que ocupa 1MB).
Alocação Contígua
Particionada Dinâmica
P6
P5
Área livre 4 = 5MB
Área livre 3 = 4MB
P4
Área livre 2 = 1MB
P3
Área livre 1 = 1MB
P2
P1
EADDCC006 #48
Problemas de Alocação
Mesmo com a alocação contígua particionada dinâmica temos os seguintes problemas:
• Os programas estão cada vez maiores e com isso, ou ocupam muita memória ou não cabem na memória!
• A quantidade de programas a serem executadas pelo processador é cada vez maior!
EADDCC006 #49
SOLUÇÃO:
• Swapping: Técnica para resolver o problema de processos que aguardam por espaço livre adequado. Desta forma os processos não ficam mais na memória o tempo todo. Podem também ficar em disco (arquivo swap).
• Alocação não-contígua: conforme a quantidade de programas em execução e da necessidade de memória de cada um, os espaços são alocados (paginação e segmentação).
Problemas de Alocação
Solução: Memória Virtual (próxima aula !!!)