Baixe o app para aproveitar ainda mais
Prévia do material em texto
SISTEMAS OPERACIONAIS PARA REDES Prof. Luiz di Marcello Aula 4 – Gerência de Memória OBJETIVOS DA AULA Descrever a alocação particionada Analisar o funcionamento da paginação Diferenciar paginação e segmentação GERÊNCIA DE MEMÓRIA http://media.forumpcs.com.br/ Hierarquia da Memória Algumas memórias no computador armazenam de forma permanente (não voláteis), enquanto outras de forma temporária (voláteis) A memória principal armazena programas e seus dados, para que possam ser executados, referenciados, acessados GERÊNCIA DE MEMÓRIA Memória Principal Nos sistemas multitarefa, torna-se indispensável gerenciar a memória principal, devido à importância, o custo e a exiguidade desse recurso A gerência de memória possui duas abordagens principais: Manter os processos na memória principal durante toda a sua execução Mover os processos entre a memória principal e a secundária (tipicamente disco), utilizando técnicas de permuta (swapping) ou de paginação GERÊNCIA DE MEMÓRIA A memória principal disponível é dividida entre o SO e o programa em execução (sistemas monoprogramáveis) O tamanho máximo do programa é limitado à memória principal disponível Essa limitação veio a ser superada com a técnica de overlay Alocação Contígua GERÊNCIA DE MEMÓRIA Utiliza o conceito de sobreposição: a mesma região da memória será ocupada por módulos diferentes do processo É de responsabilidade do usuário esse gerenciamento, que geralmente é oferecido como um recurso da linguagem Técnica de OVERLAY GERÊNCIA DE MEMÓRIA Um módulo (raiz) do programa fica sempre residente e os demais módulos são mutuamente exclusivos em relação a sua execução; esses módulos permanecem no disco até que sejam necessários Foi o primeiro uso do conceito de mover partes do processo entre o disco e a memória principal, o que acabaria por originar as modernas técnicas de gerenciamento de memória, nas quais a divisão dos módulos é totalmente transparente para o usuário Técnica de OVERLAY GERÊNCIA DE MEMÓRIA A forma mais simples de se manter mais de um processo (multitarefa) de usuário na memória ao mesmo tempo é dividir a memória em n partições (possivelmente diferentes) e alocar os diferentes processos em cada uma delas Alocação Particionada Fixa (Estática) GERÊNCIA DE MEMÓRIA Deve-se considerar a diferença entre o código absoluto (referências a endereços no programa são posições físicas da memória principal) e o código relocável (referências a endereços no programa são relativas ao início do código), permitindo que os programas sejam executados a partir de qualquer partição Alocação Particionada Fixa (Estática) GERÊNCIA DE MEMÓRIA Nos primeiros sistemas as partições eram estabelecidas na configuração do SO e seu tamanho e localização somente podiam ser alterados realizando um novo boot Estratégias para alocar o processo: Uma única fila de entrada – todos os processos ficam na mesma fila e vão sendo alocadas na menor partição livre que os possa acomodar Uma fila por partição – os processos são divididos em várias filas de acordo com o seu tamanho e são alocados quando a partição atendida pela fila está disponível Alocação Particionada Fixa (Estática) GERÊNCIA DE MEMÓRIA Na alocação particionada fixa havia desperdício por conta dos espaços não ocupados nas partições (fragmentos) A memória principal não é particionada em blocos de tamanhos pré-determinados; existe uma partição que ocupa toda a memória disponível para usuários Os processos vão sendo alocados, essa partição única vai diminuindo até que não caibam mais processos no espaço restante, resultando num único fragmento Alocação Particionada Dinâmica GERÊNCIA DE MEMÓRIA Quando um processo termina e deixa a memória, o espaço ocupado por ele se torna uma partição livre, que será utilizada para alocar outro processo Podemos notar, que após alocar e desalocar vários processos, a memória pode se (re)particionar Alocação Particionada Dinâmica GERÊNCIA DE MEMÓRIA A escolha da partição para o próximo job da fila deverá ser feita de acordo com uma das seguintes políticas: BEST-FIT: alocar o job na partição disponível de tamanho mais próximo ao do job, buscando deixar fragmentos livres menores FIRST-FIT: procura alocar o job na primeira partição onde ele couber, buscando agrupar os jobs pequenos separando-os dos grandes WORST-FIT: procura alocar o job na maior partição disponível onde ele couber, buscando mais um job pequeno no espaço resultante Alocação Particionada Dinâmica GERÊNCIA DE MEMÓRIA A técnica de swapping consiste em remover um processo da memória toda vez que ele fica bloqueado, retornando-o a fila de PRONTO quando a condição estiver satisfeita Vantagens: maior compartilhamento de memória; menor fragmentação; bom para processos pequenos e poucos usuários Desvantagem: custo alto por ser uma operação com memória secundária, overhead Swap de Memória GERÊNCIA DE MEMÓRIA Por exemplo: os sistema retira o processo que está no meio de uma área livre de memória (swap out), coloca-o no disco, atribui a nova partição disponível ao processo que estava esperando e, posteriormente, atribui outra partição (swap in) ao processo que foi desalojado Swap de Memória GERÊNCIA DE MEMÓRIA Espaço de endereçamento é o conjunto de endereços que um processo faz referências; o espaço de endereçamento lógico de um programa tem que ser mapeado em um espaço de endereçamento físico de memória Espaço de endereçamento virtual é o conjunto de endereços que um programa pode endereçar, que pode ser maior que a memória física disponível no momento ou mesmo que o total de memória fisicamente disponível na máquina; ao conjunto de endereços reais de memória chamamos espaço de endereçamento real Memória Virtual GERÊNCIA DE MEMÓRIA Paginação: Conceito e Operação O espaço de endereços é dividido em blocos de igual tamanho (páginas); a memória principal também é dividida em blocos (molduras) de mesmo tamanho das páginas O mecanismo da paginação possui duas atribuições: executar a operação de mapeamento, isto é, determinar qual a página referenciada e em que bloco de memória (se for o caso) ela se encontra transferir páginas da memória secundária para os blocos da memória principal (quando for requerido) e guardá-las de volta na memória secundária quando elas não estiverem em uso GERÊNCIA DE MEMÓRIA Paginação: Operação GERÊNCIA DE MEMÓRIA Tabela de páginas Memória Mapeamento: Conceito É a tradução do endereço lógico em endereço físico, com objetivo de encontrar o código a ser executado Os endereços lógicos dos objetos referenciados pelo processo devem ser traduzidos em endereços físicos da memória principal GERÊNCIA DE MEMÓRIA 0 0 0 0 0 1 0 1 1 1 0 1 1 1 1 0 0 0 0 1 1 0 0 1 1 1 0 1 1 1 1 0 16-bit endereço lógico 10-bit offset 06-bit página 16-bit endereço físico Tabela de página de processo 0 0 1 0 1 1 0 0 0 1 1 0 0 1 1 0 0 1 Tradução 0 1 2 Página 1 está na memória - frame 6 Offset: deslocamento dentro da página Mapeamento: Exemplo GERÊNCIA DE MEMÓRIA Segmentação: Conceito e Operação O programa não mais é dividido em blocos de tamanho fixo (páginas), mas em segmentos lógicos de tamanhos variados O grande número de page faults da paginação se deve, principalmente, ao fato de não se considerar características das estruturas lógicas do programa A segmentação busca aproveitar exatamente essas características, agrupando num segmento partes do programa que se referenciam mutuamente e que quando trazidas a memória estarão todas juntas GERÊNCIA DE MEMÓRIA Segmentação com Paginação: Conceito e Operação Segmentos muito grandes poderiam eventualmente, ultrapassar a memória disponível da máquina Podemos limitar o tamanho máximo do segmento ou aplicar a paginação na implementação da segmentação, aproveitando o melhor de cada uma dessas formas Divide-se o programa em segmentos, que por suavez serão divididos em páginas Em tempo de execução alguns trechos de um segmento estariam na memória principal e outros não GERÊNCIA DE MEMÓRIA Segmentação com Paginação: Vantagens Não é necessário manter todas as páginas de um segmento na memória, apenas aquelas usadas correntemente As páginas de um segmento não precisam ser carregadas em áreas contíguas, ou seja, podem estar espalhadas pela memória GERÊNCIA DE MEMÓRIA Engenheiro de Sistemas e Computação pela UERJ, Especialista em Sistemas Abertos e Mestre em Educação. Atualmente, é Coordenador (Graduação e Pós-Graduação), Professor adjunto e Tutor da Universidade Estácio de Sá. Tem experiência na área de Ciência da Computação, com ênfase em Arquitetura de Sistemas de Computação e Tecnologias da Informação e Computação, e também na área de Educação, com ênfase em Tecnologias de Informação e Comunicação nos Processos Educacionais http://lattes.cnpq.br/6477530917342363 Prof. Luiz di Marcello Senra Santiago GERÊNCIA DE MEMÓRIA
Compartilhar