Baixe o app para aproveitar ainda mais
Prévia do material em texto
S i s t e m a s O p e r a c i o n a i s Gerência de MemGerência de Memóóriaria Prof. Prof. FlFlááviovio LouzadaLouzada de de AraAraúújojo 1 ROTEIRO 1. Introdução 2. Funções básicas 3. Alocação contígua simples 4. Técnica de overlay 5. Alocação Particionada • Alocação Particionada Estática • Alocação Particionada Dinâmica • Estratégias de Alocação de Partição 6. Swapping 7. Exercícios S i s t e m a s O p e r a c i o n a i s 3 Introdução • Memória Principal sempre foi vista como recurso escasso e caro • SO procuram ocupar pouco espaço de memória e, simultaneamente, otimizar a utilização de recursos computacionais • Apesar da redução de preços e aumento da capacidade, gerência de memória é muito importante para o SO S i s t e m a s O p e r a c i o n a i s 4 Introdução • Sistemas monoprogramáveis – Gerência de memória não é complexa • Multiprogramação implica em manter-se vários processos em memória • Memória necessita ser alocada de forma eficiente para permitir o máximo possível de processos e usuáriosS i s t e m a s O p e r a c i o n a i s Gerência de Memória - Funções Básicas • Manter o maior número de processos na memória • Maximizar o compartilhamento da UCP e demais recursos • Swapping • Execução de programas maiores que memória disponível • Proteção • Compartilhamento S i s t e m a s O p e r a c i o n a i s 6 Funções Básicas • Um sistema de memória possui pelo menos dois níveis: – Memória principal: acessada pela CPU – Memória secundária: discos • Programas são armazenados em disco – Meio não volátil, abundante e de baixo custo – Executar um programa se traduz em transferi-lo da memória secundária à memória primária S i s t e m a s O p e r a c i o n a i s Rel. dispositivos de armazenamento maior capacidade de armazenamento maior custo e velocidade de acesso Memória Secundária Memória Cache Memória Principal Registradores S i s t e m a s O p e r a c i o n a i s 8 Funções Básicas • Tempo de acesso à memória secundária é muito maior que o tempo de acesso à memória principal – SO deve reduzir o número de operações de E/S à memória secundária S i s t e m a s O p e r a c i o n a i s 9 Funções Básicas • Em um ambiente multiprogramado, é necessário: – subdividir a memória para acomodar múltiplos processos – mas se poucos processos estão na memória, em boa parte do tempo estarão esperando por E/S => UCP sub-utilizada S i s t e m a s O p e r a c i o n a i s 10 Funções Básicas • Gerência de memória deve manter na memória o maior número de processos – Maximizar o compartilhamento do processador e demais recursos • Mesmo sem espaço na memória principal, o sistema deve permitir que novos processos sejam aceitos e executadosS i s t e m a s O p e r a c i o n a i s 11 Funções Básicas • SO faz a transferência de processos residentes na memória principal para a memória secundária – Mecanismos conhecido como swapping • Gerência de memória também deve permitir a execução de programas maiores que a memória física disponível – Técnicas de overlay e memória virtual S i s t e m a s O p e r a c i o n a i s 12 Funções Básicas • SO deve proteger as áreas de memória ocupadas por cada processo – Além da área ocupada pelo sistema – Se um processo tentar realizar um acesso indevido à memória, o sistema deve impedi-lo • Mecanismos de compartilhamento devem ser oferecidos para que os processos possam trocar dadosS i s t e m a s O p e r a c i o n a i s Funções Básicas • Manter o maior número de processos na memória • Maximizar o compartilhamento da UCP e demais recursos • Swapping • Execução de programas maiores que memória disponível • Proteção • Compartilhamento S i s t e m a s O p e r a c i o n a i s Mecanismos básicos de gerência de memória • Um programa para ser executado deve estar na memória (processo); – Onde deve ser carregado? (Problema de alocação de memória) • A alocação de memória depende de: – Código absoluto versus código relocável – Necessidade de espaço contínuo ou não • Necessidade de gerenciamento da memória – Determinação de áreas livres e ocupadas – Racionalizar a ocupação da memória S i s t e m a s O p e r a c i o n a i s 15 Processamento de um programa S i s t e m a s O p e r a c i o n a i s 16 Transformação de programa em processo S i s t e m a s O p e r a c i o n a i s Loader • Carregar na memória principal um programa para ser executado • Loader absoluto • Loader relocável S i s t e m a s O p e r a c i o n a i s Mecanismos básicos de gerência de memória S i s t e m a s O p e r a c i o n a i s Até estudarmos memória virtual, vamos supor que para um programa ser executado ele necessita estar carregado completamente em memória 19 Alocação Contígua Simples • Foi implementada nos primeiros SO – Ainda está presente em alguns sistemas monoprogramáveis • Memória principal é dividida em duas áreas: – Sistema Operacional – Programas do usuário • Preocupação do programador é não ultrapassar o espaço disponível S i s t e m a s O p e r a c i o n a i s Alocação Contígua Simples Memória Principal Sistema Operacional Área para programaS i s t e m a s O p e r a c i o n a i s 21 Alocação Contígua Simples • Usuário tem controle sobre toda a memória principal – Acessa qualquer posição de memória, inclusive do SO • Alguns sistemas implementam proteção a área do SO através de um registrador – Quando um programa faz referência à memória, o SO verifica se está dentro do limite permitidoS i s t e m a s O p e r a c i o n a i s Alocação Contígua Simples • Proteção Memória Principal RegistradorSistema Operacional Área para programa S i s t e m a s O p e r a c i o n a i s 23 Alocação Contígua Simples • Fácil implementação e de código reduzido • Não permite a utilização eficiente dos recursos computacionais – Apenas um usuário pode dispor desses recursos • Caso o programa do usuário não a preencha totalmente, existirá um espaço livre sem utilização S i s t e m a s O p e r a c i o n a i s Alocação Contígua Simples • Subutilização da memória Memória Principal Sistema Operacional Programa do usuário Área livre S i s t e m a s O p e r a c i o n a i s 25 Técnica de Overlay • Na alocação contígua simples todos os programas estão limitados ao tamanho de memória disponível para o usuário • Solução: técnica de Overlay – Dividir o programa em módulos – Executar os módulos de maneira independente utilizando a mesma área de memória S i s t e m a s O p e r a c i o n a i s 26 Técnica de Overlay • Um programa possui 3 módulos – Principal – Cadastramento (independente) – Impressão (independente) • Independência - quando um módulo estiver em memória o outro não necessita estar presente • Módulo principal é comum aos 2 módulos - deve sempreestar em memória S i s t e m a s O p e r a c i o n a i s 27 Técnica de Overlay • A definição das áreas de overlay é função do programador • O tamanho da área de overlay é estabelecido a partir do módulo que tiver o maior tamanho • Permite ao programador expandir os limites da memória principal – Pode trazer implicações na manutenção e desempenho • Transferência excessiva dos módulos S i s t e m a s O p e r a c i o n a i s A r q u i t e t u r a d e S i s t e m a s O p e r a c i o n a i s – M a c h a d o / M a i a Técnica de Overlay Memória Principal Cadastramento Impressão Sistema Operacional2 Kb 3 Kb 4 Kb 4 Kb 2 Kb 2 Kb 1 Kb Módulo principal Área de overlay Área livre Área não utilizada S i s t e m a s O p e r a c i o n a i s 29 Alocação Particionada Estática • A memória era dividida em pedaços de tamanho fixo - partições – Utilizada nos primeiros sistemas multiprogramáveis • Tamanho das partições era definido em função dos programas que executavam no ambiente – Tamanho era estabelecido na fase de inicialização do sistema S i s t e m a s O p e r a c i o n a i s 30 Alocação Particionada Estática • Se fosse necessário a alteração do tamanho de uma partição, o sistema deveria ser desativado e reinicializado com uma nova configuração • Tipo de gerência de memória conhecido como alocação particionada estática ou fixa S i s t e m a s O p e r a c i o n a i s A r q u i t e t u r a d e S i s t e m a s O p e r a c i o n a i s – M a c h a d o / M a i a Alocação Particionada Estática Memória Principal Sistema Operacional 2 Kb 5 Kb 8 Kb Partição 1Partição Tabela de partições Tamanho 1 2 Kb 2 5 Kb 3 8 Kb Partição 2 Partição 3Programas a serem executados: AE 3 Kb D 6 Kb C 1 Kb B 4 Kb 2 Kb S i s t e m a s O p e r a c i o n a i s 32 Alocação Particionada Estática • Programas só podiam ser carregados e executados em apenas uma partição específica – Mesmo que outras estivessem disponíveis • Limitação se devia aos compiladores e montadores – Geravam apenas código absolutoS i s t e m a s O p e r a c i o n a i s 33 Alocação Particionada Estática • Código absoluto - todas as referências a endereços do programa são posições físicas na memória principal – O programa só poderia ser carregado a partir do endereço de memória especificado no seu próprio código • Também conhecida como alocação particionada estática absoluta S i s t e m a s O p e r a c i o n a i s Alocação Particionada Estática Absoluta Memória Principal Sistema Operacional 2 Kb 5 Kb 8 Kb Partição 1 Partição 2 Partição 3 A B D C E 3 Kb 6 Kb 1 Kb 4 Kb 2 Kb S i s t e m a s O p e r a c i o n a i s 35 Alocação Particionada Estática • Evolução dos compiladores, montadores, linkers e loaders – Código gerado deixou de ser absoluto e passa a ser relocável • Código relocável - todas as referências a endereços do programa são relativas ao início do código, e não a endereços físicos de memóriaS i s t e m a s O p e r a c i o n a i s 36 Alocação Particionada Estática • Os programas puderam ser executados a partir de qualquer partição • Quando o programa é carregado, o loader calcula todos os endereços a partir da posição inicial onde o programa foi alocado • Gerência denominada alocação particionada estática relocávelS i s t e m a s O p e r a c i o n a i s Alocação Particionada Estática Relocável Memória Principal Sistema Operacional 2 Kb 5 Kb 8 Kb Programa C Programa A Programa B ED 6 Kb 3 Kb S i s t e m a s O p e r a c i o n a i s 38 Alocação Particionada Estática • Para manter o controle das partições alocadas, a gerência de memória mantém uma tabela com o endereço inicial de cada partição, seu tamanho e se está em uso • Para um programa ser carregado o sistema percorre a tabela para localizar uma partição livre onde o programa possa ser alocadoS i s t e m a s O p e r a c i o n a i s Alocação Particionada Estática • Tabela de Alocação de Partições Memória Principal Sistema Operacional 1 2 3 Programa C Área livre Programa B Partição Tamanho Livre 1 2 Kb Não 2 5 Kb Sim 3 8 Kb Não S i s t e m a s O p e r a c i o n a i s 40 Alocação Particionada Estática • A proteção baseia-se em 2 registradores que indicam os limites superior e inferior da partição onde o programa está sendo executado • Se o programa tentar acessar uma posição fora dos limites, é interrompido e uma mensagem de violação de acesso é gerada pelo SOS i s t e m a s O p e r a c i o n a i s Alocação Particionada Estática • Proteção Memória Principal Sistema Operacional Endereço inicial Endereço final S i s t e m a s O p e r a c i o n a i s 42 Alocação Particionada Estática • Os programas, normalmente, não preenchem totalmente as partições onde são carregados – Este tipo de problema, decorrente da alocação fixa, é conhecido como fragmentação interna – Exemplo de SO: • OS/MFT (Multiprogramming with Fixed Number of Task) da IBMS i s t e m a s O p e r a c i o n a i s 43 Desvantagem de partições fixas S i s t e m a s O p e r a c i o n a i s Alocação Particionada Estática • Fragmentação Interna Memória Principal Sistema Operacional 1 Kb 3 Kb 5 Kb Programa C Programa A Programa E BD 6 Kb 4 Kb S i s t e m a s O p e r a c i o n a i s 45 Alocação Particionada Dinâmica • Nova forma de gerenciamento que reduziu a fragmentação interna e aumentou o grau de compartilhamento da memória • Alocação Particionada Dinâmica ou Variável - Cada programa utiliza apenas o espaço necessário (torna-se a sua partição) – Foi eliminado o conceito de partições fixas S i s t e m a s O p e r a c i o n a i s Alocação Particionada Dinâmica Memória PrincipalMemória Principal Sistema OperacionalSistema Operacional 4 Kb 1 Kb 3 Kb 5 Kb 2 Kb 15 Kb Programa C Programa B Programa A Programa E BA 2 Kb E 3 Kb C 1 Kb 4 KbS i s t e m a s O p e r a c i o n a i s 47 Alocação Particionada Dinâmica • Programa utiliza apenas o espaço necessário – Não ocorre fragmentação interna • Os programas que terminam deixam espaços cada vez menores – Novos programas não cabem nos espaços – Novo problema: fragmentação externa S i s t e m a s O p e r a c i o n a i s Alocação Particionada Dinâmica • Fragmentação Externa Memória Principal Sistema Operacional 4 Kb 3 Kb 5 Kb Programa C Programa A D 6 Kb S i s t e m a s O p e r a c i o n a i s 49 Alocação Particionada Dinâmica • Soluções para o problema da fragmentação externa 1.Quando os programas terminam as áreas adjacentes são reunidas 2.As partições ocupadas são relocadas • Espaços entre as partições sãoeliminados e é criada uma única área livre contígua • Sistema deve ser capaz de realizar relocação dinâmica • Ex: OS/MVT (Multiprogramming with a Variable Number of Task) da IBM S i s t e m a s O p e r a c i o n a i s Alocação Particionada Dinâmica • Solução para a Fragmentação Externa Memória PrincipalMemória Principal Sistema OperacionalSistema Operacional 8 Kb 4 Kb 3 Kb 5 Kb5 Kb Programa C Programa APrograma A S i s t e m a s O p e r a c i o n a i s Alocação Particionada Dinâmica • Solução para a Fragmentação Externa - alocação particionada dinâmica com relocação Memória PrincipalMemória Principal Sistema Operacional Relocação Sistema Operacional 4 Kb 3 Kb 12 Kb 5 Kb Programa C Programa C Programa A Programa A S i s t e m a s O p e r a c i o n a i s 52 Estratégias de Alocação de Partição • Sistemas operacionais implementam 3 estratégias que tentam evitar ou diminuir o problema da fragmentação externa • A melhor estratégia a ser adotada depende de uma série de fatores – O mais importante é o tamanho dos programas processados – O SO possui uma lista de áreas livres, com o endereço e tamanho de cada uma S i s t e m a s O p e r a c i o n a i s Estratégias de Alocação • Lista de Áreas Livres Memória Principal Sistema Operacional 4 Kb 3 Kb 5 Kb Programa C Programa A Áreas livres Área livre 1 Área livre 2 Área livre 3 Tamanho 1 4 Kb 2 5 Kb 3 3 Kb S i s t e m a s O p e r a c i o n a i s 54 Estratégias de Alocação de Partição • Best-fit – Melhor partição é escolhida - aquela que o programa deixa o menor espaço sem utilização – Lista de áreas livres é ordenada por tamanho - redução do tempo de busca – Desvantagem: • Tendência é que a memória fique com pequenas áreas não-contíguas - aumenta o problema da fragmentação externa S i s t e m a s O p e r a c i o n a i s Estratégias de Alocação • Best-fit Memória Principal Sistema Operacional 4 Kb 3 Kb 5 Kb Programa C Programa A F 1 KbS i s t e m a s O p e r a c i o n a i s Estratégias de Alocação • Best-fit Memória Principal Sistema Operacional 4 Kb 3 Kb 5 Kb Programa C Programa A F 1 Kb Sistema Operacional 2 Kb Programa C Programa F Programa A Área livre (a) Best - fitS i s t e m a s O p e r a c i o n a i s 57 Estratégias de Alocação de Partição • Worst-fit – Pior partição é escolhida - aquela que o programa deixa o maior espaço sem utilização – Deixa espaços livres maiores - permite que um maior número de programas utilizem a memória – Reduz o problema da fragmentação externaS i s t e m a s O p e r a c i o n a i s Estratégias de Alocação • Worst-fit Memória Principal Sistema Operacional 4 Kb 3 Kb 5 Kb Programa C Programa A F 1 KbS i s t e m a s O p e r a c i o n a i s Estratégias de Alocação • Worst-fit Sistema Operacional 4 Kb Programa C Programa A Área livre Programa F Memória Principal Sistema Operacional 4 Kb 3 Kb 5 Kb Programa C Programa A F 1 Kb (b) Worst-fit S i s t e m a s O p e r a c i o n a i s 60 Estratégias de Alocação de Partição • First-fit – Primeira partição livre de tamanho suficiente para carregar o programa é escolhida – Lista de áreas livres é ordenada, crescente, por endereços • Existe uma grande chance de obter uma grande partição livre nos endereços mais altos – É a estratégia mais rápida e que consome menos recursos do sistema S i s t e m a s O p e r a c i o n a i s Estratégias de Alocação • First-fit Memória Principal Sistema Operacional 4 Kb 3 Kb 5 Kb Programa C Programa A F 1 KbS i s t e m a s O p e r a c i o n a i s Estratégias de Alocação • First-fit Memória Principal Sistema Operacional 4 Kb 3 Kb 5 Kb Programa C Programa A F 1 Kb ( c ) F i r s t - f i t Sistema Operacional 3 Kb Programa C Programa A Área livre Programa F S i s t e m a s O p e r a c i o n a i s 63 Swapping • Muitas vezes um programa não podia ser executado por falta de uma partição livre disponível • A técnica de swapping foi introduzida para contornar o problema da insuficiência de memória principalS i s t e m a s O p e r a c i o n a i s 64 Swapping • Nos esquemas apresentados um processo permanecia na memória até o final de sua execução • Swapping é uma técnica aplicada à gerência de memória para programas que esperam por memória livre para serem executados S i s t e m a s O p e r a c i o n a i s 65 Swapping • O sistema escolhe um processo residente para ser transferido da memória principal para a memória secundária (swap out) • Posteriormente, o processo é carregado de volta, da memória secundária para a memória principal (swap in), e pode continuar sua execuçãoS i s t e m a s O p e r a c i o n a i s 66 Swapping S i s t e m a s O p e r a c i o n a i s SwappingMemória Principal Memória Principal Sistema Operacional Sistema Operacional Programa A Programa A Programa G Área Livre Swap in Swap out Arquivo de Swap Programa E Programa E Programa B Programa H H B B S i s t e m a s O p e r a c i o n a i s 68 Swapping • Para retirar um processo deve ser priorizado o que tiver menor chance de ser executado • Escolha, geralmente, é feita nos processos em estado de espera – Processo é dito no estado de espera outswapped • Existe a possibilidade de ser escolhido um processo no estado de pronto – Processo é dito no estado de pronto outswapped S i s t e m a s O p e r a c i o n a i s 69 Swapping • Para que a técnica de swapping seja implementada, é essencial que o sistema ofereça um loader que implemente a relocação dinâmica • A relocação dinâmica é realizada através do registrador de relocaçãoS i s t e m a s O p e r a c i o n a i s 70 Swapping • Registrador recebe o endereço inicial da posição de memória que o programa irá ocupar no momento que for carregado • Quando ocorre alguma referência a algum endereço, o endereço da instrução é somado ao conteúdo do registrador, gerando o endereço físico S i s t e m a s O p e r a c i o n a i s Swapping • Relocação Dinâmica Endereço de memória Endereço incial da partição Registrador de Relocação Instrução EndereçoCódigo deoperação S i s t e m a s O p e r a c i o n a i s 72 Relocação dinâmica usando um registrador de relocação S i s t e m a s O p e r a c i o n a i s 73 Swapping • Swapping permite maior compartilhamento da MP • Maior problema: – Elevado custo das operações de E/S (swap in/out) • Pouco memória => sistema dedicado à execução de swapping em detrimento de outras tarefas • Primeiros sistemas (1960) – CTSS do MIT e OS/360 da IBM S i s t e m a s O p e r a c i o n a i s 74 Exercícios S i st e m a s O p e r a c i o n a i s S i s t e m a s O p e r a c i o n a i s A figura ao lado representa um esquema de memória, onde as regiões em cinza correspondem a blocos alocados e as regiões em branco, a áreas livres. O último bloco alocado é mostrado na figura. O gerenciador de memória recebe uma requisição para alocar 12 M. Sabendo-se que o gerenciador usa a estratégia "Worst Fit", o bloco de memória será alocado em qual região? (Petrobrás – Analista de Sistemas Júnior Engenharia de Software – ano 2010) S i s t e m a s O p e r a c i o n a i s
Compartilhar