Memória 1
Transcrição
Memória 1
' ' $ $ Sistemas de Operação P. M. - DEE - UC Gestão de Memória Uma parte muito importante dos Sistemas Operativos é aquela que se dedica a reservar blocos de memória para satisfazer os pedidos dos processos, dentro da memória fı́sica limitada. A utilização de recursos, bem como o desempenho do S.O. depende em grande parte do gestor de memória, não só pela reserva efectiva de memória mas também pela sua influência e interacção com o escalonador. A coexistência de vários processos em memória introduz dois requisitos conflituosos: protecção e partilha. & & % % 1 Powered by FreeBSD & LATEX2e $ $ ' ' Sistemas de Operação P. M. - DEE - UC Medidas de Desempenho do G.M. • Memória desperdiçada Fracção da memória da memória fı́sica que não é utilizada devido a um determinado esquema de gestão de memória. Esse desperdı́cio pode ser devido a: Fragmentação interna, fragmentação externa, Tabelas de gestão • Complexidade Temporal (time complexity) Complexidade temporal que leva a atraso na satisfação dos pedidos de reserva/devolução • Sobrecarga nos acessos à memória Medida relativa entre a duração dos acessos à memória com e sem a gestão de memória activa. & & 2 % % Powered by FreeBSD & LATEX2e ' ' $ $ Sistemas de Operação P. M. - DEE - UC Uma definição muito lata de memória desperdiçada pode incluir a quantidade de memória gasta por haver multiplas cópias de um objecto devido a partilha deficiente ou restrita de memória. Ex: 20 utilizadores a utilizar um editor de texto. Se o editor ocupar 500Kb de memória para código e 100k para dados, temos 10Mega sem partilha de código versus 2500Kb com partilha. Os requisitos de minimizar a memória desperdiçada, a complexidade temporal e a sobrecarga nos acessos não são concretizaveis em simultâneo. Por isso é necessário definir prioridades durante o projecto de acordo com os objectivos do S.O.. Por outro lado o desenho de um S.O. requer a compreensão dos detalhes do hardware a que se destina de forma a escolher os mecanismos de gestão de memória adequados, ou a escolha do hardware adequado aos mecanismos pretendidos. & & 3 % % Powered by FreeBSD & LATEX2e $ $ ' ' Sistemas de Operação P. M. - DEE - UC Monitor - Processo único Sistema Operativo Ar ea p tra ara p ns itó roce rio ss os s (monitor) CP/M ou MS-dos & & 4 % % Powered by FreeBSD & LATEX2e ' ' $ $ Sistemas de Operação P. M. - DEE - UC Reserva Contı́gua - Partições Estáticas Uma das formas de suportar a multiprogramação é dividir a memória fı́sica em partições, atribuido cada uma a um processo. Dependendo de quando e como as partições são criadas, o particionamento da memória pode ser estático ou dinâmico. O Particionamento estático implica que a divisão da memória seja feito antes da execução dos programas. O número de partições e o seu tamanho é definido normalmente na geração do sistema. Isto é feito tomando em conta o tamanho da memória fı́sica, o grau de multiprogramação desejado e o tamanho tı́pico dos programas executados. & & % % 5 Powered by FreeBSD & LATEX2e ' ' $ $ Sistemas de Operação P. M. - DEE - UC 0 Base Sistema Operativo 100K Tamanho Estado PARTIÇAO Nº 0 0K 100K RESERVADA 1 100K 300K LIVRE P1 2 400K 100K RESERVADA P2 3 500K 250K RESERVADA 4 750K 150K RESERVADA 5 900K 100K LIVRE 400K 500K 750K P3 900K 1000K PDT & & 6 % % Powered by FreeBSD & LATEX2e ' ' $ $ Sistemas de Operação P. M. - DEE - UC A estratégia de reserva de memória em sistemas com partições fixas pode ser: • First Fit • Best Fit Os pedidos para reservar partições podem surgir de: • criação de novos processos • reactivação de processos swapped-out Estes pedidos podem não ser satisfeitos por: 1. não haver partições suficientemente grandes para albergar o processo 2. todas as partições estarem ocupadas & & 7 ' ' % % Powered by FreeBSD & LATEX2e $ $ Sistemas de Operação P. M. - DEE - UC No caso de todas as partições estarem ocupadas pode-se definir que: 1. a carga do processo é adiada 2. é forçada a libertação de uma partição (swapped-out) Note-se que a primeira opção pode violar a ordem de activação definida pelo escalonador. Ambas as opções podem também ser aplicadas ao caso em de o processo não caber nas partições disponı́veis e aquela(s) que têm tamanho suficiente para o albergar estão ocupadas. & & 8 % % Powered by FreeBSD & LATEX2e ' ' $ $ Sistemas de Operação P. M. - DEE - UC Swapping O swapper é um processo do sistema cujas responsabilidades incluem: • selecção de processos a passar de memória principal para memória secundária (swap-out) • selecção de processos a passar de memória secundária para memória principal (swap-in) • reserva e gestão de espaço de swap O swapper executa grande parte das funções de um “medium term scheduler”. Embora o mecanismos de “swapping”, que se seguem após a escolha de um processo “vı́tima”, sejam simples, a sua implementação requer suporte do S.O. ao nı́vel do Sistema de Ficheiros e da Recolocação de processos em memória & & % % 9 Powered by FreeBSD & LATEX2e $ $ ' ' Sistemas de Operação P. M. - DEE - UC Existindo um conjunto de partições suficientemente grandes para albergar determinado processo e estando estas ocupadas,o swapper deverá escolher uma “vı́tima”. Os potenciais candidatos são: • processos de baixa prioridade • processos que aguardam eventos lentos Nota: O swapper deverá ser evitar a ocorrência de “thrashing”. & & 10 % % Powered by FreeBSD & LATEX2e ' ' $ $ Sistemas de Operação P. M. - DEE - UC Dado que um processo, durante a execução, modifica os seus dados (e em alguns casos o código) e por isso tem uma imagem diferente da inicial. Por isso o swapper tem de guardar todo o espaço do processo num ficheiro diferente da imagem inicial (swap file). Em relação aos ficheiros de swap podemos ter: 1. um para todo o sistema • Acesso rápido a um único ficheiro • O tamanho prédefinido limita o número de processos • O espaço fica permanentemente ocupado mesmo que não seja necessário 2. um por processo • não tem as desvantagens do caso anterior, mas... • necessita de mais espaço em disco • acesso mais lento • endereçamento mais complexo & & % % 11 ' ' Powered by FreeBSD & LATEX2e $ $ Sistemas de Operação P. M. - DEE - UC Exemplo: swapout de um processo com 256K num disco com um tempo de acesso de 10ms e taxa de transferência de 5Mb/s, demora = 10ms + 50ms = 60ms (1) O carregamento de um processo de igual tamanho demora outro tanto, sendo o resultado 120ms “de idling”. Não aceitável para processos crı́ticos Solução: Processos “non-swappable”, o que também pode levar a abusos. & & 12 % % Powered by FreeBSD & LATEX2e $ $ ' ' Sistemas de Operação P. M. - DEE - UC Recolocação Recolocação Estática: Loader atribui os endereços definitivos. Recolocação Dinâmica: MEM Base Register 10000 10000 11000 CPU 1000 + 11000 A proteção também se pode conseguir de forma simples adicionando um simples teste. & & % % 13 Powered by FreeBSD & LATEX2e ' ' $ $ Sistemas de Operação P. M. - DEE - UC MEM Base Register 10000 10000 11000 CPU 1000 <= LIMITE? SIM + 11000 NAO Violaçao de Protecçao Neste caso a recolocação é completamente invisı́vel para o programador, havendo clara distinção entre endereços virtuais e fı́sicos. & & 14 % % Powered by FreeBSD & LATEX2e ' ' $ $ Sistemas de Operação P. M. - DEE - UC Protecção A integridade de um sistema multiprogramado depende em muito da capacidade que este apresenta em isolar espaços de endereçamento diferentes. A protecção não serve apenas para prevenir o acesso dos processos dos utilizadores ao sistema operativo, mas também os acessos erróneos ou maliciosos entre processos dos utilizadores. Não existindo protecção de memória podemos encontrar • corrupção de zonas de memória de outros programas • “crashes” frequentes ou efeitos laterais, sendo difı́cil a detecção da origem destes. Os sistemas operativos multi-utilizador só deverão ser implementados em máquinas cujo hardware suporte a protecção de memória. & & % % 15 Powered by FreeBSD & LATEX2e $ $ ' ' Sistemas de Operação P. M. - DEE - UC Que tipos de protecção? • Registos de Base e Limite? • Direitos de acesso guardados na própria memória? – bit per word - insuficiente – more bits per word - dispendioso Alternativas? Ex. O IBM 360 usa 4 bits (keys) para cada 2K de memória. O S.O. tem chave 0, que lhe permite o acesso a toda a memória. Para os restantes processos, quando estes são carregados para memória principal, é colocado o ID do processo nesses bits. Desvantagem: 16 processos no máximo, partições obrigatóriamente multiplas de 2k. & & 16 % % Powered by FreeBSD & LATEX2e ' ' $ $ Sistemas de Operação P. M. - DEE - UC Partilha (Quase) Tão importante como a protecção de memória é a partilha da mesma, que permite que processos usem zonas comuns de dados e/ou código. É na capacidade de partilha de memória que surgem, normalmente, as primeiras grantes diferenças entre os sistemas operativos. 3 abordagens básicas 1. confiar os objectos partilhados ao sistema operativo 2. manter várias cópias dos objectos partilhados - uma por partição 3. usar partições de memória partilhadas. & & 17 ' ' % % Powered by FreeBSD & LATEX2e $ $ Sistemas de Operação P. M. - DEE - UC Notas finais As partições estáticas... • são uma forma simples de suportar multiprogramação • podem ser implementado com hardware simples • adequadas a ambientes estáticos de carga previsı́vel e caracterı́sticas conhecidas. • Ex. Aplicação: Controlo de processos • Ex. Não Aplicação: Alumni & & 18 % % Powered by FreeBSD & LATEX2e ' ' $ $ Sistemas de Operação P. M. - DEE - UC Partições Dinâmicas Utilizam como base os conceitos definidos para as partições estáticas mas... • O número e o tamanho das partições não é definido a priori, depende das necessidades de cada conjunto de processos activos. • Os processos podem requer sempre mais memória (até esgotar a memória disponı́vel, ou atingir o numero de entradas na PDT, etc.) Aparentemente, os problemas relacionados com a fragmentação interna ou outros introduzidos pela utilização de partições estáticas deveriam estar resolvidos. & & % % 19 Powered by FreeBSD & LATEX2e $ $ ' ' Sistemas de Operação P. M. - DEE - UC Funcionamento • No carregamento de um processo, o SO procura uma zona de memória suficientemente grande para o albergar, criando uma partição. • Quando um processo termina ou é passado para memória secundária (swap out), a partição correspondente é libertada. A memória por esta ocupada passa a pertencer ao conjunto dos blocos livres. • O SO gere tanto as partições (memória ocupada) como a memória livre. • Uma partição é definida pela base e tamanho • É importante saber qual (quais) as partições pertencentes a cada processo • A natureza dinâmica dos zonas livres sugere a utilização de qq tipo de lista ligada. É comum construir estas listas ligadas na própria memória livre, poupando memória. & & 20 % % Powered by FreeBSD & LATEX2e ' ' $ $ Sistemas de Operação P. M. - DEE - UC Tabela de Descrição de Partições (PDT) Inicio 0 100K Sistema Operativo 900K 300K 400K P. Num. Base Tamanho Estado 0 0K 100K Reservada 1 - - - 2 400K 100K Reservada 500K 750K 900K 100K 1000K 3 500K 250K Reservada 4 750K 150K Reservada 5 - - - 6 - - - 7 - - - & & Lista de Blocos Livres % % 21 Powered by FreeBSD & LATEX2e ' ' $ $ Sistemas de Operação P. M. - DEE - UC Reserva de uma Partição Inicio 0 100K Sistema Operativo 900K 180K 400K P. Num. Base Tamanho Estado 0 0K 100K Reservada 1 100K 120K Reservada 2 400K 100K Reservada 500K 750K 900K 1000K 3 500K 250K Reservada 4 750K 150K Reservada 5 - - - 6 - - - 7 - - - & & 22 100K Lista de Blocos Livres % % Powered by FreeBSD & LATEX2e ' ' $ $ Sistemas de Operação P. M. - DEE - UC Criação de uma partição de tamanho P SIZE 1. Procura na lista de blocos livres F, uma entrada com F SIZE ≥ P SIZE , se não encontrar termina com indicação do erro. = F SIZE − P SIZE . Se Dif ≥ c, então reserva toda a partição, fazendo P SIZE = F SIZE e P BASE = F BASE . 2. Calcula Dif Se Dif > c faz-se P BASE = F BASE F BASE = P BASE + P SIZE f SIZE = F SIZE − P SIZE 3. Procura uma entrada livre na PDT 4. Guarda o numero da entrada na PDT no PCB & & % % 23 Powered by FreeBSD & LATEX2e $ $ ' ' Sistemas de Operação P. M. - DEE - UC Algoritmos de selecção de zonas livres para reserva de partições • First Fit • Next Fit • Best Fit • Worst Fit Em média o método “First Fit” pesquisa metade da lista, ao passo que “Best Fit” pesquisa a lista toda. “Next Fit” procura distribuir as pesquisas (...) por toda a lista “Worst Fit” tenta reduzir a fragmentação :-( & & 24 % % Powered by FreeBSD & LATEX2e ' ' $ $ Sistemas de Operação P. M. - DEE - UC Devolução de partições Quando um processo P, termina ou é passado para memória secundária... • Usando o PCB de P, localiza-se a entrada na PDT (P DT [P CB[P ]] ) • Se “Swapping”, copia a imagem do processo para swapfile • P CB[P ] → P artition = N U LL • Junta a partição à lista de blocos livres, e funde-a com partições existentes se possı́vel. • Invalida entrada na PDT Quando se utiliza “First Fit” ou “Best Fit” mantém-se a lista ordenada por endereços de forma a facilitar a recombinação. & & % % 25 ' ' Powered by FreeBSD & LATEX2e $ $ Sistemas de Operação P. M. - DEE - UC Buddy System • Blocos de tamanho igual a potências de 2. • Os pedidos de áreas são arredondados para o valor 2n imediatamente acima. • Reserva de bloco 2k . Há um bloco disponı́vel desse tamanho? Sim: Reserva. Não: Bloco 2k+1 dividido em 2 (buddies). Propriedade importante: O endereço base de dois buddies varia no bit correspondente ao tamanho destes. Ex: 1 Mb de memória Pedido de 192K é arredondado para 256K 1M → 2 × 512K → 512K + 2 × 256K Endereços : 00000H — 80000H (buddies 512K), 80000H — A00000H (256K) & & 26 % % Powered by FreeBSD & LATEX2e ' ' $ $ Sistemas de Operação P. M. - DEE - UC Compactação Objectivo: Reduzir a fragmentação externa, devido a tempos de vida diferentes dos varios objectos. S.O S.O S.O Pi Pi Pi Pj Pj Pk Pj Pk Pk Movimentaçao Selectiva & & Movimentaçao Global % % 27 Powered by FreeBSD & LATEX2e $ $ ' ' Sistemas de Operação P. M. - DEE - UC Protecção e Partilha A protecção e partilha de memória com partições dinâmicas é semelhante ao que se passa com partições fixas, permitindo no entanto criar partições sobrepostas. A partilha de código é mais restrictiva que a partilha de dados devido à necessidade de criar código independente da posição em que está colocado (PIC): • Código reentrante • Variaveis na pilha ou registos • Não poderem existir referências absolutas & & 28 % % Powered by FreeBSD & LATEX2e ' ' $ $ Sistemas de Operação P. M. - DEE - UC Rotina Partilhada (PIC) 4000 0 100 Call sub 5500 0 1500 5500 50 Sub jmp $+50 50+50 4000 1550 Sub jmp $+50 1550+50 5600 5500 5600 & & 1550 Call sub 0 5500 % % 29 Powered by FreeBSD & LATEX2e $ $ ' ' Sistemas de Operação P. M. - DEE - UC Segmentação Vefifica-se que a fragmentação externa é menor em sistemas onde o tamanho dos blocos pedidos são em média menores. Dado que o sistema operativo nada pode fazer para reduzir o tamanho dos processos, uma alternativa para reduzir o tamanho médio dos blocos pedidos, é dividindo o espeço de endereçamento em blocos que podem ser colocados em áreas não-contı́guas. A divisão do espaço de endereçamento dos processos em segmentos fornece um método de relocalização dinâmica e simultaneamente formas de protecção e partilha. Os segmentos são definidos durante a criação dos programas, agrupando items relacionados: código, dados, pilha, etc. & & 30 % % Powered by FreeBSD & LATEX2e ' ' $ $ Sistemas de Operação P. M. - DEE - UC Funcionamento Cada segmento é definido (durante a compilação) de forma a começar no endereço virtual 0. Os items são identificados pelo seu deslocamento em relação ao inı́cio do segmento. Os endereços em sistemas segmentados são compostos por duas partes • Nome do segmento (número) • Deslocamento (offset) dentro do segmento & & % % 31 Powered by FreeBSD & LATEX2e ' ' $ $ Sistemas de Operação P. M. - DEE - UC Tradução de Endereços CPU Violação de Protecção Não Endereço Virtual Segmento Offset <= Tamanho Sim + Endereço Fisico SDT BASE TAMANHO 0 1 2 3 & & 32 % % Powered by FreeBSD & LATEX2e ' ' $ $ Sistemas de Operação P. M. - DEE - UC Mecanismos para acelerar o acesso a memória Dado que o desempenho dos sistemas segmentados pode ser gravemente comprometido pelo processo de tradução de endereços, muitos fabricantes introduziram hardware especı́fico para acelerar o processo da tradução de endereços. A utilização de registos para manter os descritores seria uma optima alternativa. Mas,o tamanho das SDTs e a troca de processos proibe o carregamento destas em registos. Comprimisso: Utilizar registos para os descritores de segmentos mais utilizados (Segment Descriptor Caching). & & % % 33 Powered by FreeBSD & LATEX2e $ $ ' ' Sistemas de Operação P. M. - DEE - UC Suporte necessário Se analizarmos os tipos de referência a memória que são feitas durante a execução de um processo verificamos que são feitas devido a • fetch de instruções • dados • pilha Assim, com a ajuda de hardware que permita detectar o tipo de acesso à memória podemos manter em registos os descritores dos segmentos de código, dados e pilha. & & 34 % % Powered by FreeBSD & LATEX2e ' ' $ $ Sistemas de Operação P. M. - DEE - UC Protecção A escolha de um método para implementar a protecção em sistemas segmentados caı́ naturalmente na utilização do par base, limite. É possı́vel proteger zonas do próprio processo: read-only, read-write, write-only. Os bits de protecção são normalmente incluidos no descritores dos segmentos, podendo ser verificados em cada acesso. Partilha A partilha é trivial, bastando para isso criar vários descritores, um por processo, para o mesmo segmento. & & 35 % % Powered by FreeBSD & LATEX2e $ $ ' ' Sistemas de Operação P. M. - DEE - UC Vantagens • Elimina fragmentação interna • Suporta o crescimento dinâmico dos segmentos • Protecção e Partilha simples • Desenvolvimento de programas modulares • Dynamic linking & loading & & 36 % % Powered by FreeBSD & LATEX2e ' ' $ $ Sistemas de Operação P. M. - DEE - UC Desvantagens • Requer compactação devido ao tamanho variavel dos segmentos • Conversão de endereços em 2 passos • Um segmento não pode ser maior que a memória disponı́vel & & 37 % % Powered by FreeBSD & LATEX2e