SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
Gerenciamento de Memória
              Walter Fetter Lages
               w.fetter@ieee.org


   Universidade Federal do Rio Grande do Sul
             Escola de Engenharia
     Departamento de Engenharia Elétrica
      ENG04008 Sistemas de Tempo Real




                                          Copyright (c) Walter Fetter Lages – p.1
Introdução

•   Alocação e desalocação de memória
     • Estática
     • Dinâmica

•   Memória virtual
     • Overlay
     • Paginação

•   Segmentação de memória




                                        Copyright (c) Walter Fetter Lages – p.2
Sistemas Monotarefa
•   Um único programa na memória
     • O programa utiliza toda a memória
     • O programa deve ter todos os drivers de I/O

•   Divisão da memória entre o programa e o sistema
    operacional




                                      Copyright (c) Walter Fetter Lages – p.3
Sistemas Multitarefa
•   Partições fixas
     • Partições definidas manualmente pelo
       operador
     • Uma partição de tamanho suficiente é alocada
       para cada tarefa
     • Em geral, o número de tarefas > número de
       partições =>diversas politicas para utilização
       das partições
     • Uma fila de tarefas para cada partição
        • Uma fila única
        • Fila única com best-fit
        • Fila única com best-fit e máximo de
          skip-over
                                        Copyright (c) Walter Fetter Lages – p.4
Partições Fixas




                  Copyright (c) Walter Fetter Lages – p.5
Partições Variáveis

•   O tamanho das partições varia conforme a
    criação/destruição das tarefas
•   Fragmentação de memória
•   Compactação de memória
     • Consome muito tempo -> normalmente feito
        durante a alocação/desalocação de memória
        em sistemas não tempo real
•   Espaço para a memória das tarefas crescer
     • Alocação dinâmica de memória para dados




                                      Copyright (c) Walter Fetter Lages – p.6
Lay-out de Memória das Tarefas




                         Copyright (c) Walter Fetter Lages – p.7
Métodos de Gerenciamento
•   Bit-map
     • Memória dividida em unidades de alocação
     • Existe um bit-map para sinalizar se cada
        unidade de alocação está alocada ou livre
     • Procura por espaços livres não é eficiente




                                       Copyright (c) Walter Fetter Lages – p.8
Métodos de Gerenciamento
•   Listas ligadas
     • Existe uma lista ligada que relaciona os
       blocos de memória alocados e livres
     • Normalmente a lista é ordenada por endereço

•   Algoritmos de Alocação de memória
     • First-fit
     • Next-fit
     • Best-fit
     • Worst-fit
     • Quick-fit



                                      Copyright (c) Walter Fetter Lages – p.9
Métodos de Gerenciamento
•   Buddy System
     • Utiliza o fato dos endereços serem binários
     • Existe uma lista de blocos livres de tamanho
       1, 2, 4, 8 ... tamanho da memória
     • Ineficiente no uso da memória
     • Fragmentação interna




                                       Copyright (c) Walter Fetter Lages – p.10
Buddy System




               Copyright (c) Walter Fetter Lages – p.11
Relocação

•   Em sistemas multitarefa, cada tarefa terá um
    endereço inicial diferente. Como o
    programador/compilador/linker saberá o
    endereço inicial (e endereços de subrotinas,
    dados, etc...) da tarefa?
     • Problema da relocação
     • Gerar apenas código com endereços relativos
       • Código relocável
     • Relocação durante a carga da tarefa na
       memória



                                      Copyright (c) Walter Fetter Lages – p.12
Segmentação

•   Associa-se a cada área de memória um valor de
    base e um valor de limite
•   base=endereço inicial
•   limite=endereço máximo ou tamanho
•   Todas as tarefas são codificadas assumindo que a
    sua área de memória começa em 0
•   Quando a tarefa é selecionada para executar, base
    e limite são carregados em registradores especiais
    na CPU



                                        Copyright (c) Walter Fetter Lages – p.13
Segmentação

•   Endereço final = Offset + base
     • Soma feita por hardware a cada acesso à
       memória
•   Endereços são verificados quanto ao limite
     • Uma tarefa não pode acessar a área das outras




                                       Copyright (c) Walter Fetter Lages – p.14
Segmentação

•   O seletor e descritor de segmento são controlados
    pelo sistema operacional
•   O offset é controlado pelo programa de aplicação
•   Proteção
     • Usualmente o descritor de segmentos tem
       alguns bits associados que são utilizados para
       determinar as características de proteção do
       segmento
     • Permissões de leitura, escrita, execução

•   Cache de descritor de segmento
     • Evita dois acessos a memória
     • Alterado apenas quando o registrador de
       seletor de segmento é alterado   Copyright (c) Walter Fetter Lages – p.15
Segmentação 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
Segmentação 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
Segmentação no 8086/8088

•   Processadores sem modo protegido
•   Sem proteção, não tem sentido a existência de
    permissões e limite no segmento
     • O descritor de segmento resume-se à base
     • Como os registradores são de 16 bits
       decidiu-se limitar o início de segmentos
       apenas alinhados com quot;parágrafosquot;
•   Segmentação mal implementada
     • O quot;tamanho máximoquot;do segmento é 64KB
     • O limite do segmento não é garantido
     • Na verdade é apenas um esquema para
       endereçar 1MB utilizando 2 registradores
                                       Copyright (c) Walter Fetter Lages – p.21
Segmentação no 8086/8088

•   Endereço físico=reg. de segmento * 16 + offset
•   Endereço físico=reg. de segmento « 4 + offset




                                       Copyright (c) Walter Fetter Lages – p.22
Memória Virtual



•   Paginação
     • Falta de
       página
     • Page-table

•   Endereço
     • Virtual
     • Físico




                           Copyright (c) Walter Fetter Lages – p.23
Tabela de Páginas




                    Copyright (c) Walter Fetter Lages – p.24
Hardware de Paginação

•   Usualmente a tabela de páginas é mantida em
    memória e não em registradores
     • Registrador de base da tabela de páginas
     • Translation look-aside buffer (TLB)
        • Evita dois acessos a memória
        • Memória associativa

•   Páginas também podem ter bits de proteção
    associados
     • Bit de presença/ausência




                                      Copyright (c) Walter Fetter Lages – p.25
Páginas de 4KB no ix86




                     Copyright (c) Walter Fetter Lages – p.26
Páginas de 4MB no ix86




                     Copyright (c) Walter Fetter Lages – p.27
Segmentação e Paginação no ix86




                          Copyright (c) Walter Fetter Lages – p.28
Proteção de Memória no ix86




                        Copyright (c) Walter Fetter Lages – p.29
Proteção de I/O no ix86

•   Existe um nível de privilégio de I/O
     • Apenas processos com nível de privilégio
       menor ou igual podem executar instruções de
       I/O
•   Associado a cada processo pode existir um
    bitmap de permissões de I/O
     • Apenas as portas habilitadas podem ser
       acessadas
•   Hardware Virtual
     • Virtualização de dispositivos




                                      Copyright (c) Walter Fetter Lages – p.30
Verificação de Privilégios




                        Copyright (c) Walter Fetter Lages – p.31
I/O Permission Bit Map




                     Copyright (c) Walter Fetter Lages – p.32

Contenu connexe

Tendances

Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionaisAbnel Junior
 
Aula05 - Arquitetura e manutanção de Computadores
Aula05 - Arquitetura e manutanção de ComputadoresAula05 - Arquitetura e manutanção de Computadores
Aula05 - Arquitetura e manutanção de ComputadoresJorge Ávila Miranda
 
Apresentação Aula Memoria
Apresentação Aula MemoriaApresentação Aula Memoria
Apresentação Aula MemoriaCENTEC
 
Gerência de Memória
Gerência de MemóriaGerência de Memória
Gerência de Memóriaelliando dias
 
Aula07 - Arquitetura e Manutenção de Computadores
Aula07 - Arquitetura e Manutenção de ComputadoresAula07 - Arquitetura e Manutenção de Computadores
Aula07 - Arquitetura e Manutenção de ComputadoresJorge Ávila Miranda
 
Memory management in Linux
Memory management in LinuxMemory management in Linux
Memory management in LinuxRaghu Udiyar
 
Processadores - CPU
Processadores - CPUProcessadores - CPU
Processadores - CPURoney Sousa
 
Aula 19 instalação de drivers de dispositivos
Aula 19   instalação de drivers de dispositivosAula 19   instalação de drivers de dispositivos
Aula 19 instalação de drivers de dispositivosMarcos Basilio
 
Aula06 - Arquitetura e Manutenção de Computadores
Aula06 - Arquitetura e Manutenção de ComputadoresAula06 - Arquitetura e Manutenção de Computadores
Aula06 - Arquitetura e Manutenção de ComputadoresJorge Ávila Miranda
 
Coletânea de exercícios informatica
Coletânea de exercícios informaticaColetânea de exercícios informatica
Coletânea de exercícios informaticaProf J.Trajano
 

Tendances (20)

Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
Windows x Linux
Windows x LinuxWindows x Linux
Windows x Linux
 
Processadores
ProcessadoresProcessadores
Processadores
 
3 placa mãe
3 placa mãe3 placa mãe
3 placa mãe
 
Aula05 - Arquitetura e manutanção de Computadores
Aula05 - Arquitetura e manutanção de ComputadoresAula05 - Arquitetura e manutanção de Computadores
Aula05 - Arquitetura e manutanção de Computadores
 
Tipos de computadores
Tipos de computadoresTipos de computadores
Tipos de computadores
 
Apresentação Aula Memoria
Apresentação Aula MemoriaApresentação Aula Memoria
Apresentação Aula Memoria
 
Hardware
HardwareHardware
Hardware
 
Gerência de Memória
Gerência de MemóriaGerência de Memória
Gerência de Memória
 
Slide placa mãe
Slide placa mãeSlide placa mãe
Slide placa mãe
 
Aula07 - Arquitetura e Manutenção de Computadores
Aula07 - Arquitetura e Manutenção de ComputadoresAula07 - Arquitetura e Manutenção de Computadores
Aula07 - Arquitetura e Manutenção de Computadores
 
Memory management in Linux
Memory management in LinuxMemory management in Linux
Memory management in Linux
 
Memória virtual
Memória virtualMemória virtual
Memória virtual
 
Sistemas de Arquivos do Windows
Sistemas de Arquivos do WindowsSistemas de Arquivos do Windows
Sistemas de Arquivos do Windows
 
Sistemas de arquivos e partições
Sistemas de arquivos e partiçõesSistemas de arquivos e partições
Sistemas de arquivos e partições
 
Aula 08 - Placa Mãe
Aula 08 - Placa MãeAula 08 - Placa Mãe
Aula 08 - Placa Mãe
 
Processadores - CPU
Processadores - CPUProcessadores - CPU
Processadores - CPU
 
Aula 19 instalação de drivers de dispositivos
Aula 19   instalação de drivers de dispositivosAula 19   instalação de drivers de dispositivos
Aula 19 instalação de drivers de dispositivos
 
Aula06 - Arquitetura e Manutenção de Computadores
Aula06 - Arquitetura e Manutenção de ComputadoresAula06 - Arquitetura e Manutenção de Computadores
Aula06 - Arquitetura e Manutenção de Computadores
 
Coletânea de exercícios informatica
Coletânea de exercícios informaticaColetânea de exercícios informatica
Coletânea de exercícios informatica
 

Similaire à Gerenciamento de Memória no ix86

PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoelliando dias
 
Componentes de Hardware
Componentes de HardwareComponentes de Hardware
Componentes de HardwareAdir Kuhn
 
Arquitetura de um computador
Arquitetura de um computadorArquitetura de um computador
Arquitetura de um computadorFilipe Duarte
 
Senai sistemas operacionais gerenciamento memoria
Senai   sistemas operacionais gerenciamento memoriaSenai   sistemas operacionais gerenciamento memoria
Senai sistemas operacionais gerenciamento memoriaCarlos Melo
 
Amostra Resolucao da Prova Sefaz 2007 Prof Jaime
Amostra   Resolucao da Prova Sefaz 2007   Prof JaimeAmostra   Resolucao da Prova Sefaz 2007   Prof Jaime
Amostra Resolucao da Prova Sefaz 2007 Prof JaimeWalter Cunha
 
Montagem manutenção de computadores
Montagem manutenção de computadoresMontagem manutenção de computadores
Montagem manutenção de computadoressetilsonadobmov
 
Placa mãe e barramentos
Placa mãe e barramentosPlaca mãe e barramentos
Placa mãe e barramentosNeil Azevedo
 
(ACH2044) Sistemas Operacionais - Aula 17
(ACH2044) Sistemas Operacionais - Aula 17(ACH2044) Sistemas Operacionais - Aula 17
(ACH2044) Sistemas Operacionais - Aula 17Norton Trevisan Roman
 
Aula 3 barramentos de placa mae
Aula 3 barramentos de placa maeAula 3 barramentos de placa mae
Aula 3 barramentos de placa maeMarcos Basilio
 
Detecção de erros no computador-Arquitetura de Computadores
Detecção de erros no computador-Arquitetura de ComputadoresDetecção de erros no computador-Arquitetura de Computadores
Detecção de erros no computador-Arquitetura de ComputadoresGabriel Santos
 
Fundamento Hardware - Aula 005
Fundamento Hardware - Aula 005Fundamento Hardware - Aula 005
Fundamento Hardware - Aula 005Cláudio Amaral
 
FreeBsd com Alta Disponibilidade
FreeBsd com Alta DisponibilidadeFreeBsd com Alta Disponibilidade
FreeBsd com Alta DisponibilidadeBoteco 4Linux
 
Arquitetura de Memoria do PostgreSQL
Arquitetura de Memoria do PostgreSQLArquitetura de Memoria do PostgreSQL
Arquitetura de Memoria do PostgreSQLRaul Oliveira
 

Similaire à Gerenciamento de Memória no ix86 (20)

Aula 05 instalação de hardware
Aula 05 instalação de hardwareAula 05 instalação de hardware
Aula 05 instalação de hardware
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardo
 
Componentes de Hardware
Componentes de HardwareComponentes de Hardware
Componentes de Hardware
 
Arquitetura de um computador
Arquitetura de um computadorArquitetura de um computador
Arquitetura de um computador
 
Placa-Mãe
Placa-Mãe Placa-Mãe
Placa-Mãe
 
Senai sistemas operacionais gerenciamento memoria
Senai   sistemas operacionais gerenciamento memoriaSenai   sistemas operacionais gerenciamento memoria
Senai sistemas operacionais gerenciamento memoria
 
Amostra Resolucao da Prova Sefaz 2007 Prof Jaime
Amostra   Resolucao da Prova Sefaz 2007   Prof JaimeAmostra   Resolucao da Prova Sefaz 2007   Prof Jaime
Amostra Resolucao da Prova Sefaz 2007 Prof Jaime
 
1 conhecendo o pc
1 conhecendo o pc1 conhecendo o pc
1 conhecendo o pc
 
Apresentacao Aula02 So
Apresentacao Aula02 SoApresentacao Aula02 So
Apresentacao Aula02 So
 
355862 slide12-mem virt
355862 slide12-mem virt355862 slide12-mem virt
355862 slide12-mem virt
 
Montagem manutenção de computadores
Montagem manutenção de computadoresMontagem manutenção de computadores
Montagem manutenção de computadores
 
Hardware
HardwareHardware
Hardware
 
Placa mãe e barramentos
Placa mãe e barramentosPlaca mãe e barramentos
Placa mãe e barramentos
 
Conceitoseaplicaes
ConceitoseaplicaesConceitoseaplicaes
Conceitoseaplicaes
 
(ACH2044) Sistemas Operacionais - Aula 17
(ACH2044) Sistemas Operacionais - Aula 17(ACH2044) Sistemas Operacionais - Aula 17
(ACH2044) Sistemas Operacionais - Aula 17
 
Aula 3 barramentos de placa mae
Aula 3 barramentos de placa maeAula 3 barramentos de placa mae
Aula 3 barramentos de placa mae
 
Detecção de erros no computador-Arquitetura de Computadores
Detecção de erros no computador-Arquitetura de ComputadoresDetecção de erros no computador-Arquitetura de Computadores
Detecção de erros no computador-Arquitetura de Computadores
 
Fundamento Hardware - Aula 005
Fundamento Hardware - Aula 005Fundamento Hardware - Aula 005
Fundamento Hardware - Aula 005
 
FreeBsd com Alta Disponibilidade
FreeBsd com Alta DisponibilidadeFreeBsd com Alta Disponibilidade
FreeBsd com Alta Disponibilidade
 
Arquitetura de Memoria do PostgreSQL
Arquitetura de Memoria do PostgreSQLArquitetura de Memoria do PostgreSQL
Arquitetura de Memoria do PostgreSQL
 

Plus de elliando dias

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structureselliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 

Plus de elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 

Gerenciamento de Memória no ix86

  • 1. Gerenciamento de Memória Walter Fetter Lages w.fetter@ieee.org Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Engenharia Elétrica ENG04008 Sistemas de Tempo Real Copyright (c) Walter Fetter Lages – p.1
  • 2. Introdução • Alocação e desalocação de memória • Estática • Dinâmica • Memória virtual • Overlay • Paginação • Segmentação de memória Copyright (c) Walter Fetter Lages – p.2
  • 3. Sistemas Monotarefa • Um único programa na memória • O programa utiliza toda a memória • O programa deve ter todos os drivers de I/O • Divisão da memória entre o programa e o sistema operacional Copyright (c) Walter Fetter Lages – p.3
  • 4. Sistemas Multitarefa • Partições fixas • Partições definidas manualmente pelo operador • Uma partição de tamanho suficiente é alocada para cada tarefa • Em geral, o número de tarefas > número de partições =>diversas politicas para utilização das partições • Uma fila de tarefas para cada partição • Uma fila única • Fila única com best-fit • Fila única com best-fit e máximo de skip-over Copyright (c) Walter Fetter Lages – p.4
  • 5. Partições Fixas Copyright (c) Walter Fetter Lages – p.5
  • 6. Partições Variáveis • O tamanho das partições varia conforme a criação/destruição das tarefas • Fragmentação de memória • Compactação de memória • Consome muito tempo -> normalmente feito durante a alocação/desalocação de memória em sistemas não tempo real • Espaço para a memória das tarefas crescer • Alocação dinâmica de memória para dados Copyright (c) Walter Fetter Lages – p.6
  • 7. Lay-out de Memória das Tarefas Copyright (c) Walter Fetter Lages – p.7
  • 8. Métodos de Gerenciamento • Bit-map • Memória dividida em unidades de alocação • Existe um bit-map para sinalizar se cada unidade de alocação está alocada ou livre • Procura por espaços livres não é eficiente Copyright (c) Walter Fetter Lages – p.8
  • 9. Métodos de Gerenciamento • Listas ligadas • Existe uma lista ligada que relaciona os blocos de memória alocados e livres • Normalmente a lista é ordenada por endereço • Algoritmos de Alocação de memória • First-fit • Next-fit • Best-fit • Worst-fit • Quick-fit Copyright (c) Walter Fetter Lages – p.9
  • 10. Métodos de Gerenciamento • Buddy System • Utiliza o fato dos endereços serem binários • Existe uma lista de blocos livres de tamanho 1, 2, 4, 8 ... tamanho da memória • Ineficiente no uso da memória • Fragmentação interna Copyright (c) Walter Fetter Lages – p.10
  • 11. Buddy System Copyright (c) Walter Fetter Lages – p.11
  • 12. Relocação • Em sistemas multitarefa, cada tarefa terá um endereço inicial diferente. Como o programador/compilador/linker saberá o endereço inicial (e endereços de subrotinas, dados, etc...) da tarefa? • Problema da relocação • Gerar apenas código com endereços relativos • Código relocável • Relocação durante a carga da tarefa na memória Copyright (c) Walter Fetter Lages – p.12
  • 13. Segmentação • Associa-se a cada área de memória um valor de base e um valor de limite • base=endereço inicial • limite=endereço máximo ou tamanho • Todas as tarefas são codificadas assumindo que a sua área de memória começa em 0 • Quando a tarefa é selecionada para executar, base e limite são carregados em registradores especiais na CPU Copyright (c) Walter Fetter Lages – p.13
  • 14. Segmentação • Endereço final = Offset + base • Soma feita por hardware a cada acesso à memória • Endereços são verificados quanto ao limite • Uma tarefa não pode acessar a área das outras Copyright (c) Walter Fetter Lages – p.14
  • 15. Segmentação • O seletor e descritor de segmento são controlados pelo sistema operacional • O offset é controlado pelo programa de aplicação • Proteção • Usualmente o descritor de segmentos tem alguns bits associados que são utilizados para determinar as características de proteção do segmento • Permissões de leitura, escrita, execução • Cache de descritor de segmento • Evita dois acessos a memória • Alterado apenas quando o registrador de seletor de segmento é alterado Copyright (c) Walter Fetter Lages – p.15
  • 16. Segmentação no ix86 • Local Descriptor Table (LDT) • Global Descriptor Table (GDT) Copyright (c) Walter Fetter Lages – p.16
  • 17. GLDT e LDT Copyright (c) Walter Fetter Lages – p.17
  • 18. Segmentação no ix86 Copyright (c) Walter Fetter Lages – p.18
  • 19. Seletor de Segmento no ix86 Copyright (c) Walter Fetter Lages – p.19
  • 20. Descritor de Segmento Copyright (c) Walter Fetter Lages – p.20
  • 21. Segmentação no 8086/8088 • Processadores sem modo protegido • Sem proteção, não tem sentido a existência de permissões e limite no segmento • O descritor de segmento resume-se à base • Como os registradores são de 16 bits decidiu-se limitar o início de segmentos apenas alinhados com quot;parágrafosquot; • Segmentação mal implementada • O quot;tamanho máximoquot;do segmento é 64KB • O limite do segmento não é garantido • Na verdade é apenas um esquema para endereçar 1MB utilizando 2 registradores Copyright (c) Walter Fetter Lages – p.21
  • 22. Segmentação no 8086/8088 • Endereço físico=reg. de segmento * 16 + offset • Endereço físico=reg. de segmento « 4 + offset Copyright (c) Walter Fetter Lages – p.22
  • 23. Memória Virtual • Paginação • Falta de página • Page-table • Endereço • Virtual • Físico Copyright (c) Walter Fetter Lages – p.23
  • 24. Tabela de Páginas Copyright (c) Walter Fetter Lages – p.24
  • 25. Hardware de Paginação • Usualmente a tabela de páginas é mantida em memória e não em registradores • Registrador de base da tabela de páginas • Translation look-aside buffer (TLB) • Evita dois acessos a memória • Memória associativa • Páginas também podem ter bits de proteção associados • Bit de presença/ausência Copyright (c) Walter Fetter Lages – p.25
  • 26. Páginas de 4KB no ix86 Copyright (c) Walter Fetter Lages – p.26
  • 27. Páginas de 4MB no ix86 Copyright (c) Walter Fetter Lages – p.27
  • 28. Segmentação e Paginação no ix86 Copyright (c) Walter Fetter Lages – p.28
  • 29. Proteção de Memória no ix86 Copyright (c) Walter Fetter Lages – p.29
  • 30. Proteção de I/O no ix86 • Existe um nível de privilégio de I/O • Apenas processos com nível de privilégio menor ou igual podem executar instruções de I/O • Associado a cada processo pode existir um bitmap de permissões de I/O • Apenas as portas habilitadas podem ser acessadas • Hardware Virtual • Virtualização de dispositivos Copyright (c) Walter Fetter Lages – p.30
  • 31. Verificação de Privilégios Copyright (c) Walter Fetter Lages – p.31
  • 32. I/O Permission Bit Map Copyright (c) Walter Fetter Lages – p.32