Você está na página 1de 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 ENG04008 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 xas Parties denidas manualmente pelo operador Uma partio de tamanho suciente alocada para cada tarefa Em geral, o nmero de tarefas > nmero de parties =>diversas politicas para utilizao das parties Uma la de tarefas para cada partio Uma la nica Fila nica com best-t Fila nica com best-t 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 eciente

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-t Next-t Best-t Worst-t Quick-t

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 Ineciente 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 codicadas 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 nal = Offset + base Soma feita por hardware a cada acesso memria Endereos so vericados 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

Vericao de Privilgios

Copyright (c) Walter Fetter Lages p.31

I/O Permission Bit Map

Copyright (c) Walter Fetter Lages p.32