Arquitetura de Sistemas Operacionais Francis Berenger Machado Luiz Paulo Maia Capítulo 9 Gerência de Memória 1 Cap. 5 – Gerência de Memória Sumário • • • • • Introdução Funções básicas Alocação contígua simples Técnica de overlay Alocação Particionada – Alocação Particionada Estática – Alocação Particionada Dinâmica – Estratégias de Alocação de Partição • Swapping Cap. 5 – Gerência de Memória 2 1 Introdução • Enquanto nos sistemas monoprogramáveis a gerência da memória não é muito complexa, nos sistemas multiprogramáveis essa gerência se torna crítica, devido à necessidade de se maximizar o número de usuários e aplicações utilizando eficientemente o espaço da memória principal. 3 Cap. 5 – 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 Cap. 5 – Gerência de Memória 4 2 Esquema de uso submete JOB para execução MEMÓRIA PRINCIPAL LOCATOR procura na biblioteca MEMÓRIA SECUNDÁRIA Biblioteca de programas LOADER carrega programa na memória Sistema Operacional Código do Programa e Recursos PAGEFILE Quando o espaço de memória é insuficiente EXECUÇÃO 5 Cap. 5 – Gerência de Memória Alocações de Memória • ALOCAÇÃO DE MEMÓRIA: • Contígua • Simples • Particionada Estática ou Fixa • Absoluta • Relocável • Particionada Dinâmica • Não-Contígua ou Memória Virtual • Paginação • Segmentação • Segmentação com Paginação Cap. 5 – Gerência de Memória 6 3 Alocação Contígua Simples M e m ó r ia Pr in cip a l Sist e m a O p e r a cio n a l • implementado nos primeiros SO • monoprogramável • memória contígua – contínua, adjacentes • dividida em duas áreas: • para Sistema Operacional Á rea p ara p rog ram a • para programas do usuário • não pode exceder o espaço disponível • usuário tem controle total sobre o uso da memória 7 Cap. 5 – Gerência de Memória Alocação Contígua Simples • Proteção Memória Principal Sistema Operacional Área para programa Cap. 5 – Gerência de Memória Registrador • Proteção do SO, o registrador delimita as áreas do SO • contém o endereço final do SO • define o endereçamento da área do programa. 8 4 Alocação Contígua Simples • Subutilização da memória • memória subutilizada • utilização ineficiente M e m ó r ia Pr in cip a l • monousuário – monoprogramável • desperdício de recurso caro Sist e m a O p e r a cio n a l Pr o g r a m a d o u su á r io Memória alocada para o programa Á r e a l iv r e Resto da memória não utilizada “Fragmentação Interna” 9 Cap. 5 – Gerência de Memória Alocação Contígua Simples • o programador deve desenvolver suas aplicações, preocupado, apenas, em não ultrapassar o espaço de memória disponível, ou seja, a diferença entre o tamanho total da memória principal e área ocupada pelo Sistema Operacional. M e m ó r i a Pr i n ci p a l Si st e m a O p e r a ci o n a l Á rea p ara p rog ram a • Espaço de Memória Principal disponível para programas do usuário • Não pode exceder o tamanho Cap. 5 – Gerência de Memória 10 5 Técnica de Overlay • Na alocação contígua simples, todos os programas estão limitados ao tamanho da área de memória principal disponível para o usuário. • Uma solução encontrada para o problema é dividir o programa em módulos, de forma que seja possível a execução independente de cada módulo, utilizando uma mesma área de memória. 11 Cap. 5 – Gerência de Memória Técnica de Overlay • • • • • • A memória de 8 Kb é insuficiente para o Programa com 9 kb dividir em 3 módulos (3 kb, 4 kb e 2 Kb) módulo principal residente na memória de 3 kb Os Módulos Overlays compartilham a Área de Overlay de 4 kb Área de Overlay = 4 kb, definido pelo maior módulo (Ex. Cadastramento) Carregado da Memória Secundária para a Area de Overlay qdo. referenciado. Memória Principal 2 Kb Sistema Operacional 3 Kb Módulo principal Memória Secundária processamento CADASTRAMENTO 4 Kb cadastramento 4 Kb ÁREA DE OVERLAY 1 Kb Área livre IMPRESSÃO Área não utilizada Cap. 5 – Gerência de Memória 2 Kb Ficha do cliente 12 6 Alocação Contígua Particionada Estática • Partições são fixas e definidas na inicialização do S.O. • Tamanhos são determinados baseados nos tamanhos dos programas e da sua necessidade de execução. • Pode-se mudar os tamanhos das partições reinicializando o SO. Memória Principal Tabela de partições Partição Tamanho 1 2 Kb 2 5 Kb 3 8 Kb Sistema Operacional Programas a serem executados: E D C B A 3 Kb 6 Kb 1 Kb 4 Kb 2 Kb Partição 1 2 Kb Partição 2 5 Kb Partição 3 8 Kb 13 Cap. 5 – Gerência de Memória Alocação Contígua Particionada Estática Absoluta Memória Principal CÓDIGO ABSOLUTO - as referências e endereços são físicos e absolutos. Sistema Operacional C A 1 Kb 2 Kb E B 3 Kb 4 Kb D 6 Kb Cap. 5 – Gerência de Memória Partição 1 2 Kb Partição 2 5 Kb São compilados para rodarem nas partições previamente definidas. Só rodam na partição onde foram compilados. Alocação da partição baseada na otimização de uso. Alocação em função do tamanho da necessidade de memória. Partição 3 8 Kb A e C cabem na P1, P2 e P3 B e E não cabem na P1 e cabem na P2 e P3 D só cabe na P3 14 7 Alocação Contígua Particionada Estática Relocável Memória Principal CÓDIGO RELOCÁVEL – todas as referências e endereços são relativos ao início do programa. Sistema Operacional Programa C 2 Kb Podem ser carregados e executados em qualquer partição. D E 6 Kb 3 Kb Programa A 5 Kb O Loader recalcula o endereçamento. Torna a execução mais flexível. Programa B 8 Kb Uso no OS/MFT Multiprogramming with Fixed Number of Tasks (IBM) do Mainframe e nos antigos UNIX. 15 Cap. 5 – Gerência de Memória Alocação Contígua Particionada Estática • Tabela de Alocação de Partições • O SO procura uma partição livre através da tabela de alocação para determinar a partição de execução. • Detrmina o tamanho da partição e a ocupação. Memória Principal Partição Tamanho Livre 1 2 Kb Não 2 5 Kb Sim 3 8 Kb Não Cap. 5 – Gerência de Memória Sistema Operacional 1 Programa C 2 Área livre 3 Programa B 16 8 Alocação Particionada Estática • Proteção • Limitação de uso – registradores de endereços • Proteção contra invasão de uso indesejado Memória Principal Sistema Operacional Endereço inicial Endereço final 17 Cap. 5 – Gerência de Memória Alocação Particionada Estática • Fragmentação Interna • espaços não utilizados da partição na alocação da memória, são perdidos até o final da execução. • partição1 = 2 kb • partição2 = 5 kb • partição3 = 8 kb Memória Principal Sistema Operacional Programa C 1 Kb Programa A D B 6 Kb 4 Kb 3 Kb Programa E 5 Kb Cap. 5 – Gerência de Memória • programa C = 1 kb • programa A = 2 kb • programa E = 3 kb • Fragmentação Interna • partição1 = 1 kb • partição2 = 3 kb • partição3 = 5 kb Não serão usadas até o término da execução de cada partição. 18 9 Alocação Contígua Particionada Dinâmica • na Alocação Dinâmica ou Variável, eliminação do conceito de partição de tamanho fixa. • cada programa ocupa o espaço necessário tornando este como partição. • não ocorre a Fragmentação Interna. A E C B 2 Kb 3 Kb 1 Kb 4 Kb Memória Principal Memória Principal Sistema Operacional Sistema Operacional Programa B 4 Kb Programa C 1 Kb Programa E 3 Kb Programa A 2 Kb 15 Kb 5 Kb 19 Cap. 5 – Gerência de Memória Alocação Contígua Particionada Dinâmica • Fragmentação Externa • Ocorre ao término de cada programa na Alocação Contígua Particionada Dinâmica, deixando espaços insuficientes para carga de outro programa. Fragmentação Externa Espaço não utilizado O programa D tem 6 kb, espaço insuficiente nas fragmentações externas de 4 kb ou 3 kb Cap. 5 – Gerência de Memória 20 10 Alocação Contígua Particionada Dinâmica • Solução para a Fragmentação Externa Memória Principal Memória Principal Sistema Operacional Sistema Operacional 4 Kb 8 Kb Programa C 3 Kb Programa A Programa A 5 Kb 5 Kb • Solução 1: reunião dos espaços adjacentes liberados quando o programa C terminar, produzindo área livre maior de 8 Kb (4 + 1 + 3) 21 Cap. 5 – Gerência de Memória Alocação Contígua Particionada Dinâmica com Relocação • Solução para a Fragmentação Externa Memória Principal Memória Principal Sistema Operacional Sistema Operacional Programa C 4 Kb Programa A Relocação das partições Programa C Relocação 3 Kb Programa A 12 Kb 5 Kb Solução 2: relocação de todas a partições ocupadas eliminando os espaços entre elas, produzindo uma única área livre contígua. • reduz o problema de fragmentação porém aumenta complexidade • Ex.: OS/MVT Multiprogramming with Variable Number of Tasks (IBM) Cap. 5 – Gerência de Memória 22 11 Alocação Contígua Particionada Dinâmica • Envolve a relocação de todas as partições ocupadas, eliminando todos os espaços entre elas e criando uma única área livre contígua. Para que esta solução possa ser implementada, é necessário que o sistema tenha a capacidade de mover os diversos programas na memória principal, ou seja, realizar a alocação particionada dinâmica com relocação. 23 Cap. 5 – Gerência de Memória Estratégias de Alocação • A melhor estratégia de alocação depende de muitos fatores e condições: tamanho do programa, prioridade de execução, etc. • Lista de Áreas Livres Áreas livres Tamanho 1 4 Kb 2 5 Kb 3 3 Kb Memória Principal Sistema Operacional Área livre 1 4 Kb Programa C Área livre 2 5 Kb Programa A Área livre 3 Cap. 5 – Gerência de Memória 3 Kb 24 12 Estratégias de Alocação • Best-fit Memór ia Pr inci pal Sistema Oper aci onal Sistema Operacional 4 Kb Pr ogr ama C Programa C F 1 Kb 5 Kb Pr ogr ama A Programa A Programa F 3 Kb Área livre 2 Kb • escolhe a partição que produza menor fragmentação interna. • Lista de Áreas Livres ordenado pelo tamanho para diminuir tempo de busca. • desvantagem: tendência de aumentar a quantidade de fragmentação externa de pequeno tamanho, prejudicando as novas alocações. 25 Cap. 5 – Gerência de Memória Estratégias de Alocação • Worst-fit Memór ia Pr incipal Sistema Operacional Sistema Oper acional 4 Kb Pr ogr ama C F 1 Kb Programa C Programa F Área livre 5 Kb Pr ogr ama A 4 Kb Programa A 3 Kb • escolhe a partição que produza maior Fragmentação Interna • tendência de utilização de espaços de memória de maior tamanho, sendo possível a reutilização, diminuindo os problemas de Fragmentação Externa. • desvantagem: por utilizar os maiores espaços de memória disponíveis, a fragmentação interna é grande, qdo. executa programas de pequeno porte, ficando poucas chances para programas maiores. Cap. 5 – Gerência de Memória 26 13 Estratégias de Alocação • First-fit Memór ia Pr incipal Sistema Operacional Progr ama F Sistema Oper acional Área li vr e 3 Kb 4 Kb Progr ama C Pr ogr ama C F 1 Kb 5 Kb Progr ama A Pr ogr ama A 3 Kb • escolhe a primeira partição livre de tamanho suficiente para carregar o programa. • Lista de Áreas Livres está ordenada por endereços crescentes. • utiliza as áreas livres de endereços mais baixos, existe grande chance de obter grande partição livre nos endereços mais alta. • É a estratégia mais rápida por consumir menos recursos do sistema. 27 Cap. 5 – Gerência de Memória SWAPPING • Swapping (Paginação) Sistema Operacional • Resolver problemas de insuficiência de memória principal Memória Principal Programa H Programa A Programa B • Atender processos no Programa E “Estado de Espera” da Programa G Swap out Memória Secundária B B memória livre • Algorítmo de escolha: menor chance de execução no “Estado de Espera (Espera Outswapped) Memória Principal Arquivo de Swap Sistema Operacional Programa A ou Pronto (Pronto Outswapped)” Programa H Swap in • Loader com Relocação Dinâmica Programa E Qdo. Prgm G terminar Implementado. Área Livre • o Processo de SWAPPING pode ocorrer várias Vezes para o mesmo programa Cap. 5 – Gerência de Memória 28 14 SWAPPING • Relocação Dinâmica • • • • • • • Registrador de Relocação recebe o endereço inicial da carga. Registrador de Relocação + Endereço da instrução = ender. Físico. O programa pode ser carregado em qualquer posição da memória. Permite maior compartilhamento da Memória Principal e maior utilização dos recursos computacionais. desvantagem: elevado custo do dispositivo de E/S (swap in/out). Com pouca memória disponível e em situações críticas, o sistema pode ficar quase que dedicado a Swapping deixando de executar processos residentes. 1960 – IBM OS/360 da IBM e CTSS da MIT. Registrador de Relocação Endereço incial da partição Instrução Código de operação Endereço Endereço de memória Cap. 5 – Gerência de Memória 29 15