Sistemas Operacionais 13 gerenciamento de memória

download Sistemas Operacionais  13   gerenciamento de memória

If you can't read please download the document

description

Sistemas Operacionais 13 gerenciamento de memória

Transcript of Sistemas Operacionais 13 gerenciamento de memória

  • 1. Aula 7b: Gerenciamento de Memria Parte II

2. Realocao e Proteo: O uso da multiprogramao introduz os seguintes problemas: Realocao: garantir que as instrues de acesso direto memria iro acessar os endereos corretos: Proteo: garantir que um programa somente acesse a regio da memria que foi alocada a ele. Os endereos de um programa so determinados durante a vinculao do programa. Por exemplo, se um programa foi compilado a partir do endereo 0, e se for carregado a partir do endereo 400K (na partio 3), o programa far uma chamada dentro do sistema operacional, se possuir, por exemplo, uma instruo de salto para o endereo 100. Neste cado deveremos somar 400K a todos os endereos. 3. Os problemas da realocao e da proteo poderiam ser resolvidos pelo hardware, usando dois registradores especiais: Registrador da base (RB): contm o endereo inicial de uma partio. Todo o endereo relativo a este registrador. Registrador de limite (RL): contm o tamanho da partio. Os endereos no podem ser maiores do que este limite. O hardware informa ao sistema qualquer tentativa, por um processo, de acessar uma rea da memria no permitida. 4. Quando estes registrador esto disponveis, todos os programas podem ser compilados a partir do endereo 0, e, quando carregarmos um programa em uma das posies, basta alterar o valor de RB para o incio da partio, e valor de RL para o tamanho da partio. No exemplo anterior, basta o sistema copiar o valor 400K para RB, e copiar 300K, o tamanho da partio, para RL. Como os endereos so relativos a BP, a instruo de salto jmp100 saltar para o endereo 400K +100. 5. Troca: Gerenciamento de memria usado quando a memria no pode armazenar todos os processos do sistema: A memria tambm particionada, mas o nmero, o tamanho, e a posio das parties varia dinamicamente Quando o escalonador escolhe um processo: O processo em execuo copiado para o disco, e a partio usada pelo processo liberada. Uma nova partio criada na qual ser copiado, do disco, o novo processo escolhido pelo escalonador. 6. Inicialmente, a memria est vazia, e somente o sistema operacional est carregado na memria do computador. 7. Agora o processo A foi iniciado pelo sistema, o sistema criou uma partio na memria com o tamanho do processo A, e carregou o processo nesta partio, para que este possa ser executado. 8. Mais um processo, o B, foi tambm iniciado, e uma nova partio com o seu tamanho foi criada na memria. 9. Mais um processo, o C, foi carregado na memria, e mais uma partio, com o tamanho de C, foi criada. 10. O processo A foi retirado da memria, porque terminou sua a sua execuo, ou porque foi salvo no disco, pois A j ficou muito tempo na memria. Com isso, a parte da memria alocada partio foi liberada para ser usada para criar outras parties. 11. Agora, um novo processo, o D, foi criado, e com isso, o sistema criou uma nova partio. Esta partio foi criada na posio da memria em que o processo A tinha sido carregado, como o tamanho de D menor do que o de A, uma parte da memria liberada ao mover A para o disco no ser usada ao alocar a nova partio. 12. Agora o processo B ou terminou sua execuo, ou foi salvo no disco. A parte da memria ocupada pela sua partio foi ento liberada. 13. Agora um novo processo, o E, criado ou lido do disco. A partio alocada ao processo ocupa toda a rea da memria disponvel entre as parties dos processo D e C. 14. A grande vantagem da troca sobre o uso de parties fixas a de que otimizamos o uso da memria: As parties possuem o tamanho correto do processo, e com isso, no h desperdcio de espao dentro da partio. Porm, o gerenciamento da memria ser mais complicado, pois deveremos dinamicamente alocar e deslocar as parties. Um outro problema que esta alocao e desalocao dinmica pode ocasionar a fragmentao da memria. 15. Depois de algumas trocas de processos entre a memria e o disco, a memria fica dividida entre partes com parties, em que alguns processos dos sistema foram carregados, e partes livres, disponveis para a criao de novas parties. 16. Quando as reas disponveis na memria so pequenas e no contguas, podemos compactar a memria: as parties dos programas so deslocados para os endereos mais baixos da memria, at que a memria seja dividida em duas grandes reas uma com todas as parties criadas, e uma outra com toda a rea disponvel da memria. O problemas que o processo de compactao muito custoso. 17. Um detalhe de quanta memria ser alocada a um processo: Se o tamanho do processo fixo, ento o espao alocado igual a este tamanho. Se o tamanho do processo variar durante a execuo, ento deveremos alocar mais memria para este processo. 18. Suponha que dois processos, C e D, em duas parties da memria no contguas. Vamos ver agora os problemas que podem ocorrer se os processos puderem aumentar de tamanho, isto , os tamanhos das parties podem variar durante a execuo. 19. Suponha que o processo D precisou de mais memria. Como existe espao disponvel entre a partio D e a partio C, ento, se o processo precisar no mximo deste espao, a partio poder ser estendida sem problemas. No nosso exemplo , o processo D alocou todo o espao entre as duas parties. 20. Suponha que o processo D precisou alocar mais memria. Como agora no existe espao para estender a partio, ento um ou mais processos devero ser movidos na memria, para que seja possvel alocar uma partio suficientemente grande para armazenar D. Se no foi possvel, ento o processo esperar ou ser terminado. No exemplo, trocamos os endereos dos processos C e D na memria. 21. Suponha que o processo B foi carregado na ltima rea livre da memria. Agora, no temos nenhuma memria disponvel para estender ou para criar novas parties. Se, por exemplo, o processo C desejar alocar mais memria, este ou dever esperar at que exista memria disponvel, ou dever ser terminado. 22. Uma maneira de minimizar o tempo gasto ao mover os processos o de simplesmente alocar mais memria do que a necessria para copiar um processo do disco. Se um processo precisar de mais memria, ento este usar a memria adicional, e somente ser movido se a memria adicional completamente usada. Esta organizao til se o processo tiver uma nica rea de dados que pode crescer durante a execuo. 23. Se a partio deve dividida em uma regio com o programa, que ocupa o incio da partio, uma regio com os dados, que comea logo aps o programa, e que cresce em direo ao final da partio, e uma regio de pilha, que cresce em direo ao incio da partio, e que fica no final da partio, ento podemos alocar uma partio com mais espao, dividido de acordo com a figura. Entre as regies da pilha e de dados, existe uma regio livre, que pode ser usada para estender ambas as regies, se for necessrio. 24. A memria pode ser gerenciada atravs de uma mapa de bits: A memria divida em blocos de tamanho fixo, chamamos de unidades de alocao. Existe um bit no mapa para cada unidade de alocao, que igual a 1 se a unidade est sendo usada, e 0 em caso contrrio. O tamanho da unidade de alocao importante: O tamanho do mapa de bits depende deste tamanho. O tempo necessrio para ocupar por um conjunto destas unidades depende do tamanho do mapa de bits. 25. O grande problema do uso de mapa de bits o tempo gasto ao alocar uma partio para o processo copiado do disco: Se um processo ocupa k unidades de alocao, deveremos varrer o mapa at achar k unidades consecutivas disponveis; Uma outra soluo o gerenciamento da memria atravs de listas encadeadas, sendo que cada elemento da lista: Representa um conjunto consecutivo de unidades de alocao. Contm o endereo inicial do conjunto, o seu tamanho, e o seu tipo, e um ponteiro para o prximo elemento. 26. Lista encadeada para o exemplo anterior, para as 32 unidades de alocao iniciais da memria. O tipo P indica que as unidades esto alocadas a um processo, e o H indica que as unidades esto disponveis. 27. Memria Virtual: Nem todos os programas que so executados no computador podem ser totalmente armazenados na memria. Neste casos, podemos usar o conceito de overlays: O programa dividido em partes menores que so chamadas de overlays. O overlay 0 o primeiro a ser executado. Quando necessrio, um overlay chama outro overlay, que ser carregado na memria pelo sistema. O sistema gerencia a troca de overlays entre a memria e o disco, e permite que mltiplos overlays estejam na memria. 28. Neste conceito, os programas so divididos em partes menores, chamados de overlays, pelo programador. No exemplo, temos quatro overlays na memria: os overlays 0 e 2 do programa A, o overley 0 do programa B, e o overlay 1 do programa C. 29. Se o overley 0 do programa A chamar o overley 1 deste programa, ento algum outro overley ser salvo no disco, antes deste overley ser carregado. Suponha que o overley 2 de A foi o escolhido para ser salvo no disco. Ento, o overley 1 de A ser carregado na posio na memria de overley 2, e ser executado. 30. O problema do uso de overlays a complexidade da programao dos programas, pois a diviso feita pelo computador. Uma outra possibilidade o uso do conceito de memria virtual, criado por Fotheringhan em 1961: O tamanho do espao de endereamento do processo que executa o programa pode ser maior que a memria . As partes atualmente usadas do espao de endereamento so mantidas na memria, e as restantes, no disco. Ao contrrio dos overlays, o sistema que o responsvel pela diviso do espao de endereamento. 31. Os programas continuam sendo divididos em vrios pedaos, mas agora o sistema operacional gerencia a troca das partes entre o disco e a memria, e a diviso do programa nestas partes. Por exemplo, o sistema pode executar um programa de 16MB em uma memria de 4MB, se dividir o programa em quatro partes de 4MB, e escolher qual dos 4MB deve estar na memria em cada instante. 32. Algumas das instrues do processador acessam endereos da memria, que so chamados de endereos virtuais. O conjunto de endereos que um programa pode acessar atravs das instrues chamado de espao de endereamento virtual. Quando no usamos o conceito de memria virtual: Os endereos so copiados diretamente no barramento da memria pelo processador. O endereo fsico lido (ou escrito) da (na) memria o mesmo endereo virtual gerado pela instruo. 33. Quando o processador executa uma instruo, o endereo usado para obter o seu cdigo enviado diretamente para a memria. 34. Por exemplo, se o processador deseja executar a instruo cujo cdigo comea no endereo FEDC, o processador envia este endereo diretamente para o barramento da memria, e obtm o cdigo FE da instruo. 35. Quando usamos o conceito de memria virtual: Os endereos so passados a uma unidades especial, chamada de MMU (Memory Menagement Unit). A MMU converte o endereo virtual em endereo fsico da memria, que em geral diferente deste endereo virtual. Depois da converso, a MMU copia o endereo fsico gerado no barramento da memria. 36. No conceito de memria virtual, quando o processador executa uma instruo, o endereo virtual usado para obter o seu cdigo enviado para a MMU, que ento o converte para o endereo fsico com o cdigo da instruo. 37. Por exemplo, se o processador desejar executar a instruo cujo cdigo comea no endereo virtual AADC, o processador envia este endereo para a MMU, que o converte no endereo fsico 80DC com o cdigo FE da instruo. 38. Se usarmos a tcnica da paginao ao gerenciar a memria virtual: O endereo virtual dividido em um conjunto de unidades que so chamadas de pginas virtuais. A memria principal do computador tambm dividida nestas unidades, que so chamadas de molduras de pgina. A MMU mapeia as pginas virtuais em molduras de pgina, atravs do uso da sua tabela de pginas. 39. Exemplo de um processador com um espao de endereamento virtual de 64Kb. O tamanho da memria principal do computador de 32Kb, o tamanho de uma unidade de 4Kb. Com isso, temos 16 pginas virtuais e 8 molduras de pgina. O nmero dentro de uma pgina virtual indica a moldura de pgina na qual esta pgina est mapeada, sendo que o X indica que a pgina no est mapeada na memria. 40. Se o programa executa uma instruo que acessa o endereo virtual 0, como, por exemplo, a instruo MOV REG,0, ento a MMU, ao receber o endereo do processador, descobrir que este est na pgina virtual 0 (endereos de 0 at 4095). Como esta pgina est mapeada na moldura de pgina 2 (endereos de 8192 at 12287), o endereo fsico que a MMU ir gerar ser o 8192. 41. Se agora o programa executar uma instruo MOV REG, 20500, que acessa o endereo virtual 20500, ento o endereo fsico gerado pela MMU ser agora o 12308, pois o endereo 20500 est na pgina virtual 5 (endereos de 20480 at 24575), que mapeada para a moldura de pgina 3 (cujos endereos vo de 12288 at 16383), e est a 20 bytes do incio desta pgina. 42. Suponha que o programa executou uma instruo que acessa o endereo virtual 32780, que est dentro da pgina virtual 8. Como a pgina no est mapeada na memria (pois temos um X na entrada ), a MMU gera uma interrupo, chamada de falha de pgina, para que o sistema possa carregar na pgina acessada na memria. Em geral, o hardware possui um bit ausente/presente para indicar se a pgina est ou no mapeada. 43. Suponha que o sistema decidiu carregar a pgina virtual 8 na moldura de pgina 1, salvando o contedo da pgina virtual 1, que estava mapeada nesta moldura, no disco, se necessrio. Ento, alm de copiar a pgina virtual 8 para a moldura de pgina 1, o sistema dever atualizar a entrada 1 da tabela de pginas X (pois a pgina 1 agora no est mais mapeada), e a entrada 8 da tabela para a moldura de pgina 1. 44. Depois de copiar a pgina virtual 8 para a moldura de pgina 1, a instruo que acessou o endereo 32780 reiniciada, e este endereo convertido para o endereo fsico 4108, pois este est a 12 bytes do endereo inicial da pgina (que 32768), e o primeiro endereo da moldura de pgina 1 o 4096. 45. A converso de um endereo virtual para um endereo fsico pela MMU feita do seguinte modo: Funcionamento interno da MMU. O endereo virtual dividido e dois campos: o nmero de pgina e o deslocamento dentro desta pgina. O nmero da pgina usado como um ndice na tabela de pginas para obter o nmero da moldura de pgina com esta pgina. O endereo fsico enviado pela MMU memria ser composto por este nmero da moldura, e pelo deslocamento dentro desta pgina, que ser o mesmo dentro da moldura. Vamos ver como a MMU funciona mais de perto, vendo como o endereo virtual 8196 convertido no endereo fsico 24580, num computador com memria fsica de 32K, com 64K de espao de endereamento virtual, e com pginas com tamanho de 4K. 46. A converso de um endereo virtual para um endereo fsico pela MMU feita do seguinte modo: Passo 2: o nmero da pgina 2, usado como um ndice na tabela de pginas para obter a entrada desta pgina. Como o bit ausente/presente da entrada igual a 1 , o valor 6 (110 em binrio) da entrada indica que esta pgina foi copiada para a moldura de pgina 6. Se o bit ausente/presente fosse igual a 0, ento a MMU iria gerar uma falha de pgina, para que o sistema operacional possa escolher uma moldura em que colocar a pgina que acabou de ser referenciada. 47. A converso de um endereo virtual para um endereo fsico pela MMU feita do seguinte modo: Passo 3: o endereo fsico que a MMU vai enviar para a memria formado, sendo que este ser composto pelo deslocamento de 12 bits nos seus bits inferiores, e por 3 bits superiores, que indicam a moldura de pgina, pois o tamanho da memria de 32K, e o tamanho da moldura de 4K. No nosso exemplo, o valor 65 lido na tabela ir compor o endereo fsico, juntamente com o deslocamento de 4, o que formar o endereo fsico 24580, que est a 4 bytes do incio da moldura de pgina 6 (que comea no endereo 24576). 48. A converso de um endereo virtual para um endereo fsico pela MMU feita do seguinte modo: Passo 4: o endereo fsico 24580 colocado no barramento, para que a instruo que acessou o endereo virtual 8196 possa ser corretamente executada. 49. Para saber mais: pg. 106-117