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