Prof. Kleber R. Rovai

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

Fundamentos de Sistemas Operacionais

Gerenciamento de Memória

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

SSC0640 Sistemas Operacionais I

Sistemas Opera r cionais Gerência de Memória

Infra-Estrutura de Software IF677

Memória virtual. Pedro Cruz. EEL770 Sistemas Operacionais

Capítulo 4 Gerenciamento de Memória

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

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

GERENCIAMENTO DE MEMÓRIA

Organização e Arquitetura de Computadores I

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

Sistemas Operacionais

Gerência de memória III

Sistemas Operacionais

Gerência de Memória. Execução de um Programa (1) Introdução. Introdução

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

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

ARQUITETURA DE COMPUTADORES

SISTEMAS OPERACIONAIS

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

Gerência de Memória. Gerência de Memória Introdução e Particionamento. Novo capítulo. Aulas anteriores. Plano da aula. Memória lógica & física

Arquitetura e Organização de Computadores

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

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

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

Gerenciamento de Memória

Gerência de memória II


Organização de um Sistema Operativo

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

Organização e Arquitetura de Computadores I

Introdução. Considerações:

EA075 Memória virtual

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

SSC0640 Sistemas Operacionais I

SSC0640 Sistemas Operacionais I

Fundamentos de Sistemas Operacionais

Sistemas Operacionais

Gerenciamento de Memória

GERÊNCIA DE MEMÓRIA. INF009 Laboratório de Sistemas Operacionais

Sistemas Operacionais

AULA 14 - Memória Virtual

Segmentação de Memória

Gerenciamento de Memória

Notas de Aula Guilherme Sipahi Arquitetura de Computadores

Gerenciamento de memória

Gerenciamento de Memória

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

Arquitetura e Organização de Computadores

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

Organização e Arquitetura de Computadores

Gerenciamento de Memória

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

Entrada e Saída e Dispositivos

Gestão de Memória. Espaço de Endereçamento

Hardware: Componentes Básicos. Sistema de Computador Pessoal. Anatomia de um Teclado. Estrutura do Computador. Arquitetura e Organização

Principais componentes de hardware de um computador. Processador; Entrada; Saída; Barramento; Memória.

Modelo de Von Neumann: conceito do programa armazenado

Substituição de Páginas

Parte I Multiprocessamento

Sistemas Operacionais II. Linux 2: Threads, Escalonamento, Gerenciamento de Memória e Sistemas de Arquivos

Entrada/Saída. Capítulo 5. Sistemas Operacionais João Bosco Junior -

Memória. Gestão do espaço lógico Paginação Segmentação com paginação

DEFINIÇÃO É TODO AQUELE DISPOSITIVO CAPAZ DE ARMAZENAR INFORMAÇÃO. A

Gestão de Memória. Espaço de Endereçamento

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

PCS-2529 Introdução aos Processadores. Prof. Dr. Paulo Sérgio Cugnasca

Capítulo 6 Nível do Sistema Operacional

Níveis de memória. Diferentes velocidades de acesso. Memória Cache. Memórias Auxiliar e Auxiliar-Backup

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

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

Fundamentos da Informática Aula 03 - Sistemas operacionais: Software em segundo plano Exercícios Professor: Danilo Giacobo

Sistemas Operacionais. Sistema de entrada e Saída

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

Organização e Arquitetura de Computadores I

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

Infra-Estrutura de Software

Gerência de Memória. Gerência de memória. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos. Memória: UCP. Unidade de controle

Gerência de Memória. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 45

Memória. Memória Cache

Infra-Estrutura de Software

SOP - TADS Gerência de Memória Cap 3 Tanenmbaum

Sistemas Operacionais Aula 12: Gerência de Memória. Ezequiel R. Zorzal

Sistemas Operacionais

Infra-Estrutura de Software

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

Sistemas Operacionais: Memória Virtual

INTRODUÇÃO A SISTEMAS DE ARQUIVO E GERENCIA DE MEMÓRIA

Prof. Adriano Maranhão

Gerenciamento de memória

Exercícios de revisão V2

Sistemas Operacionais I Memória Virtual

Sistemas Operativos: Gestão de Memória

Introdução à Informática

Sistemas Operacionais. BSI / UAB 2013 Hélio Crestana Guardia

GERENCIAMENTO DE PROCESSOS

Transcrição:

Msn: klrovai@hotmail.com E-mail: Skype: klrovai 2 1

2

Idealmente, o que todo programador deseja é dispor de uma memória que seja: Grande; Rápida; não volátil. Hierarquia de memórias: pequena quantidade de memória rápida, de alto custo cache; quantidade considerável de memória principal de velocidade média, custo médio; gigabytes de armazenamento em disco de velocidade e custo baixos; O gerenciador de memória trata a hierarquia de memórias. 5 Memórias não voláteis São aquelas que guardam todas as informações mesmo quando não estiverem a receber alimentação. Como exemplos, citam-se as memórias conhecidas por ROM e FLASH, bem como os dispositivos de armazenamento em massa, disco rígido, CDs e disquetes. As memórias somente para leitura, do tipo ROM (sigla de Read Only Memory), permitem o acesso aleatório e são conhecidas pelo facto de o usuário não poder alterar o seu conteúdo. Para gravar uma memória deste tipo são necessários equipamentos específicos. Memórias voláteis Memórias voláteis são as que requerem energia para manter a informação armazenada. São fabricadas com base em duas tecnologias: dinâmica e estática. 6 3

Memória dinâmica A memória dinâmica é a mais barata delas e, portanto, a mais utilizada nos computadores e são aquelas que foram popularizadas como memórias RAM. Memória estática A memória estática não necessita ser analisada ou recarregada a cada momento. Fabricada com circuitos eletrônicos conhecidos como latch, guardam a informação por todo o tempo em que estiver a receber alimentação. Latch é um circuito sequencial biestável assíncrono, ou seja, é um circuito constituído por portas lógicas, capaz de armazenar um bit de informação. 7 Divididos em duas classes: Sistemas que, durante a execução levam e trazem processos entre a memória principal e o disco (troca de processos e paginação); Sistemas mais simples, que não o fazem (monoprogramação) 8 4

Quando se utiliza o esquema mais simples de gerenciamento de memória, a memória é compartilhada entre o programa e o sistema operacional e somente um programa é executado por vez. Monoprogramação é usada raramente hoje em dia, a não ser em sistemas embarcados simples. Podem haver três variações desse modo: 9 O sistema operacional pode estar na base do espaço de endereçamento, em RAM (memória de acesso aleatório); Estar no topo do espaço de endereçamento, em ROM (memória apenas de leitura); ou os drivers de dispositivos podem estar no topo do espaço de endereçamento, em ROM, e o restante do sistema mais abaixo, em RAM 10 5

11 O primeiro modelo foi inicialmente empregado em computadores de grande porte e minicomputadores, mas praticamente não é mais usado. O segundo modelo é utilizado em alguns computadores de mão (palmtop) e em sistemas embarcados. O terceiro modelo fez parte dos primeiros computadores pessoais (com sistema MS-DOS, por exemplo), nos quais a parte do sistema contida em ROM é denominada BIOS (basic input output system - sistema básico de E/S) 12 6

Nesses moldes, somente um processo pode ser executado a cada instante. Quando um usuário tecla um comando, o sistema operacional carrega o programa solicitado do disco na memória e o executa. Quando o processo finaliza, o sistema operacional coloca na tela um caractere de prompt e espera por um novo comando. Ao receber um novo comando, carregará o novo programa na memória, no espaço de endereçamento ocupado pelo Programa anterior. 13 Multiprogramação aumenta a utilização da CPU. A maneira mais comum de realizar a multiprogramação consiste em simplesmente dividir a memória em n partições, normalmente de tamanhos diferentes. Essa partição pode, por exemplo, ser feita de modo manual quando o sistema for inicializado. 14 7

Um job, ao chegar, pode ser colocado em uma fila de entrada associada à menor partição, mas grande o suficiente para armazená-lo. Como o tamanho das partições é fixo nesse esquema, todo espaço de uma partição não usado pelo job é perdido. 15 Partições fixas de memória a) filas de entrada separadas para cada partição b) fila única de entrada 16 8

A desvantagem da ordenação em filas separadas dos jobs que estão chegando torna-se evidente quando a fila para uma grande partição está vazia, mas a fila para uma pequena partição está cheia. Uma solução seria haver pelo menos uma partição pequena. Essa partição permitiria a execução de jobs pequenos sem a necessidade de alocação de uma partição grande. 17 Quando optamos por multiprogramar um processador, sua utilização poderá ser bastante otimizada. Colocando a questão de uma forma bem grosseira, se um processo gasta em média 20% do tempo em que está armazenado na memória principal usando efetivamente o processador, com 5 processos ao mesmo tempo na memória, o processador ficará ocupado o tempo todo. 18 9

Este modelo é muito otimista e irreal, uma vez que assume que nunca dois ou mais processos estarão esperando por entrada/saída ao mesmo tempo. Um modelo mais realista procura considerar o uso do processador de forma probabilística. 19 Suponha que determinado processo gaste uma fração p de seu tempo, esperando por entrada/saída. Com n processos na memória ao mesmo tempo, a probabilidade de todos eles aguardarem por entrada/saída ao mesmo tempo, caso em que o processador estará ocioso, é p n. Neste caso, o uso do processador será dado pela fórmula: uso do processador = 1 p n 20 10

Maioria dos processos é CPU-Bound Maioria dos processos é IO-Bound Utilização da CPU como uma função do número de processos na memória 21 Não se sabe com certeza onde o programa será carregado na memória; Localizações de endereços de variáveis e de código de rotinas não podem ser absolutos. Uma possível solução: instruções do programa são modificadas segundo a partição de memória em que ele será carregado. Uma outra solução seria: uso de valores base e limite. localizações de endereços são somadas ao valor base antes de serem mapeadas na memória física; localizações de endereços maiores que o valor limite indicam erro; 22 11

Em um sistema em lote, é simples e eficiente organizar a memória em partições fixas. Cada job é carregado em uma partição ao alcançar o início da fila e permanece na memória até a conclusão de sua execução. Se puder manter em memória um número suficiente de jobs para garantir que a CPU esteja ocupada todo o tempo, não existirá razão alguma para o uso de qualquer outra técnica mais complicada. 23 Em sistemas com compartilhamento de tempo ou computadores gráficos pessoais, a situação é diferente. Às vezes não há memória principal suficiente para conter todos os processos ativos, de modo que os excedentes devem ser mantidos em disco e trazidos dinamicamente para a memória a fim de serem executados. Dois métodos para o gerenciamento de memória podem ser usados, dependendo (em parte) dos recursos de hardware disponíveis. 24 12

O mais simples, chamado troca de processos (swapping), consiste em trazer totalmente cada processo para a memória, executá-lo durante um certo tempo e então devolvê-lo ao disco. A outra estratégia, denominada memória virtual, permite que programas possam ser executados mesmo que estejam apenas parcialmente carregados na memória principal. 25 Alterações na alocação de memória à medida que processos entram e saem da memória; Regiões sombreadas correspondem a regiões de memória não utilizadas naquele instante 26 13

A flexibilidade em não estar amarrado a um número fixo de partições - as quais podem ser muito grandes ou muito pequenas melhora a utilização da memória, entretanto, complica a alocação e a liberação de memória e o gerenciamento dessas trocas. Quando as trocas de processos deixam muitos espaços vazios na memória, é possível combiná-los todos em um único espaço contíguo de memória, movendo-os, o máximo possível, para os endereços mais baixos. Essa técnica é denominada compactação de memória. 27 Se o esperado é que a maioria dos processos cresça durante a execução, provavelmente será uma boa ideia alocar uma pequena memória extra sempre que se fizer a transferência de um processo para a memória ou a movimentação dele na memória. Para reduzir o custo (extra) associado à movimentação ou à transferência de processos que não mais cabem na memória alocada a eles. 28 14

Alocação de espaço para uma área de dados em expansão Alocação de espaço para uma pilha com código e uma área de dados, ambos em expansão 29 Se essa porção de memória assim situada for toda ocupada, então o processo terá de ser movido para outra área com espaço suficiente ou ser transferido para disco e esperar até que uma área de memória grande o bastante fique disponível ou ser exterminado. 30 15

Quando a memória é alocada dinamicamente, o sistema operacional deve gerenciá-la. Em duas maneiras: com mapa de bits e; lista encadeada e lista de disponíveis. 31 Com um mapa de bits, a memória é dividida em unidades de alocação, que podem conter apenas poucas palavras ou ter vários quilobytes (Kb). Associado a cada unidade de alocação existe um bit no mapa de bits, o qual vale 0 se a respectiva unidade de alocação estiver disponível e 1 se estiver ocupada (ou viceversa) 32 16

a) Parte da memória com 5 segmentos de processos e 3 segmentos de memória livre: pequenos riscos simétricos denotam as unidades de alocação; regiões sombreadas denotam segmentos livres. b) Mapa de bits correspondente. c) Mesmas informações em uma lista encadeada. 33 Outra forma de gerenciar o uso de memória é manter uma lista encadeada de segmentos de memória alocados e de segmentos de memória disponíveis. Um segmento é uma área de memória alocada a um processo ou uma área de memória livre situada entre as áreas de memória de dois processos. A lista de segmentos é mantida ordenada por endereço. Essa ordenação apresenta a vantagem de permitir uma atualização rápida e simples da lista sempre que um processo terminar sua execução ou for removido da memória. 34 17

A ideia básica é que o tamanho total do programa - ou seja, seu código mais seus dados e a pilha - pode exceder a quantidade de memória física disponível para ele. O sistema operacional mantém as partes ativas do Programa na memória e o restante em disco. A memória virtual também é possível em um sistema com multiprogramação, com pedaços e partes de diferentes programas simultaneamente na memória. 35 Se um programa estiver esperando por outra parte de si próprio ser carregada na memória, ele estará consequentemente esperando por E/S, e não estará apto a ser executado, de modo que a CPU poderá ser entregue a outro processo, como acontece em qualquer sistema com multiprogramação. 36 18

Paginação técnica utilizada na maioria dos sistemas com memória virtual. Em qualquer computador existe um conjunto de endereços de memória que os programas podem gerar ao serem executados. Ex: MOV REG, 1OOO Endereços podem ser gerados com o uso da indexação, de registradores-base, registradores de segmento ou outras técnicas. 37 Esses endereços gerados pelo programa são denominados endereços virtuais e constituem o espaço de endereçamento virtual. Em computadores sem memória virtual, o endereço virtual é idêntico ao endereço físico e, assim, para ler ou escrever uma posição de memória, ele é colocado diretamente no barramento da memória. Em computadores com memória virtual, ele geralmente não é idêntico ao endereço físico e, desse modo, não é colocado diretamente no barramento da memória. 38 19

Em vez disso, ele vai a uma MMU (Memory Management Unit - unidade de gerenciamento de memória), que mapeia endereços virtuais em endereços físicos. O espaço de endereçamento virtual é dividido em unidades denominadas páginas (pages). As unidades correspondentes em memória física são denominadas molduras de página (page frames). As páginas e as molduras de página são sempre do mesmo tamanho. As transferências entre memória e disco são sempre em unidades de uma página. 39 Em vez disso, ele vai a uma MMU (Memory Management Unit - unidade de gerenciamento de memória), que mapeia endereços virtuais em endereços físicos. O espaço de endereçamento virtual é dividido em unidades denominadas páginas (pages). As unidades correspondentes em memória física são denominadas molduras de página (page frames). As páginas e as molduras de página são sempre do mesmo tamanho. As transferências entre memória e disco são sempre em unidades de uma página. 40 20

Localização e função da MMU 41 O objetivo da tabela de páginas é mapear páginas virtuais em molduras de página física. A tabela de páginas é uma função que usa o número da página virtual como argumento e tem o número da moldura de página física correspondente como resultado. Usando o resultado dessa função, o campo que endereça a página virtual do endereço virtual pode ser substituído pelo campo que endereça a moldura de página física, formando assim um endereço da memória física. Dois pontos importantes devem ser considerados: 1. A tabela de páginas pode ser extremamente grande. 2. O mapeamento deve ser rápido. 42 21

O primeiro ponto é consequência do fato de os modernos computadores utilizarem endereços virtuais de pelo menos 32 bits. Com um milhão de páginas virtuais no espaço de endereçamento virtual, a tabela de páginas deve ter um milhão de entradas. Cada processo necessita de sua própria tabela de páginas (pois cada um tem seu próprio espaço de endereçamento virtual). 43 O segundo ponto advém do fato de o mapeamento virtualfísico ser feito em todas as referências à memória. Uma instrução típica localiza-se em uma palavra da memória, e muitas vezes cada um de seus operandos também. Consequentemente, é necessário fazer, por instrução, uma, duas ou às vezes mais referências à tabela de páginas virtuais. Ex: Se uma instrução gastar 4 ns em sua execução, então a pesquisa na tabela de páginas deverá ser feita em menos de 1 ns para evitar que se torne um gargalo em potencial. 44 22

Diversos computadores utilizam tabelas de páginas em múltiplos níveis, a fim de minimizar o problema de continuamente armazenar tabelas de páginas muito grandes na memória. O segredo para o método multinível de tabelas de páginas é evitar que todas elas sejam mantidas na memória o tempo todo, especialmente aquelas que não são necessárias. 45 a) Endereço de 32 bits com 2 campos (PT1, PT2) para endereçamento de tabelas de páginas b) Tabelas de páginas com 2 níveis 46 23

Embora o espaço de endereçamento contenha mais de um milhão de páginas virtuais, somente quatro tabelas de páginas são realmente necessárias: a tabela de nível 1 e as três tabelas de nível 2. Esse sistema da tabela de páginas em dois níveis pode ser expandido para três, quatro ou mais níveis. Níveis adicionais permitem maior flexibilidade, embora seja duvidoso que essa complexidade adicional do hardware continue vantajosa além dos três níveis. 47 Na maioria dos esquemas de paginação, as tabelas de páginas são mantidas na memória devido a suas grandes dimensões. Mas essa decisão tem um enorme impacto no desempenho. Ex: uma instrução que copie o conteúdo de um registrador para outro. Na ausência de paginação, essa instrução faz um único acesso à memória para buscar a própria instrução. Com a paginação, serão necessários acessos adicionais à memória para acessar a tabela de páginas. 48 24

Como a velocidade de execução é geralmente limitada pela frequência com que a CPU pode acessar instruções e dados na memória, o fato de haver a necessidade de dois acessos à tabela de páginas por referência à memória reduz o desempenho em 2/3. Nessas condições, ninguém usaria paginação. Como solução foi equipar os computadores com um pequeno dispositivo em hardware para mapear os endereços virtuais para endereços físicos sem passar pela tabela de páginas. 49 Denominado de TLB (translation lookaside buffer - tabela de tradução de endereços) ou às vezes memória associativa, localizado dentro da MMU e consiste em um pequeno número de entradas. Cada entrada contém informações sobre uma página, e esses campos têm uma correspondência de um para um com os campos da tabela de páginas. 50 25

Vimos que toda máquina com memória virtual paginada tem reconhecimento por hardware das tabelas de páginas e também uma TLB. Assim, o gerenciamento e o tratamento na TLB são feitos totalmente pelo hardware da MMU. Desvios para o sistema operacional (traps) só ocorrem quando uma página não está na memória. 51 Muitas das máquinas hoje, com RISC, dentre elas SPARC, MIPS, Alpha e HP PA, fazern quase todo esse gerenciamento por software. Nessas máquinas, as entradas da TLB são explicitamente carregadas pelo sistema operacional. Quando ocorre uma ausência de página na TLB, em vez de a própria MMU buscar na tabela de páginas a página virtual requisitada, ela apenas gera uma interrupção (trap) e repassa o problema ao sistema operacional. 52 26

O sistema operacional deve então encontrar a página virtual na tabela de páginas, destituir uma das entradas da TLB, inserir aí a nova página virtual e reiniciar a instrução interrompida. Tudo isso deve ser feito para muitas instruções, pois as ausências de página (misses) na TLB ocorrem muito mais frequentemente do que as faltas de página (page faults) na tabela de páginas. 53 O modo normal de tratar uma ausência de página na TLB, seja por hardware seja por software, é acessar a tabela de páginas e executar as operações de indexação para localizar a página referenciada não encontrada na TLB. O problema em se fazer essa pesquisa por software é que as páginas que contêm a tabela de páginas podem não estar mapeadas na TLB, ocasionando ausências adicionais na TLB durante esse tratamento. 54 27

Essas ausências podem ser reduzidas se um grande cache em memória (de 4 KB, por exemplo), contendo a TLB, for mantido em uma localização fixa e com a página que contém a tabela de páginas sempre mapeada na TLB. Verificando primeiramente esse cache, o sistema operacional pode reduzir substancialmente as ausências de página na TLB. 55 28