750 likes | 934 Views
Gerência de Memória Sistemas Operacionais I. Módulo 8. GERÊNCIA DE MEMÓRIA. Premissa A memória real é o recurso de armazenamento de acesso direto Processos devem ser carregados para a memória real No todo Em parte O S.O. deve permanecer na memória real e ocupar o menor espaço possível.
E N D
GERÊNCIA DE MEMÓRIA • Premissa • A memória real é o recurso de armazenamento de acesso direto • Processos devem ser carregados para a memória real • No todo • Em parte • O S.O. deve permanecer na memória real e ocupar o menor espaço possível Sistemas Operacionais I - Versão Beta 3
GERÊNCIA DE MEMÓRIA • Premissa • Endereçamento de instruções e dados podem ser constituído de três formas • Tempo de compilação (Compile Time) • Se a(s) locação(ções) de memória são conhecidas, então o código pode possuir endereçamento absoluto • É necessários recompilar o programa se a(s) locação(ções) forem alteradas Sistemas Operacionais I - Versão Beta 3
GERÊNCIA DE MEMÓRIA • Premissa • Endereçamento de instruções e dados podem ser constituído de três formas • Tempo de carga (Load Time) • Se a(s) locação(ções) de memória não são conhecidas, é necessário gerar código relocável • Tempo de execução (Execution Time) • Endereçamento é constituído dinamicamente, durante a execução, se o processo for movido de uma área de memória para outra • É necessário suporte de hardware para mapear os endereços Sistemas Operacionais I - Versão Beta 3
GERÊNCIA DE MEMÓRIA • Problema • É necessário otimizar o uso da área de memória real • Solução-Problema • Subdividir a memória em unidades de alocação • De que forma? • Quais os requisitos para a gerência? Sistemas Operacionais I - Versão Beta 3
GERÊNCIA DE MEMÓRIA • Requisitos • O S.O. precisa: • Alocar espaços na memória para programas • De forma explícita ou implícita • De-alocar espaços quando necessário • Efetuar a manutenção das tabelas • Ex: mapear memória virtual na memória física • Decidir quanto de memória alocar a cada processo e quando um processo será removido da memória Sistemas Operacionais I - Versão Beta 3
GERÊNCIA DE MEMÓRIA • Requisitos • Relocação • Definição: ajuste no programa executável para que execute em um conjunto pré estabelecido de endereços de memória. • O processo não tem locação de memória pré-fixada • O processo pode ser retirado (swapped out) da memória e retornar em qualquer outra locação Sistemas Operacionais I - Versão Beta 3
GERÊNCIA DE MEMÓRIA • Requisitos • Relocação • Necessidade • O endereçamento não pode ser absoluto • As referências precisam ser transformadas em endereços reais Sistemas Operacionais I - Versão Beta 3
GERÊNCIA DE MEMÓRIA • Requisitos • Relocação • Formas básicas de relocação • Em tempo de execução (Hardware) • Em tempo de compilação • No boot do sistema esse método ainda é utilizado Sistemas Operacionais I - Versão Beta 3
Cabeçalho Text Data(já incializados) Dicionário de Relocação GERÊNCIA DE MEMÓRIA • Requisitos • Relocação • Formas básicas de relocação • Em tempo de carga, pelo sistema operacional. • É lento. O programa não pode mudar de área • Estrutura do programa: Sistemas Operacionais I - Versão Beta 3
GERÊNCIA DE MEMÓRIA • Requisitos • Proteção • Processos não podem acessar áreas de outros processos sem prévia autorização • Problema • Complexidade da verificação dos acessos • Relocação e endereços dinâmicos • Acessos devem ser verificados a tempo de execução pelo hardware Sistemas Operacionais I - Versão Beta 3
GERÊNCIA DE MEMÓRIA • Requisitos • Compartilhamento • Permitir que vários processos façam acesso à mesma área de memória • Compartilhar código executável • Compartilhar área de dados • Controlar acesso a áreas de memória sem comprometer a proteção do S.O. Sistemas Operacionais I - Versão Beta 3
GERÊNCIA DE MEMÓRIA • Requisitos • Estrutura lógica • Organização da memória em lista linear de endereços • Programas são organizados em módulos • Vantagens da implementação integrada • Compilação independente dos módulos • Proteção apropriada dos módulos • Compartilhamento de módulos entre os processos Sistemas Operacionais I - Versão Beta 3
GERÊNCIA DE MEMÓRIA • Requisitos • Estrutura física • Problema • A memória real pode ser insuficiente para um processo Sistemas Operacionais I - Versão Beta 3
GERÊNCIA DE MEMÓRIA • Requisitos • Estrutura física • Solução • Overlaying • Dividir em módulos que não são carregados simultaneamente • Uma rotina é responsável pela carga dos módulos • Solução complexa • O programador pode não ter conhecimento da memória disponível Sistemas Operacionais I - Versão Beta 3
RELOCAÇÃO • Quando um processo é carregado para a memória as referências a memória real (endereço absoluto) precisam ser ajustadas • Motivo • Processos podem ocupar diferentes áreas de memória • Partições diferentes • Causas • SWAPING • Compactação Sistemas Operacionais I - Versão Beta 3
ENDEREÇAMENTO • Lógico/Virtual • Referência a uma posição de memória independe da localização REAL na memória • Gerado pela CPU • Também conhecido como endereço virtual • Tradução endereço-lógico endereço-físico • Físico • Endereço REAL na memória Sistemas Operacionais I - Versão Beta 3
ENDEREÇAMENTO • Relativo • O endereço é expresso em relação a algum ponto base • Base+Deslocamento Sistemas Operacionais I - Versão Beta 3
ENDEREÇAMENTO • Endereçamento lógico e físico • são idênticos no endereçamento constituído em tempo de compilação e em tempo de carga. • São diferentes no caso do endereçamento constituído em tempo de execução Sistemas Operacionais I - Versão Beta 3
ENDEREÇAMENTO • Memory-Management Unit (MMU) • Dispositivo de Hardware que mapeia endereços virtuais em físicos • No esquema MMU, o conteúdo no registrados de relocação é adicionado a qualquer endereço gerado pelo processo • O processo utiliza endereço lógico. NUNCA usa endereço físico Sistemas Operacionais I - Versão Beta 3
ENDEREÇAMENTO • Suporte de Hardware Endereço relativo Registradorde Base PCB TEXT Registradorde Limite Somador DS Comparador SS End. Absoluto S.O. Int Sistemas Operacionais I - Versão Beta 3
ENDEREÇAMENTO • Registradores utilizados • Registrador de base (Base register) • Endereço inicial do processo • Registrador de limite (Bounds register) • Endereço final do processo • Estes valores são ajustados quando o processo é carregado ou swapped in Sistemas Operacionais I - Versão Beta 3
ENDEREÇAMENTO • Registradores utilizados • O valor no registrador de base é somado a um endereço relativo para produzir um endereço absoluto • O resultado é comparado com o registrador de limite • Se não estiver contido no limite permitido, uma interrupção é gerada Sistemas Operacionais I - Versão Beta 3
SWAPPING • Um processo pode ser retirado temporariamente da memória e retornar após algum tempo • Backing store • Área em disco, veloz, grande o suficiente para acomodar as cópias de imagens da memória (de todos ou parte dos usuários) • É necessário prover acesso direto a essas imagens Sistemas Operacionais I - Versão Beta 3
SWAPPING • Roll out, roll in • Variante da técnica swapping utilizada por algoritmos de escalonamento priority-based • Processos com baixa prioridade são swapped-out para dar lugar a processos com alta prioridade • O tempo dispensado • É gasto com a transferência de dados • É proporcional a quantidade de memória a ser swapped. Sistemas Operacionais I - Versão Beta 3
S.O. P1 P2 EspaçoUsuário Backing Store M.R. SWAPPING Sistemas Operacionais I - Versão Beta 3
ALOCAÇÃO DE MEMÓRIA • Alocação contígua simples • Comum em S.O. monoprogramáveis • A memória é dividida em duas partes • S.O. • Processo usuário Memória Real Processo Usuário Sistema Operacional Sistemas Operacionais I - Versão Beta 3
ALOCAÇÃO DE MEMÓRIA • Alocação contígua simples • O programador é responsável por evitar violar a região onde reside o S.O. • Algumas implementações de S.O. delimitam o espaço máximo de endereçamento do processo usuário • Uso de overlay Sistemas Operacionais I - Versão Beta 3
ALOCAÇÃO DE MEMÓRIA • Alocação particionada estática (partição fixa) • Motivação: multiprogramação • Divisão da memória em pedaços • Tamanhos • Iguais • diferentes • Parâmetro de sistema • Quando gerado • Quando inicializado Sistemas Operacionais I - Versão Beta 3
ALOCAÇÃO DE MEMÓRIA • Alocação particionada estática (partição fixa) • Cada partição comporta processos com requisitos de memória menor ou igual a partição • Uso ineficiente da memória, causando desperdício de memória na partição (Fragmentação Interna) • Se todas as partições estiverem alocadas o S.O. pode utilizar o swapping para carregar mais processos • Se o processo não couber na partição pode-se utilizar a técnica de overlay (ovl) Sistemas Operacionais I - Versão Beta 3
ALOCAÇÃO DE MEMÓRIA • Alocação particionada estática (partição fixa) • Endereçamento absoluto • Processo só pode ser carregado na mesma região de memória • Endereçamento virtual • Processo pode ser carregado em qualquer região de memória • Registrador de relocação Sistemas Operacionais I - Versão Beta 3
ALOCAÇÃO DE MEMÓRIA • Alocação particionada estática (partição fixa) • Tamanhos iguais Memória Real Partição 1 Partição 2 Partição 3 P1 P2 S.O. Fragmento Pn = Fragmento + Partição Processo não pode ser executado Sistemas Operacionais I - Versão Beta 3
ALOCAÇÃO DE MEMÓRIA • Alocação particionada estática (partição fixa) • Tamanhos iguais Memória Real Partição 1 Partição 2 Partição 3 P1 P2 S.O. Carga do Principal Fragmento Pn(Principal) Pn(OVL) Carga do Ovl Sistemas Operacionais I - Versão Beta 3
Partição 2 Partição 3 Partição 1 P1 P2 P3 S.O. Fragmento ALOCAÇÃO DE MEMÓRIA • Alocação particionada estática (partição fixa) • Tamanhos diferentes • Processo é alocado na menor partição que o comporte • Minimiza o problema de fragmentação interna mas não o elimina Sistemas Operacionais I - Versão Beta 3
ALOCAÇÃO DE MEMÓRIA • Alocação particionada estática (partição fixa) • Tamanhos diferentes • Uma fila de acesso por partição • Otimiza o uso do espaço na partição • Uma fila para o sistema como um todo • Otimiza o uso das partições Sistemas Operacionais I - Versão Beta 3
ALOCAÇÃO DE MEMÓRIA • Alocação particionada estática (partição fixa) • Tamanhos diferentes • Uma fila por partição S.O. ProcessosNovos Sistemas Operacionais I - Versão Beta 3
S.O ProcessosNovos ALOCAÇÃO DE MEMÓRIA • Alocação particionada estática (partição fixa) • Tamanhos diferentes • Uma fila para o sistema Sistemas Operacionais I - Versão Beta 3
ALOCAÇÃO DE MEMÓRIA • Alocação com partições dinâmicas • Partições no tamanho que o processo necessita • As partições são criadas por demanda • O número e o tamanho de cada partição varia no tempo • Problema • Espaços não alocáveis são criados Sistemas Operacionais I - Versão Beta 3
ALOCAÇÃO DE MEMÓRIA • Alocação com partições dinâmicas Memória Real S.O. P1 P2 P3 P4 Livre No Boot – t0 t1 t2 t3 t4 Pn - Não pode “entrar” tn Sistemas Operacionais I - Versão Beta 3
ALOCAÇÃO DE MEMÓRIA • Alocação com partições dinâmicas Memória Real S.O. P1 P2 P3 Livre P5 Livre No Boot – t0 t1 t2 t3 t4 Terminado após P5 “entrar” t5 Pn - Não pode “entrar” tn Sistemas Operacionais I - Versão Beta 3
ALOCAÇÃO DE MEMÓRIA • Alocação com partições dinâmicas • Problema • A memória pode ficar cheia de buracos “pequenos” e sua soma ser “muito grande” • Solução • Relocação dos processos (compactação) • Alto custo • Solução viável em hardware Sistemas Operacionais I - Versão Beta 3
ALOCAÇÃO DE MEMÓRIA • Alocação com partições dinâmicas • Estratégias para escolha das partições • Algoritmos de colocação • O S.O. deve fazer a escolha do bloco de memória onde o processo será alojado Sistemas Operacionais I - Versão Beta 3
ALOCAÇÃO DE MEMÓRIA • Alocação com partições dinâmicas • Algoritmos de colocação • BEST-FIT • Escolhe a partição em que o processo deixa o menor espaço sem utilização • Há uma lista de áreas livres ordenada por tamanho • Desvantagem • Muitas pequenas áreas não contíguas aumentando o problema da fragmentação • Necessidade de compactação mais freqüente • Baixo desempenho (a princípio) Sistemas Operacionais I - Versão Beta 3
ALOCAÇÃO DE MEMÓRIA • Alocação com partições dinâmicas • Algoritmos de colocação • WORST-FIT • Escolhe a partição em que o processo deixa o maior espaço sem utilização • Há uma lista de áreas livres ordenada reversamente por tamanho • Apesar de utilizar as partições maiores, os espaços livres maiores permitem o aproveitamento da memória por um maior número de programas Sistemas Operacionais I - Versão Beta 3
ALOCAÇÃO DE MEMÓRIA • Alocação com partições dinâmicas • Algoritmos de colocação • FIRST-FIT • Escolhe o primeiro bloco livre com tamanho suficiente para carregar o processo • Há uma lista de áreas livres ordenada por endereços • É rápida, consumindo menos recursos do sistema • Desvantagem • Muitos blocos pequenos no início da memória Sistemas Operacionais I - Versão Beta 3
ALOCAÇÃO DE MEMÓRIA • Alocação com partições dinâmicas • Algoritmos de colocação • NEXT-FIT • Escolhe o primeiro bloco livre a partir da última alocação que comporte o processo • Há uma lista de áreas livres ordenada por endereço • Desfaz rapidamente o grande bloco livre no final da memória • Compactação é necessária para reconstituir um grande bloco ao fim da memória Sistemas Operacionais I - Versão Beta 3
19MB 100MB 16MB 110MB 90MB 22MB 1MB 52MB Último bloco alocado ALOCAÇÃO DE MEMÓRIA • Alocação com partições dinâmicas • Algoritmos de colocação • Exemplo Sistemas Operacionais I - Versão Beta 3
8MB 14MB 44MB 11MB 19MB 100MB 16MB 110MB 90MB 22MB 1MB 52MB BF FF NF Alocação de 8MB WF ALOCAÇÃO DE MEMÓRIA • Alocação com partições dinâmicas • Algoritmos de colocação • Exemplo Sistemas Operacionais I - Versão Beta 3
19MB 100MB 16MB 110MB 90MB 22MB 1MB 52MB ALOCAÇÃO DE MEMÓRIA • Alocação com partições dinâmicas • Algoritmos de colocação • Exemplo • Suponha a alocação de memória abaixo em uma arquitetura SMP, 8 processadores, com todos os processos RUNNING. Sistemas Operacionais I - Versão Beta 3
19MB 100MB 16MB 110MB 90MB 22MB 1MB 52MB ALOCAÇÃO DE MEMÓRIA • Alocação com partições dinâmicas • Algoritmos de colocação • Exemplo • Suponha pois, a submissão de processos com áreas 16MB, 52MB, 19MB e 22MB, nessa ordem • Qual será o algoritmo de colocação de melhor desempenho? Sistemas Operacionais I - Versão Beta 3