SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

Documentos relacionados
SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

CURSO TÉCNICO EM INFORMÁTICA SISTEMAS OPERACIONAIS II MEMÓRIA VIRTUAL

Organização e Arquitetura de Computadores I

Sistemas Operacionais Gerenciamento de Memória. Carlos Ferraz Jorge Cavalcanti Fonsêca

Organização e Arquitetura de Computadores I

Universidade Federal de Campina Grande Departamento de Sistemas e Computação Curso de Bacharelado em Ciência da Computação.

AULA Nº 11 SISTEMAS OPERACIONAIS. Técnicas de Memória Virtual

SSC0640 Sistemas Operacionais I

Arquitetura de Sistemas Operacionais

Gerenciamento de memória

Memória virtual. Sistemas de Computação

GERENCIAMENTO DE MEMÓRIA

Gerência de memória III

Infra-Estrutura de Software IF677

Gerência de Memória. Endereçamento Virtual (1) Paginação. Endereçamento Virtual (2) Endereçamento Virtual (3)

Gerência de memória II

Capítulo 6 Nível do Sistema Operacional

Gerência de Memória. Aspectos de Projeto

SSC0640 Sistemas Operacionais I

Durante a evolução das arquiteturas de computadores e principalmente dos Sistemas Operacionais, muitas tecnologias tiveram que ser aprimoradas para

Gerenciamento de Memória

Aula 15. Memória Virtual - Desempenho. 1.1 Contexto 1.2 Políticas de Reposição de Páginas 1.3 Working-Set 1.4 Trashing

Fundamentos de Sistemas Operacionais

Divisão da lacuna em espaços na base 2: Eficiente quanto à velocidade e Ineficiente quanto à fragmentação.

Memória virtual. Pedro Cruz. EEL770 Sistemas Operacionais

Sistemas operacionais P A G I N A Ç Ã O D E M E M Ó R I A

Segmentação com paginação Intel 386. Esquema de tradução de endereço Intel 386

Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer Localidade

Fundamentos de Sistemas Operacionais

Sistemas Operacionais. Prof. MSc. André Yoshimi Kusumoto

Gerência de Memória. Paginação

Substituição de Páginas

SSC0611 Arquitetura de Computadores

Sistemas de Computação. Gerenciamento de memória

Sistemas Operacionais. - Gerência de Memória -

Gerência de Memória. Algoritmos de Substituição de Páginas. (Aula 20)

SISTEMAS OPERACIONAIS. 2ª. Lista de Exercícios Parte 2

Sistemas Operacionais

Sistemas Operacionais I Memória Virtual

Sistemas Operacionais. Prof. André Y. Kusumoto

Sistemas Operacionais Memória Virtual

AULA 14 - Memória Virtual

INE5412 Sistemas Operacionais I

Gerência da Memória. Adão de Melo Neto

Segmentação de Memória

Gerência de Memória Memória Virtual e Paginação

Gerenciamento de Memória

Sistemas Operacionais

Capítulo 4 Gerenciamento de Memória

William Stallings Arquitetura e Organização de Computadores 8 a Edição

Memória Virtual. Ciclo 4 AT2. Prof. Hermes Senger

Organização e Arquitetura de Computadores I

Sistemas Operacionais

Capítulo 8: Memória Principal. Operating System Concepts 8 th Edition

Sistemas de Informação. Sistemas Operacionais

Sistemas Operacionais. - Gerência de Memória -

Gerenciamento de Memória

Sistemas Operacionais

Sistemas Operacionais

Sistemas Operacionais: Memória Virtual

Gerenciamento de Memória

Sistemas Operacionais

UFRJ IM - DCC. Sistemas Operacionais I. Unidade III Memória Primária. 29/04/2014 Prof. Valeria M. Bastos

Capítulo 5 Livro do Mário Monteiro Conceituação. Elementos de projeto de memória cache

Organização de Computadores

Memória Cache. Memória Cache. Localidade Espacial. Conceito de Localidade. Diferença de velocidade entre Processador/MP

Memória Virtual. Adriano J. Holanda 1/3/2016

Correção de Erros. Erros de memória de semicondutores podem ser:

Capítulo 7 Gerência de Memória

Gestão de Memória. Algoritmos de Gestão de Memória

Sistemas Opera r cionais Gerência de Memória

Infra-Estrutura de Software

Capítulo 9: Memória Virtual. Operating System Concepts 8th Edition

SSC0112 Organização de Computadores Digitais I

ESTRATÉGIAS DE ALOCAÇÃO AULA 11 Sistemas Operacionais Gil Eduardo de Andrade

Sistemas Operacionais

ARQUITETURA DE COMPUTADORES

Gerenciamento de memória Memória Virtual

Infra-Estrutura de Software

MEMÓRIA CACHE FELIPE G. TORRES

Pesquisa em Memória Secundária. Prof. Jonas Potros

Gerência de Memória As A pe p cto t s d e d P rojeto t

Algoritmos de Gestão de Memória

Plano da aula. Substituição de Páginas. Alocação igualitária. Alocação de quadros. Lembrando: paginação sob demanda

Organização e Arquitetura de Computadores

Organização de um Sistema Operativo

Algoritmos de Substituição de Páginas. Igor Gustavo Hoelscher Renan Arend Rogério Corrêa Medeiros

Infra-Estrutura de Software

Gerenciamento de Memória

Aula 10 Gerenciamento de Memória

Fundamentos de Sistemas Operacionais

MEMÓRIA LÓGICA E FÍSICA (1)

Sistemas Operacionais. Gerência de Memória

Swapping. Desvantagem:

Hierarquia de Memória. Sistemas de Computação André Luiz da Costa Carvalho

LABORATÓRIO DE SISTEMAS OPERACIONAIS. PROFª. M.Sc. JULIANA HOFFMANN QUINONEZ BENACCHIO

Administração de Memória

Transcrição:

- Aula 6-1. Memória Virtual Conceitos Importantes: Princípio da Localidade: Quando um programa que acessa uma porção relativamente pequena do espaço endereçável em um instante qualquer. Por este princípio, uma página acessada provavelmente será acessada novamente. Localidade Temporal: Se um item é referenciado, ele tenderá a ser referenciado novamente. Exemplo: loops (instruções e dados). Localidade Espacial: Se um item é referenciado, itens cujos endereços são próximos a este, tenderão a ser referenciados também. Exemplo: acesso a dados de um array. Um problema que sempre recorre nos computadores e sistemas operacionais é a falta de memória para que arquivos muito grandes ajustem-se ao espaço disponível. A solução no início era dividir o programa em pedaços chamados overlays. Um overlay operava por vez. Tais sistemas eram extremamente complexos, mas permitiam vários overlays na memória que eram comutados entre o disco e a memória. Embora esse trabalho de comutação fosse realizado pelo sistema, o trabalho de dividir o programa em pedaços tinha de ser realizado pelo programador. Um meio de permitir que o próprio sistema operacional faça esse trabalho do programador é denominado Memória Virtual, método inventado por Fotheringham em 1961. 1

A idéia da memória virtual é que o tamanho combinado do programa e dos dados podem exceder o tamanho da memória física disponível. O SO mantém essas partes do programa atualmente em uso na memória principal e o restante em disco. A memória virtual pode trabalhar em um sistema multiprogramável, com pedaços de programas na memória simultaneamente. Enquanto um programa está esperando parte dele próprio ser trazido para a memória, ele fica esperando a E/S e não pode executar. Dessa forma a CPU pode ser dada a outro processo, como em qualquer outro SO. 1.1. Paginação Muitos sistemas de memória virtual utilizam uma técnica chamada paginação. Em qualquer computador, existe um conjunto de endereços de memória que os programas podem produzir. Um programa ao utilizar uma instrução como MOVE REG, 1000 ele está copiando o conteúdo do endereço de memória 1000 para REG. Tais endereços gerados por programa são chamados endereços virtuais e formam o espaço de endereçamento virtual. Estes endereços virtuais são guardados na Unidade de Gerenciamento de Memória (Memory Management Unit - MMU), um chip ou uma coleção de chips que mapeia os endereços virtuais para os endereços físicos. O espaço de endereço virtual é dividido em unidades chamadas páginas. As unidades correspondentes na memória física são chamadas molduras de páginas. Ambas têm sempre o mesmo tamanho. No exemplo elas têm 4Kb, porém é comum que elas tenham tamanhos entre 512 bytes a 64 Kb. 2

Com 65 Kb de endereço virtual e 32 Kb de memória física, temos 16 páginas virtuais e 8 molduras de páginas. As transferências entre memória e disco são sempre em unidades de uma página. Contudo, essa capacidade de mapear as 16 páginas virtuais para qualquer uma das 8 molduras de página não resolve o problema de que o espaço de endereço virtual é maior que a memória física, pois os espaços marcados com X na figura não são mapeados. Caso um programa tente acessar este espaço marcado com um X, gerará uma interrupção chamada falha de página (Page Fault) 1.1.1. Tabela de Páginas O mapeamento de endereços virtuais para endereços físicos se dá quando o endereço virtual é dividido em um número de páginas virtuais e um deslocamento. O número de página virtual é usado como um índice na tabela de páginas para localizar a entrada para essa página virtual. A partir da entrada da tabela de páginas, o número da moldura de páginas é localizado, para assim formar o endereço físico que pode ser enviado para a memória. 3

O propósito da tabela de páginas é mapear páginas virtuais em molduras de páginas. Duas questões devem ser observadas referentes às tabelas de páginas: - A tabela de páginas pode ser extremamente grande; - O mapeamento deve ser rápido. O primeiro ponto é devido aos computadores modernos utilizarem endereços virtuais de 32 bits. O segundo ponto é uma conseqüência do fato de que o mapeamento virtual para disco deve ser feito em cada referência de memória. A necessidade de um mapeamento de páginas rápido e grande é uma limitação significativa na maneira como os computadores são construídos. Existem vários projetos de tabela de páginas. Dentre eles destacam-se dois: O projeto mais simples consiste em ter uma única tabela de páginas em uma matriz de rápidos registradores de hardware, com uma entrada de página para cada página virtual, indexada pelo número de página virtual. Quando um processo é iniciado, o SO carrega os registradores com a tabela de páginas do processo. Durante sua execução as referências não precisam ser mais requeridas. Sua vantagem é que é simples e direto. Sua desvantagem é que é potencialmente caro se a tabela de páginas é grande. Outro projeto, a tabela de páginas pode estar inteiramente na memória principal. Tudo que o hardware precisa, então, é de um único registrador que aponta para o início da tabela de páginas, permitindo que o mapa de memória seja alterado em uma comutação de contexto recarregando um registrador. Tem a desvantagem de exigir que uma ou mais referências de memória leiam entradas da tabela de páginas durante a execução de cada instrução. 4

1.1.2. Algoritmos de Substituição de Páginas O algoritmo de substituição de páginas são políticas definidas para escolher qual(is) página(s) da memória dará lugar a página que foi solicitada e que precisa ser carregada. Isto é necessário quando não há espaço disponível para armazenar a nova página. Um fato que deve ser observado é que a página enquanto carregada sofreu atualizações e precisa ser atualizada no disco. Se ela não foi atualizada não há esta necessidade. As políticas de substituição devem ser empregadas em sistemas que fazem uso de memória virtual paginada no objetivo de melhorar o desempenho do sistema computacional. Os algoritmos podem ser divididos em: - Algoritmos com espaço fixo; - Algoritmos de espaço variável. A diferença está em trabalhar com um endereço fixo de memória e a capacidade de redimensionar o tamanho da memória alocada dinamicamente. 1.1.2.1. FIFO (First-in, First-out) É um algoritmo de baixo custo e de fácil implementação consistindo em substituir a página que foi carregada a mais tempo na memória. Dessa forma a primeira página a entrar é a primeira página a sair. Esta utilização não considera a utilização da página, o que não é muito adequado considerando desempenho do sistema. Por esta razão apresenta uma anomalia denominada anomalia de Belady. Sua principal vantagem é a facilidade de implementação: uma lista de páginas ordenadas pela idade. 1.1.2.2. LRU (Least Recently Used) Apresenta um bom desempenho substituindo as páginas menos recentemente usadas. Se a página está sendo intensamente referenciada pelas instruções é provável que ela seja novamente referenciada pelas instruções seguintes. De modo oposto, aquelas que não são acessadas é provável que continuem não sendo acessadas. Apesar de apresentar um bom desempenho, apresenta algumas deficiências quando o padrão de acesso não é seqüencial (lista, árvores, loops). Dessa forma existem algumas variações como, por exemplo, o LRU-K. 5

Sua implementação pode ser realiza através de lista, mantendo as páginas mais referenciadas no início. No entanto o curso de manutenção é alto devido as constantes atualizações na lista para manter as mais acessadas no topo da lista. 1.1.2.3. MRU (Most Recently Used) Faz a substituição da última página acessada. Com isso é possível explorar com mais eficiência o princípio da localidade temporal apresentada pelos acessos. 1.1.2.4. NRU (Not Recently Used) Procura por páginas que não foram referenciadas nos últimos acessos. Esta informação é obtida através de um bit de modificação. A substituição segue uma precedência: - Páginas não referenciadas e não alteradas; - páginas não referenciadas; - Páginas não modificadas; e - Páginas referenciadas e modificadas. 1.1.2.5. MFU (Least Frequently Used) Escolhe a página que foi menos acessada. Para isto é mantido um contador de acessos associados a cada página para que a verificação possa ser realizada. Esta informação é zerada a cada vez que a página deixa a memória. 1.1.2.6. MFU (Most Frequently Used) Substitui a página que tem sido mais referenciada, o oposto do LFU. O controle também é realizado através de contador de acesso. Seu maior problema é ignorar o princípio da localidade temporal. 1.1.2.7. WS (Working Set Espaço de Trabalho) Possui a mesma política do LRU. No entanto não realiza apenas a substituição de página, mas também estabelece um tempo máximo que cada página pode permanecer ativa na memória. 6

Dessa forma o número de páginas ativas é variável. O WS assegura que as páginas pertencentes ao working set processo permaneceram ativas na memória. Dentro de uma política de busca de páginas o WS é um conjunto de páginas que um processo está atualmente usando. Verifica-se que, para intervalos de tempos razoáveis, o espaço de trabalho de um processo mantém-se constante e menor que o seu espaço de endereçamento. Se todo WS está presente na memória, o processo será executado em poucas Page Fault 1 até passar para a próxima fase do programa, quando o WS será atualizado. 1.1.3. Tamanho da Página Páginas pequenas: na média, metade da página final de qualquer segmento é desperdiçada (fragmentação interna); um programa que consiste em processos pequenos pode executar utilizando menos memória quando o tamanho da página é pequeno. Páginas grandes: quanto menor o tamanho da página, maior o tamanho da tabela de páginas; quando uma página precisa ser carregada na memória, temos um acesso ao disco, com os correspondentes tempos de busca e espera de setor, além do de transferência. Se for transferido uma quantidade maior de bytes a cada acesso, diminuir-se-a a influência dos dois primeiros fatores do tempo, aumentando a eficiência. Se o processador central precisa alterar registradores internos referente à tabela de páginas a cada chaveamento de processo, então páginas maiores necessitarão menos registradores, o que significa menor tempo de chaveamento de processos. Em suma: A página pequena: - Evita fragmentação interna; - Evita que partes não usadas do programa ocupem a memória desnecessariamente; - Implicam tabelas de páginas grandes; - Tempo de transferência do disco para a memória é maior quando páginas pequenas são utilizadas. A página grande: Vice-versa 1 Página Inválida 7

1.2. Segmentação Na segmentação o espaço de endereçamento da memória virtual deixa de ser um só e passa a ser vários, chamados segmentos. Na memória virtual da paginação tínhamos uma grande memória virtual linear e do mesmo tamanho. Na segmentação, temos vários segmentos de tamanhos diferentes e não lineares; Pelo fato de segmentos diferentes serem completamente independentes eles pode crescer ou diminuir o tanto que quiserem. O acesso a um segmento é dado através de um endereço de duas partes, a saber: - número do segmento; e - posição de memória; Normalmente um segmento comporta tipos parecidos de informação (uma pilha, uma biblioteca dll, um procedimento); Cada segmento representa um espaço de endereçamento completamente independente, onde: - Cada segmento é uma seqüência linear de endereços, de 0 ao máximo permitido - O tamanho de cada segmento pode ser qualquer um, de 0 ao máximo permitido Segmentos têm uma relação com a lógica do programa, facilitando a proteção, uma vez que segmentos são uma porção semanticamente definida do programa, todas as entradas serão usadas do mesmo modo: - Segmento de instruções - Segmento de dados - Segmento de pilha 8

As páginas não têm essa conotação De igual forma a segmentação facilita o compartilhamento, pois este ocorre no nível do segmento e qualquer informação pode ser compartilhada, se definida como um segmento Se houverem mais segmentos do que a memória física é capaz de suportar será necessário implementar a Troca de segmentos. E se um segmento não couber inteiramente na memória, será necessária a paginação de segmentos. Um segmento corresponde exatamente a uma parte de um programa definida significantemente. Já que os segmentos são de tamanhos diferentes, enquanto eles são carregados e descarregados da memória principal, as sobras de espaços da memória variam em tamanho. Algumas vezes, muitos espaços pequenos aparecem na memória principal, e eles podem ser tão pequenos que não são usados. Isso é chamado de fragmentação e é um sério problema em sistemas de segmentação. 9

1.3. Paginação x Segmentação A Paginação foi inventada para fornecer um espaço de endereçamento linear maior que o espaço de endereçamento real.a Segmentação veio para facilitar compartilhamento e proteção; A lógica do programa é mapeada para blocos de informação independentes na memória Alguns sistemas combinam paginação e segmentação. As partes lógicas do programa e coleções de dados correspondem aos segmentos, e cada segmento é dividido em páginas de tamanho fixo por conveniência na localização das partes na memória principal. 1.4. Considerações de Projeto para Sistemas de Paginação (Texto de Alex De Francischi Coletta) 1.4.1. Modelo de Conjunto Ativo (Working Set) Num sistema puro de paginação (paginação por demanda), o sistema começa sem nenhuma página na memória e elas vão sendo carregadas na medida em que forem necessárias. Podemos melhorar essa estratégia, para isso devemos considerar a existência na grande maioria dos processos de uma localidade de referências, isto é, os processos mantêm em cada uma das fases de sua execução, referências a frações pequenas do total do número de páginas necessárias a ele. Então surge o conceito de conjunto ativo, que é o conjunto de páginas correntemente em uso de um dado processo. Se todo o conjunto ativo de um processo estiver na memória principal, ele executará sem gerar page faults. Mas se não houver espaço para todo o conjunto ativo de um processo, este gerará muitos page faults, ocasionando a diminuição do seu tempo de execução devido a necessidade de constantes trocas de páginas entre memória e disco. Temos o conceito de thrashing que ocorre quando um processo gera muitos page faults em poucas instruções. Devemos determinar qual é o working set do processo e carregá-lo na memória antes de permitir a execução do processo. Este é o chamado modelo do conjunto ativo. Pré-paginação é o ato do carregamento adiantado das páginas (antes da ocorrência do page fault para as mesmas). Considerações com relação aos tamanhos dos working set: se a soma total dos working set de todos os processos residentes em memória é maior que a quantidade de memória disponível, então ocorre thrashing. (OBS: os processos residentes na memória são aqueles que o escalonador de baixo nível utiliza para a seleção do atualmente em execução. 10

O escalonador em alto nível é o responsável pela troca dos processos residentes em memória a certo intervalo de tempo). Então devemos escolher os processos residentes em memória de forma que a soma de seus working set não sejam maiores que a quantidade de memória disponível. Para determinar quais as páginas de um processo que fazem parte de seu working set, pode-se utilizar o algoritmo de aging, considerando como parte do working set apenas as páginas que apresentarem ao menos um bit em 1 em seus primeiros n bits, isto é, qualquer página que não seja referenciada por n bits consecutivos é retirada do working set do processo. 11