Vous êtes sur la page 1sur 32

Gerenciamento de Memria

Walter Fetter Lages


w.fetter@ieee.org

Universidade Federal do Rio Grande do Sul


Escola de Engenharia
Departamento de Engenharia Eltrica
Programa de Ps-Graduao em Engenharia Eltrica
ELE213 Programao de Sistemas de Tempo Real

Copyright (c) Walter Fetter Lages p.1


Introduo

Alocao e desalocao de memria


Esttica
Dinmica

Memria virtual
Overlay
Paginao

Segmentao de memria

Copyright (c) Walter Fetter Lages p.2


Sistemas Monotarefa
Um nico programa na memria
O programa utiliza toda a memria
O programa deve ter todos os drivers de I/O

Diviso da memria entre o programa e o sistema


operacional

Copyright (c) Walter Fetter Lages p.3


Sistemas Multitarefa
Parties fixas
Parties definidas manualmente pelo
operador
Uma partio de tamanho suficiente alocada
para cada tarefa
Em geral, o nmero de tarefas > nmero de
parties =>diversas politicas para utilizao
das parties
Uma fila de tarefas para cada partio
Uma fila nica
Fila nica com best-fit
Fila nica com best-fit e mximo de
skip-over
Copyright (c) Walter Fetter Lages p.4
Parties Fixas

Copyright (c) Walter Fetter Lages p.5


Parties Variveis

O tamanho das parties varia conforme a


criao/destruio das tarefas
Fragmentao de memria
Compactao de memria
Consome muito tempo -> normalmente feito
durante a alocao/desalocao de memria
em sistemas no tempo real
Espao para a memria das tarefas crescer
Alocao dinmica de memria para dados

Copyright (c) Walter Fetter Lages p.6


Lay-out de Memria das Tarefas

Copyright (c) Walter Fetter Lages p.7


Mtodos de Gerenciamento
Bit-map
Memria dividida em unidades de alocao
Existe um bit-map para sinalizar se cada
unidade de alocao est alocada ou livre
Procura por espaos livres no eficiente

Copyright (c) Walter Fetter Lages p.8


Mtodos de Gerenciamento
Listas ligadas
Existe uma lista ligada que relaciona os
blocos de memria alocados e livres
Normalmente a lista ordenada por endereo

Algoritmos de Alocao de memria


First-fit
Next-fit
Best-fit
Worst-fit
Quick-fit

Copyright (c) Walter Fetter Lages p.9


Mtodos de Gerenciamento
Buddy System
Utiliza o fato dos endereos serem binrios
Existe uma lista de blocos livres de tamanho
1, 2, 4, 8 ... tamanho da memria
Ineficiente no uso da memria
Fragmentao interna

Copyright (c) Walter Fetter Lages p.10


Buddy System

Copyright (c) Walter Fetter Lages p.11


Relocao

Em sistemas multitarefa, cada tarefa ter um


endereo inicial diferente. Como o
programador/compilador/linker saber o
endereo inicial (e endereos de subrotinas,
dados, etc...) da tarefa?
Problema da relocao
Gerar apenas cdigo com endereos relativos
Cdigo relocvel
Relocao durante a carga da tarefa na
memria

Copyright (c) Walter Fetter Lages p.12


Segmentao

Associa-se a cada rea de memria um valor de


base e um valor de limite
base=endereo inicial
limite=endereo mximo ou tamanho
Todas as tarefas so codificadas assumindo que a
sua rea de memria comea em 0
Quando a tarefa selecionada para executar, base
e limite so carregados em registradores especiais
na CPU

Copyright (c) Walter Fetter Lages p.13


Segmentao

Endereo final = Offset + base


Soma feita por hardware a cada acesso
memria
Endereos so verificados quanto ao limite
Uma tarefa no pode acessar a rea das outras

Copyright (c) Walter Fetter Lages p.14


Segmentao

O seletor e descritor de segmento so controlados


pelo sistema operacional
O offset controlado pelo programa de aplicao
Proteo
Usualmente o descritor de segmentos tem
alguns bits associados que so utilizados para
determinar as caractersticas de proteo do
segmento
Permisses de leitura, escrita, execuo

Cache de descritor de segmento


Evita dois acessos a memria
Alterado apenas quando o registrador de
seletor de segmento alterado Copyright (c) Walter Fetter Lages p.15
Segmentao no ix86

Local Descriptor Table (LDT)


Global Descriptor Table (GDT)

Copyright (c) Walter Fetter Lages p.16


GLDT e LDT

Copyright (c) Walter Fetter Lages p.17


Segmentao no ix86

Copyright (c) Walter Fetter Lages p.18


Seletor de Segmento no ix86

Copyright (c) Walter Fetter Lages p.19


Descritor de Segmento

Copyright (c) Walter Fetter Lages p.20


Segmentao no 8086/8088

Processadores sem modo protegido


Sem proteo, no tem sentido a existncia de
permisses e limite no segmento
O descritor de segmento resume-se base
Como os registradores so de 16 bits
decidiu-se limitar o incio de segmentos
apenas alinhados com "pargrafos"
Segmentao mal implementada
O "tamanho mximo"do segmento 64KB
O limite do segmento no garantido
Na verdade apenas um esquema para
enderear 1MB utilizando 2 registradores
Copyright (c) Walter Fetter Lages p.21
Segmentao no 8086/8088

Endereo fsico=reg. de segmento * 16 + offset


Endereo fsico=reg. de segmento 4 + offset

Copyright (c) Walter Fetter Lages p.22


Memria Virtual

Paginao
Falta de
pgina
Page-table

Endereo
Virtual
Fsico

Copyright (c) Walter Fetter Lages p.23


Tabela de Pginas

Copyright (c) Walter Fetter Lages p.24


Hardware de Paginao

Usualmente a tabela de pginas mantida em


memria e no em registradores
Registrador de base da tabela de pginas
Translation look-aside buffer (TLB)
Evita dois acessos a memria
Memria associativa

Pginas tambm podem ter bits de proteo


associados
Bit de presena/ausncia

Copyright (c) Walter Fetter Lages p.25


Pginas de 4KB no ix86

Copyright (c) Walter Fetter Lages p.26


Pginas de 4MB no ix86

Copyright (c) Walter Fetter Lages p.27


Segmentao e Paginao no ix86

Copyright (c) Walter Fetter Lages p.28


Proteo de Memria no ix86

Copyright (c) Walter Fetter Lages p.29


Proteo de I/O no ix86

Existe um nvel de privilgio de I/O


Apenas processos com nvel de privilgio
menor ou igual podem executar instrues de
I/O
Associado a cada processo pode existir um
bitmap de permisses de I/O
Apenas as portas habilitadas podem ser
acessadas
Hardware Virtual
Virtualizao de dispositivos

Copyright (c) Walter Fetter Lages p.30


Verificao de Privilgios

Copyright (c) Walter Fetter Lages p.31


I/O Permission Bit Map

Copyright (c) Walter Fetter Lages p.32

Vous aimerez peut-être aussi