Unidade5_P1

49
EADDCC006 #1 Pontifícia Universidade Católica PUC - Minas Poços de Caldas Introdução aos Sistemas Operacionais Prof. D.Sc. Eduardo Barrére [email protected] www.barrere.ufjf.br EADDCC006 Licenciatura em Computação Licenciatura em Computação

Transcript of Unidade5_P1

Page 1: 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

[email protected]

www.barrere.ufjf.br

EADDCC006

Licenciatura em ComputaçãoLicenciatura em Computação

Page 2: Unidade5_P1

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

Page 3: Unidade5_P1

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

Page 4: Unidade5_P1

EADDCC006 #4

Lembrando....

O Sistema Operacional é responsável por gerenciar:

Page 5: Unidade5_P1

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)

Page 6: Unidade5_P1

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.

Page 7: Unidade5_P1

EADDCC006 #7

Alocação de MemóriaAlocação de Memória

Page 8: Unidade5_P1

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.

Page 9: Unidade5_P1

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

Page 10: Unidade5_P1

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)

Page 11: Unidade5_P1

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.

Page 12: Unidade5_P1

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.

Page 13: Unidade5_P1

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) ����

Page 14: Unidade5_P1

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.

Page 15: Unidade5_P1

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.

Page 16: Unidade5_P1

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.

Page 17: Unidade5_P1

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.

Page 18: Unidade5_P1

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.

Page 19: Unidade5_P1

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.

Page 20: Unidade5_P1

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

Page 21: Unidade5_P1

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

Page 22: Unidade5_P1

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

Page 23: Unidade5_P1

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.

Page 24: Unidade5_P1

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 !!!

Page 25: Unidade5_P1

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

Page 26: Unidade5_P1

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

Page 27: Unidade5_P1

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

Page 28: Unidade5_P1

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

Page 29: Unidade5_P1

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

Page 30: Unidade5_P1

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).

Page 31: Unidade5_P1

EADDCC006 #31

ABCDE

3MB 6MB 1MB 4MB 2MB

Sistema Operacional

Área Livre = 11MB

BCEA

Alocação Contígua

Particionada Dinâmica

Page 32: Unidade5_P1

EADDCC006 #32

ABCDE

3MB 6MB 1MB 4MB 2MB

Sistema Operacional

Programa B

Área Livre = 7MB

CEA

Alocação Contígua

Particionada Dinâmica

Page 33: Unidade5_P1

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

Page 34: Unidade5_P1

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

Page 35: Unidade5_P1

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

Page 36: Unidade5_P1

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

Page 37: Unidade5_P1

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

Page 38: Unidade5_P1

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 >

Page 39: Unidade5_P1

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

Page 40: Unidade5_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

Page 41: Unidade5_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.

Page 42: Unidade5_P1

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

Page 43: Unidade5_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

Page 44: Unidade5_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

Page 45: Unidade5_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

Page 46: Unidade5_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

Page 47: Unidade5_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

Page 48: Unidade5_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!

Page 49: Unidade5_P1

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 !!!)