You are on page 1of 43

Gerência de Memória

Sistemas Operacionais

Memória
Década de 30 – John Von Neumann

Computador composto por três partes: Processador, Dispositivos I/O e a Memória Programa deveria ser armazenado na memória junto com os dados. Capaz de lembrar seqüências de comandos previamente fornecidos executando-as fielmente.

Memória
Década de 30 – John Von Neumann

Arquitetura Princeton e Arquitetura Harward

Princeton
• Único barramento para transferência de dados e instruções entre memória e processador • Predominou pela simplicidade

• Dois barramentos ligando o processador aos dispositivos de memória de dados e programas.• Harward • Dispositivos de memória distintos para armazenamento de dados e programas. • Mais eficiente .

• Processadores evoluíram primeiro.• Ambos são conceitos revolucionários . . • Não existia tecnologia suficiente para construção de dispositivos que funcionassem como memória.

. onde cada núcleo armazenava um único bit.• 1ª Memória primária foi construída com pequenos núcleos magnetizáveis de ferrite interligados matricialmente por uma delicada fiação de cobre. • Wait States: é o tempo de espera por parte do processador até que a memória esteja preparada para ler ou gravar os dados. • processadores são capazes de ler e escrever mais rápido do que os circuitos de memória do mesmo nível tecnológico.

REGISTRADORES E CACHE) Os dispositivos de armazenamento secundário. estamos nos referindo aos circuitos que trocam dados diretamente com o processador durante o ciclo de execução de seus comandos mais básicos. PenDrive) . (Discos rígidos.Quando se fala em memória. a memória primária ou armazenamento primário. CDs. (RAM. DVds. ou seja. dispositivos de memória de massa que não devem ser confundidos com a memória básica do computador. ROM. isto é.

não haveria nenhum computador digital de programa armazenado.Memória Memória é um termo genérico usado para designar as partes do computador ou dos dispositivos periféricos onde os dados e programas são armazenados. Sem uma memória de onde os processadores podem ler e escrever informações. .

cada célula com seu endereço 0 1 2 3 4 5 6 7 8 2 31 4 35 26 124 42 12 42 .Memória • A memória pode ser vista como um array (vetor) de células de armazenamento (palavras ou bytes).

CPU Memória Sistema de I/O .Memória • A CPU e os controladores dos dispositivos periféricos podem ler e escrever em posições de memória.

– “É um dos fatores mais importantes em um projeto de S. – Programas só executam se estiverem na memória principal. – Necessidade de uso otimizado. . era ou é? – Preocupação do projetista: SO que não ocupassem muito espaço de memória.”.O.Memória • Considerações: – Recurso caro e escasso.

. • Por isso existe a necessidade do Gerente de Memória. • Estes programas devem estar localizados na memória principal. • Memória principal não possui tamanho suficiente.Memória • O objetivo principal de um Sistema Computacional é executar programas. • SO modernos utilizam principalmente dos discos rígidos como dispositivos secundários de apoio à memória.

para que sejam alocadas quando necessário. – Transferência temporária de processos residentes na memória principal para memória secundária .Gerência de Memória • Algumas funções do Gerente de Memória – Controlar quais as unidades de memória estão ou não estão em uso. – Liberar as unidades de memória que foram desocupadas por um processo que finalizou. – alocação da memória de acordo com as necessidades dos processos – Tratar do Swapping entre memória principal e memória secundária.

Mecanismos para Gerência de Memória • • • • • • • máquina pura monitor residente swapping partições múltiplas paginação segmentação sistemas combinados .

. • Viável apenas em sistemas dedicados.Máquina Pura • É o esquema mais simples. • O usuário lida diretamente com o hardware e possui total controle sobre toda a memória. pois não existe gerência de memória. onde o computador controla um equipamento específico. • Não exige nenhum software ou hardware especiais.

Máquina Pura • Problemas: – não existe a infra-estrutura do SO (rotinas de E/S. por exemplo) – não há monitor residente para controlar chamadas de sistema ou erros .

Sistemas Monoprogramados Alocação Contígua Simples • Com monoprogramação a gerência de memória fica simples. • O espaço é dividido entre o SO e o processo do usuário que está sendo executado. .

Monoprogramação • Vantagens: – simplicidade – custo baixo de implementação e uso – flexibilidade .

Monitor Residente • Normalmente. • Memória dividida em duas partes: – área do SO – área do usuário • Registrador limite: contém o primeiro endereço do programa usuário . este esquema é usado em sistemas monoprogramados.

Monitor Residente Sistema Operacional Registrador Limite Área para o programa usuário Área livre .

o programa é dividido em módulos que são executados independentemente na mesma área de memória .E se o tamanho do programa for maior do que a memória disponível? Neste caso utiliza-se a técnica conhecida como overlay.

Overlay Cadastramento Sistema Operacional Módulo principal 2 kb 4 kb 3 kb Impressão 4 kb 2 kb Área de Overlay Área livre 1 kb Área não utilizada 2 kb .

Multiprogramação através de Swapping • É implementada por um SO do tipo monitor residente • O esquema de gerenciamento de memória é estendido para implementar swapping • O programa que perde a CPU é copiado p/ disco. enquanto o programa que ganha a CPU é transferido do disco p/ a memória principal .

Swapping reg. limite Monitor Swap-in Espaço do Usuário Swap-out U1 U2 .

Exercício 1)O que é Memória 2)Cite exemplos de memória primária: 3)Cite exemplos de memória secundária: 4)Para a sua execução. em qual memória o programa precisa estar? 5)Quais as funções do Gerente de Memória 6)O que é Swapping? .

o processo é capaz de acessar.é aquela implementada pelos circuitos integrados de memória.é aquela que o processo enxerga. Memória Física . pela eletrônica do computador CPU Endereço lógico Gerenciador de Endereço Memória físico Memória .Gerência de Memória Memória Lógica .

é conveniente ter vários programas na memória ao mesmo tempo para que a CPU seja rapidamente alternada entre eles • Solução: dividir a memória em partições que podem ser: – Partições Fixas (regiões estáticas) – Partições variáveis (regiões dinâmicas) .Partições Múltiplas • Com multiprogramação.

ele é colocado em uma fila à espera que uma partição de tamanho suficiente se torne disponível . • Quando um processo é criado.Partições Fixas • A memória é dividida em partições que não são alteradas durante a execução do sistema.

Partições Fixas • Para definir a partição onde o programa vai ser colocado. existem duas opções: – Montar uma fila individual para cada partição – Montar uma fila única para todas as partições .

Partições Fixas .

Fragmentação • São perdas (desperdício) de memória: – fragmentação interna: memória é perdida dentro da partição alocada (é um desperdício de espaço dentro da partição usada pelo processo) – fragmentação externa: ocorre quando existe espaço disponível mas este é pequeno demais para os processos que estão à espera (perda de espaço fora das partições alocadas) .

Fragmentação .

Partições Fixas • O controle de partições fixas é conceitualmente simples. Necessita levar em conta: • tamanhos das partições de memória • algoritmo para gerenciar a lista de processos em espera .

Partições Fixas • Exemplo: memória de 256K – espaço do SO: 64K – espaço para processos pequenos: 16K – espaço para processos médios: 48K – espaço para processos grandes: 128K .

• A solução é permitir que o tamanho das partições varie ao longo do tempo. Partições Variáveis .Partições Fixas • O maior problema das partições fixas é determinar a melhor divisão da memória.

Partições Variáveis • Os tamanhos das partições variam de acordo com a necessidade • Tanto o tamanho quanto o número de partições variam dinamicamente • Elimina a fragmentação interna • Mais difícil de implementar .

a lista de lacunas é consultada e é escolhida uma lacuna de tamanho suficiente . • As áreas disponíveis são denominadas lacunas (holes) • Quando um processo chega para ser executado.Partições Variáveis • O SO mantém uma lista indicando quais partes da memória estão disponíveis e quais estão ocupadas.

Partições Variáveis JOB Memória Tempo 0 monitor 40K 40K 0 monitor 40K 1 60K 10 0 2 100K 5 monitor 3 30K 20 0 4 70K 8 monitor 40K 5 50K 15 0 monitor 40K Job 5 Job 1 100K 100K Job 1 100K Job 1 job 1 termina 100K aloca job 5 Job 4 170K 90K 100K Job 4 aloca job 4 Job 2 job 2 termina 170K Job 4 170K 200K 200K 200K 200K 200K Job 3 230K 256K 230K 256K Job 3 230K 256K Job 3 230K 256K Job 3 230K 256K Job 3 .

• Quando um processo termina. Se a área é adjacente a outra área livre.Características • Vai existir um conjunto de áreas livres (lacunas) espalhadas pela memória. . as duas áreas são aglutinadas em uma única lacuna. a área é liberada. o conjunto é pesquisado à procura de uma área maior ou igual à necessidade . a parte restante vai continuar livre.Partições Variáveis . • Se a área é maior. • Para executar um programa.

.Partições Variáveis Existem algoritmos para a escolha de uma área livre.

Algoritmos de Alocação para partições variáveis • Algoritmos para escolha da área livre (alocação dinâmica da memória): – first-fit: aloca o primeiro espaço livre de tamanho suficiente – best-fit: aloca o menor espaço livre que seja suficiente. Produz a menor sobra de espaço – worst-fit: aloca o maior espaço livre.Partições Variáveis . Produz a maior sobra de espaço livre (a sobra é mais útil que a gerada por bestfit) .

Algoritmos de Alocação .Partições Variáveis .