Sei sulla pagina 1di 30

Sistemas Operacionais

Gerenciamento de memria
Captulos 7 Operating Systems: Internals and Design Principles W. Stallings

IC - UFF

O problema

Em um ambiente multiprogramado, necessrio:

subdividir a memria para acomodar mltiplos processos mas se poucos processos esto na memria, em boa parte do tempo estaro esperando por E/S UCP sub-utilizada

ento, deve-se alocar memria de forma eficiente ao maior nmero de processos Gerenciador de Memria

IC - UFF

Alguns requisitos do GM
Relocao

o programador no deve se preocupar com o local onde o programa (processo) ser carregado para execuo durante a execuo, o processo poder sair da memria e retornar para um local diferente

referncias devem ser resolvidas para endereos de memria fsica


p. ex. - bloqueado para suspenso

IC - UFF

Alguns requisitos do GM
Proteo

processos no devem poder referenciar posies de memria em outros processos sem permisso em virtude da relocao, no possvel testar endereos em programas com suporte de h/w, o teste dever ser em tempo de execuo

IC - UFF

Alguns requisitos do GM
Compartilhamento

deve-se permitir que vrios processos possam acessar a mesma poro de memria

o mecanismo de proteo deve ter flexibilidade caso por exemplo, excluso mtua

IC - UFF

Alguns requisitos do GM
Organizao lgica

programas so normalmente separados em mdulos, que podem ser escritos e compilados separadamente graus diferentes de proteo podem ser atribudos aos mdulos compartilhamento de mdulos manipulao de diferentes mdulos de um mesmo executvel pode ser melhor realizada atravs de segmentao

IC - UFF

Alguns requisitos do GM
Organizao fsica

memria organizada como uma hierarquia se um programa precisa de mais memria do que o disponvel na MP, a MS dever ser utilizada uso de memria cache este gerenciamento dever ser feito de forma transparente pelo SO

IC - UFF

Particionamento fixo
Particionamento da memria em regies fixas

Se parties idnticas

processos menores que o tamanho da partio podem ser carregados diretamente. Processos maiores exigiro overlay. Se processos menores fragmentao interna desperdcio de MP

IC - UFF

Particionamento fixo
Parties de tamanhos distintos diminuem a ineficincia (no a elimina) associa o processo partio menor possvel aumenta a sobrecarga do gerenciamento (e.g., uma fila por partio ou fila nica?)

De qualquer forma: o nmero de parties determina o nmero de processos no sistema processos pequenos utilizam de maneira ineficiente a memria relocao

IC - UFF

Particionamento fixo tamanho varivel

IC - UFF

Particionamento fixo tamanho varivel

IC - UFF

Particionamento dinmico

Nmero e tamanho das parties varivel Cada processo recebe a quantidade de memria que necessita Gerenciando buracos e processos
SO P1 SO P1 P2 SO P1 P2 P3
P4 128k - sem espao - SO faz swap out - SO escolhe P1

SO

P1 320k

P2 224k

P3 288k

IC - UFF

Particionamento dinmico
SO P4 P2

buracos comeam a ser formados tamanhos tentem a ser pequenos necessidade de rearrumar os espaos

P3

IC - UFF

Particionamento dinmico

IC - UFF

Particionamento dinmico
Polticas de alocao primeiro encaixe (o melhor) - first fit

seleciona o primeiro que encaixa, a partir do incio mais simples, mais rpido e melhor na maioria das vezes seleciona o primeiro que encaixa, a partir da ltima partio selecionada usualmente seleciona para o final da MP de todas as parties, seleciona aquela imediatamente maior mais custoso, maior grau de fragmentao externa

prximo encaixe (um pouco pior) next fit

melhor encaixe (o pior!) - best fit

IC - UFF

Particionamento dinmico

Buracos na memria: fragmentao externa Compactao: tempo perdido e relocao dinmica (melhoria com swapping)

Sobrecarga maior que mtodo fixo


Em qualquer caso, relocao Ento, o que fazer?

IC - UFF

Gerenciando buracos e processos

Mapas de bits (b): simples; ineficincia Listas encadeadas (c)

Buddy System

IC - UFF

Realocao

Mapeamento de endereos virtuais em reais necessrio, pois processos so alocados em espao de MP dinamicamente
novo pronto
P1 em end. de MP 500

Ex.: processo P1
P1:
executando

bloqueado

P1 passa para suspenso

Ao voltar para MP P1 vai para end. 1024

IC - UFF

Realocao

Mapeamento eficiente

endereo fsico s calculado quando acesso a MP

endereos definidos: lgico, relativo, fsico


base armazena o endereo inicial de MP do processo (quando o processo passa para executando) limite armazena endereo final do processo
if (Z + base <= limite) acesse Z+base seno trap

Registradores:

Acesso ao endereo Z no programa

IC - UFF

Relocao
endereo relativo registrador de base

PCB
somador programa registrador limite imagem do processo na memria dados

comparador int

endereo absoluto

pilha
IC - UFF

Paginao

Problemas tanto em particionamento fixo quanto dinmico:


fixo fragmentao interna dinmico fragmentao externa e realocao dinmica Processo dividido em pginas (blocos de processos)

Soluo:

MP dividida em quadros de mesmo tamanho

Pginas/quadros so de pequeno tamanho (e.g., 1K): fragmentao interna pequena

Elimina fragmentao externa


SO mantm uma tabela de pginas por processo

IC - UFF

Paginao
Processos A, B, C esto prontos

Exemplo: nmero de pginas/processo


A B C D 4 3 4 5

A1
A2 A3 A4 B1 B2 B3 C1 C2 C3 C4

IC - UFF

Paginao
B termina
A1 A2 A3 A4

D submetido
A1 A2 A3 A4 D1 D2 D3 C1 C2 C3 C4 C1 C2 C3 C4

D4
D5

IC - UFF

Paginao

Processo no precisa estar completamente na MP (veremos mais tarde em Memria Virtual)

Processo no precisa ocupar rea contgua em memria


Endereos so gerados dinamicamente em tempo de execuo Somente um registrador ento, no suficiente Tabela de Pginas

IC - UFF

Paginao: suporte de h/w


Cada processo tem sua tabela de pginas (TP) TP: mapeamento pgina x quadro

Bit de presena
Bit de modificao Como funciona?

endereo lgico Z - no da pagina + offset dentro da pgina

IC - UFF

Paginao: suporte de h/w

Ex.: processo tem 8 endereos, 4 endereos por pgina


pg. 1
0 00 0 01 0 10 0 11 1 00 1 01 1 10 1 11

0 1 2 3 4 5 6 7

pg. 2

IC - UFF

Paginao: suporte de h/w


Ex.: endereo lgico (16 bits) 1502 tamanho da pgina 1K bytes (cada endereo armazena 1 byte) 1502 0000010111011110

Tabela de Pginas
0 1 2 3 4 5 y w z

210 endereos/pgina 10 bits para especificar o offset (478) dentro de uma pgina 000001 0111011110 Logo, restam 6 bits do end. lgico para especificar a pgina pgina 1
Endereo real = 1K * w + 478 frame tem 1K

IC - UFF

Segmentao

Programas so normalmente separados em mdulos: unidade lgica Segmentos de um programa no precisam ser do mesmo tamanho Existe um tamanho mximo para o segmento Usurio tem controle elimina fragmentao interna (mas pode haver, externa)

IC - UFF

Segmentao
Tabela de Segmentos

entrada = endereo inicial na MP e tamanho do segmento

clculo do endereo real similar a paginao. Como?

IC - UFF

Exerccio
1)

Considere um espao de endereamento lgico de oito pginas de 1024 palavras cada, mapeado em um memria fsica de 32 quadros. Quantos bits existem no endereo lgico? E no endereo fsico? Considere um sistema em que a memria gerenciada por uma lista encadeada de blocos disponveis, de diferentes tamanhos. Essa lista definida por uma estrutura de dados contendo o endereo base do bloco, o tamanho de cada bloco e um apontador para o prximo elemento da lista. Existem dois apontadores, um para o primeiro elemento da lista, e outro para o ltimo. Escreva o procedimento addr = allocmem (n), onde n o tamanho do bloco que deve ser alocado e addr contm, no retorno da chamada, o endereo base do bloco alocado. A tcnica de alocao a ser utilizada First-Fit. Escreva tambm o procedimento free(addr).

2)

IC - UFF

Potrebbero piacerti anche