• Nenhum resultado encontrado

Aula11 Memoria

N/A
N/A
Protected

Academic year: 2021

Share "Aula11 Memoria"

Copied!
103
0
0

Texto

(1)

Sistemas Operacionais

(2)
(3)

O que vimos até aqui

• Estudo de processos

• O que é um processo

• Como escalonar processos

• Como sincronizar processos

• Como tratar os principais problemas relacionados a

sincronização: deadlocks e starvation

(4)
(5)
(6)
(7)

Por que gerenciar memória?

• O principal objetivo do sistema de computação é

executar programas (programas + dados).

• Para isso, os programas e dados devem ser

armazenados em memória.

• Para melhor utilizar a CPU e garantir velocidade na

resposta ao usuários, vários programas

(processos) devem ser armazenados na memória ao mesmo tempo.

(8)

Execução dos Programas

• O procedimento normal é selecionar um processo na

fila de entrada e carregar esse processo na memória para que possa ser executado.

• A medida que o processo é executado, ele acessa

instruções e dados da memória.

• Ao terminar a execução do processo, o seu espaço de

memória é liberado.

• O processo pode ser movido entre o disco e a

(9)

programa 1 Disco Rígido programa 2 programa 3 programa 4 programa 5 programa 6 programa 1 Memória Fila de Entrada programa 2 programa 3 arquivos binários processos

(10)

Mapeamento de Endereços

• As informações de um programa são armazenadas

na memória e identificadas por um endereço de memória.

• Para ser executado, o programa passa por uma

série de etapas e os endereços de memória

podem ser representados de diferentes formas ao longo destas etapas.

(11)

programa fonte compilador ou montador módulo objeto linkeditor módulo de carga carregador imagem binária na memória tempo de
 compilação tempo de
 carga tempo de
 execução

(12)

compilador ou montador linkeditor carregador Endereços Simbólicos Endereços Relocáveis Endereços Físicos Mapeamento de Endereço Mapeamento de Endereço

(13)

Mapeamento de Endereços

• A associação de instruções e dados com endereços

de memória pode ser feita em qualquer etapa da vida de um programa

• Eles diferem basicamente de quando um processo

poderá ser movido para a memória

• Em tempo de compilação • Em tempo de carga

(14)

Endereço Lógico versus

Endereço Físico

• Endereço Lógico (ou virtual): endereço gerado pela

CPU

• Endereço Físico: endereço visto pela unidade de

memória

• Os métodos de resolução de endereço em tempo de

compilação produzem endereços lógicos e físicos iguais.

• No método em tempo de execução, os endereços

(15)

CPU

MMU"

(Memory Management Unity)

Memória

+

endereço
 lógico 346 registrador de
 relocação 14000 endereço
 físico 14346

(16)

Espaço de Endereçamento

Espaço de endereçamento lógico: conjunto de

todos os endereços lógicos.

Espaço de endereçamento físico: conjunto de

todos os endereços físicos.

• O conceito de um espaço de endereçamento

lógico que é associado a um espaço de

endereçamento físico é central a uma gerência de memória adequada.

(17)

Carga Dinâmica

• Como dito, um programa para ser executado tem que está

na memória. o tamanho do processo é limitado pelo tamanho da memória física.

• Para um melhor aproveitamento do espaço de memória,

fazemos o uso de carga dinâmica.

• Uma rotina só é carregada quando chamada. Se uma

rotina nunca é chamada, ela nunca vai ser alocada na memória .

• O sistema operacional não fornece suporte a tal ação.

(18)

Biblioteca Dinâmica

• Os programas acessam diversas bibliotecas.

• Existem sistemas operacionais que trabalham apenas com

bibliotecas estáticas. Cada processo carrega a biblioteca na imagem binária.

• No caso das bibliotecas dinâmicas, uma única versão da

biblioteca é compartilhada entre os processos que a usam.

• Economiza espaço em disco e memória principal

• Um pequeno trecho de código (stub) determina como localizar

a rotina da biblioteca apropriada residente na memória ou como carregar a biblioteca se a rotina não estiver presente.

(19)

Como executar processos maiores que a

memória alocada a ele?

(20)
(21)

Overlays

• Manter na memória apenas as instruções e dados

que são necessários em determinado momento.

• Por exemplo, é possível executar um programa

(22)

Overlays

• Considere um montador que executa suas ações em

dois passos: (1) constrói uma tabela de símbolos e (2) gera um código de linguagem de máquina.

• Passo 1 - 70k • Passo 2 - 80k

• Tabela de Símbolos - 20k • Rotinas Comuns - 30k

(23)

tabela de símbolos rotinas comuns drive overlay Passo 1 Passo 2 20k 30k 10k 80k 70k 140k 130k Memória de 150k Overlay A Overlay B

(24)

Overlays

O código do overlay A e do overlay B são

mantidos no disco como imagens de memória absoluta e são lidos pelo drive de overlay

conforme necessário.

• O programa será carregado mais rápido (menos

informação a ser colocada na memória).

• O programa será executado mais lento (operação

(25)

Overlays

• Não é simples programar um overlay. O

programador deve ter um grande conhecimento sobre o programa, seus código e estrutura de

dados.

• O seu uso está limitado a microcomputadores e

outros sistemas que possuem quantidade limitada de memória física e que não tenham suporte a

(26)
(27)

Swapping

• Um processo precisa estar na memória para ser

executado.

• No entanto, um processo pode ser removido

temporariamente da memória para um

armazenamento auxiliar, e em seguida, retomado a memória para continuar sua execução.

(28)

Swapping

(29)

Swapping

Exemplo: Escalonamento Round-Robin

• Quando o quantum expirar, o gerenciador de

memória faz:

Swap out: descarrega o processo que

expirou.

Swap in: carrega outro processo para espaço

(30)

Swapping

Exemplo: Escalonamento Round-Robin

• Enquanto a memória substitui os processos, o

escalonado de CPU seleciona outro processo da memória para colocar em execução

• Idealmente, o gerenciador de memória é rapido

suficiente para garantir que sempre haverá processos na memória para que o escalonador coloque em

execução.

• Uma variante dessa abordagem utiliza o prioridade dos

(31)

Swapping

• Quando o processo que foi retirado da memória

(32)

Swapping

• Quando o processo que foi retirado da memória

retorna, onde ele fica alocado?

• Depende do método de resolução de endereço • Carga ou montagem: um processo que é

carregado será carregado para o mesmo espaço de memória

• Tempo de execução: é possível alocar o processo

para outro endereço, uma vez que os endereços físicos são calculados em tempo de execução.

(33)

Processo 1 Processo 2 swap out swap in espaço de usuário Sistema
 Operacional Armazenamento
 Auxiliar

Disco rígido grande
 e de acesso direto

Fila de prontos: todos os processos cujas imagens da memória esteja no armazenamento


(34)

Swapping

• Como funciona o escalonamento nesse tipo de sistema?

O dispatcher é acionado sempre que o escalonador executa

um processo

O dispatcher verifica se o próximo processo está na memória • Se não estiver e não exister espaço de memória livre, o

dispatcher descarrega um processo que está na memória

(swap out) e carrega o processo desejado no seu lugar (swap in).

• Em seguida, ele recarrega os registradores da forma usua; e

(35)

Swapping

• O tempo de troca de contexto nesses casos é

relativamente alto.

• Além disso, existe limitações para realizar a troca: • O usuário precisa manter o sistema informado

sobre qualquer mudança nos requisitos de memória.

• É preciso ter certeza que o processo está

(36)

Swapping

• Atualmente, o procedimento de troca padrão é

usado em poucos sistemas. Ele requer um tempo excessivo de trica e fornece pouco tempo de

execução.

• Existe uma versão modificada dessa abordagem

utiliza no UNIX:

• o swapping só é acionado se muitos processos

estiverem executando e usando um valor limitado de memória.

(37)

Alocação Contígua de

Memória

(38)

Alocação Contígua de

Memória

• A memória deve permitir acomodar o sistema

operacional e vários processos ao mesmo tempo.

• Geralmente, a memória é dividida em partições:

uma para o sistema operacional e outra para processos do usuário

(39)

Alocação Contígua de

Memória

• Como alocar memória disponível aos vários

processos que estão na fila de entrada esperando para serem carregados?

• Uma vez que vários processos estão dividindo a

memória, como proteger o SO contra processos de usuários e proteger os processos de usuário um

(40)

Alocação Contígua de

Memória

• Como alocar memória disponível aos vários

processos que estão na fila de entrada esperando para serem carregados?

• Uma vez que vários processos estão dividindo a

memória, como proteger o SO contra processos de usuários e proteger os processos de usuário um

(41)

CPU

<

+

Memória

Registrador de Limite

Registrador de Relocação

exceção, erro de endereçamento

SIM NÃO Endereço
 Lógico Endereço
 Físico

(42)

Alocação Contígua de

Memória

• Como acontece o escalonamento?

• Escalonador seleciona um processo em execução

• Carrega os registradores de relocação e limite com

os valores corretos como parte da troca de contexto

• Como todo endereço é gerado pela CPU é verificado

em relação a esses registradores, podemos proteger o sistema operacional, processos e dados.

(43)

Alocação Contígua de

Memória

• Como alocar memória disponível aos vários

processos que estão na fila de entrada esperando para serem carregados?

• Uma vez que vários processos estão dividindo a

memória, como proteger o SO contra processos de usuários e proteger os processos de usuário um

(44)

Alocação Contígua de

Memória

• Método mais simples

• Divide a memória em várias partições de tamanho

fixo que contém exatamente 1 processo

• Quando o processo finaliza sua execução, a

partição é liberada para outro processo.

• O grau de multiprogramação é limitado pelo

(45)

Processo

(46)

Alocação Contígua de

Memória

• Uma solução é utilizar o método MVT, uma generalização do

método anterior.

• Nesse método, o SO possui uma tabela que informa que partes

da memória estão disponíveis e que partes estão ocupadas.

• Quando um processo chega e precisa de memória, alocamos o

processo no bloco de memória livre grande o suficiente para esse processo.

• Se encontramos, alocamos apenas a parte necessária para o

processo em questão. O restante fica livre para satisfazer pedidos futuros.

(47)

Alocação Contígua de

Memória

• O sistema operacional considera os requisitos de

memória de cada processo e a quantidade de

espaço de memória disponível para determinar a que processos a memória será aloucada.

• Uma outra forma é ordenar de acordo com algum

algoritmo de escalonamento. A memória é alocada até que os requisitos dos próximos processos não sejam mais atendidos (nenhum bloco disponível é grande o suficiente para armazenar tal processo).

(48)

• Os blocos livres adjacentes podem ser

combinados para formarem um novo bloco.

• Após a junção, deve-se verificar novamente se

existem processos que atendam a nova recompilação de memória.

Processo Processo

(49)

Alocação Contígua de

Memória

• Como selecionar um bloco de memória livre do

(50)

Alocação Contígua de

Memória

• Como selecionar um bloco de memória livre do

conjunto de blocos disponíveis?

First-fit: primeiro bloco de memória grande o

suficiente

Best-fit: menor bloco de memória grande o

suficiente

(51)

Alocação Contígua de

Memória

• O grande problema desses algoritmos é o que

chamamos de fragmentação externa"

• À medida que os processos são carregados e

descarregados na memória, o espaço livre na memória é quebrado em pequenas partes.

• Sendo assim, cria-se espaço na memória total

suficiente para atender a um pedido, mas não é contíguo.

(52)

• Somando os espaço disponíveis, a memória possui

espaço suficiente para alocar o novo processo de

30k. No entanto, esses espaços não estão contíguos.

Qual a solução?

Processo 10k Processo 10k Processo 10k Processo 10k

Processo

(53)

Alocação Contígua de

Memória

• Uma solução para esse problema é a

COMPACTAÇÃO:"

• Trocar de posição o conteúdo da mesário para

reunir toda a memória livre em um grande bloco.

• Isso só é possível se a relocação for dinâmica e

feita em tempo de execução.

(54)

Alocação Contígua de

Memória

• Uma outra solução é permitir que o espaço de

endereçamento lógico de um processo seja não contíguo.

• Dessa forma, podemos permitir que um processo receba

a memória física que esteja disponível, independente se esses espaços são contíguos ou não.

• Paginação

• Segmentação

(55)
(56)
(57)

O que é paginação?

• É um esquema de organizar dados na memória

que permite que o espaço de endereçamento físico de um processo seja não-contíguo.

• A memória física é quebrada em blocos de

tamanho fixo chamados de quadros (frames).

• A memória lógica também é quebrada em

(58)

CPU p d Endereço" Lógico f f d Endereço" Físico p f f0000 … 000 f1111 … 111 Tabela de Página Memória Física

(59)

Paginação

• Cada endereço gerado pela CPU é dividido em

duas partes: número de página (p) e um

deslocamento de página (d).

• O número de página é utilizado com índice em

uma tabela de página.

• A tabela de página contém o endereço base de

(60)

página 0 página 1 página 2 página 3 memória lógica 1 4 3 7 0 1 2 3 Memória Física página 0 página 2 página 1 página 3 Tabela de página

(61)

Paginação

• A paginação é uma forma de relocação dinâmica

de memória.

• Cada endereço lógico é associado pelo hardware

de paginação a algum endereço físico. O uso da página é semelhante ao uso da tabela de

registradores.

• A paginação resolve o problema da fragmentação

externa, no entanto não resolve qual outro problema?

(62)

Paginação

• A paginação é uma forma de relocação dinâmica de

memória.

• Cada endereço lógico é associado pelo hardware de

paginação a algum endereço físico. O uso da página é semelhante ao uso da tabela de registradores.

• A paginação resolve o problema da fragmentação

externa, no entanto não resolve qual outro problema?

(63)

Paginação

• Na média, o última meia página do processo fica

vazia.

• Páginas menores são desejáveis já que

diminuem a fragmentação

• No entanto, essa solução aumenta o tamanho da

tabela de página.

(64)

Paginação

• Um aspecto importante da paginação é a

separação clara entre a visão da memória pelo usuário e a memória física real:

• Visão do usuário: vê a memória como um único

espaço.

• Visão da memória: páginas espalhadas.

• O mapeamento entre essas visões fica escondido

(65)

Paginação

• O sistema operacional gerencia uma estrutura

chamada de tabela de quadros:

• guarda as informações detalhadas da alocação

de memória física: quais quadros estão

alocados, quais estão disponíveis, quantos quadros existem no total.

• A paginação aumenta o tempo de troca de

(66)
(67)

Como é feito o

armazenamento da

tabela de páginas?

(68)

Implementação

• Cada sistema operacional possui seus próprios

métodos para armazenar tabela de páginas.

• A maioria aloca uma tabela de página para cada

processo.

• A implementação do hardware da tabela de página

pode ser feita de várias maneiras:

• Utilizando registradores • Utilizando a memória

(69)

Implementação

Através de registradores

• Implementação com acesso rápido

• Satisfatório para tabelas de páginas pequenas • No entanto, tem um alto custo

• Solução?

(70)

Implementação

Implementar na memória

• A tabela de página é mantida na memória

principal e um registrador da tabela de página (PTBR - Page Table Base Register) aponta para a tabela de página.

• As mudanças na tabela de página exige

somente a mudança nesse registrador, reduzindo bastante o tempo de troca de contexto.

(71)

Implementação

• O problema com essa técnica é o tempo exigido

para acessar um local da memória do usuário.

• Multiplica por dois o acesso a memória

• Um acesso para a entrada da tabela e um

acesso a informação em si

• Solução?

(72)

Implementação

• TLB (Translation Look-aside Buffer)

• Uma memória associativa de alta velocidade

que funciona como uma cache das entradas de páginas mais acessada.

(73)

CPU p d Endereço" Lógico f f d Endereço" Físico p f f0000 … 000 f1111 … 111

(74)

CPU p d Endereço" Lógico f f d Endereço" Físico p f f0000 … 000 f1111 … 111

Tabela de Página Memória Física

quadro página

falha na TLB

(75)
(76)

Proteção

• A proteção da memória em um ambiente paginado é

realizada pela proteção dos bits associados a cada quadro. Esses bits costumam ser montados na tabela de página

• Bit para definir uma página como leitura/escrita ou

somente leitura

• Bit válido e inválido

(77)
(78)

Estrutura da Tabela de

Página

• A maioria dos sistemas computadorizados modernos

admite um grande espaço de endereços lógicos (2^32 a 2^64).

• Nestes casos, a tabela de página se torna muito grande. • Por exemplo:

• Endereços lógicos: 32 bits • Tamanho de página: 4kb

(79)

Estrutura da Tabela de

Página

• Devemos estruturar a tabela de página de forma a

garantir o melhor uso de memória:

• Paginação Hierárquica

• Tabela de páginas com hash • Tabelas de páginas invertidas

(80)

Estrutura da Tabela de

Página

• A maioria dos sistemas computacionais modernos

admite um grande espaço de endereço lógicos.

• Nestes casos, a tabela de página é muito grande,

ocupando muito espaço da memória.

• Como gerenciar melhor esse cenário?

• Dividir a tabela de página em tamanho menor • Paginação Hierárquica.

(81)

Estrutura da Tabela de

Página

• Paginação Hierárquica

(82)
(83)

Estrutura da Tabela de

Página

• Outras alternativas:

• Tabelas de página com hash

• Utilizada em espaço de endereços maiores que 32 bits.

• É aplicado o hash no número da página virtual na tabela de

página.

• Cada entrada na tabela de hash contém um lista encadeada de

elementos que se dirigem para o mesmo local.

• O número de página virtual é comparado com os elementos da

lista encadeada. Se houver uma combinação, o quadro da

(84)

Estrutura da Tabela de

Página

• Outras alternativas:

• Tabelas de páginas invertidas

• Contém uma entrada para cada página da

memória

• A entrada consiste do endereço virtual da

página gravada na memória real com

informações sobre o processo que pertence àquela página.

(85)

Páginas Compartilhadas

• Uma das vantagens da paginação é a possibilidade de

compartilhar código comum.

• Considere o seguinte cenário:

• Um ambiente compartilhado com 40 usuários e todos

utilizando um editor de texto de 200kb (150kb de código e 50kb de espaço de dados).

• Quanta memória é necessária? • 8000kb

(86)

ed 1 ed2 ed3 dados 1 processo P1 3 4 6 1 Memória Física dados 1 dados 3 ed 1 ed 2 ed3 dados 2 Tabela de página para P1 ed 1 ed2 ed3 dados 3 processo P3 3 4 6 2 Tabela de página para P3 ed 1 ed2 ed3 dados 2 processo P2 3 4 6 7 Tabela de página para P2

(87)

Páginas Compartilhadas

• Utilizando páginas compartilhadas é possível

reduzir o consumo de memória do exemplo anterior de 8000KB para 2150KB.

• Como?

• Com o compartilhamento é necessário apenas

uma cópia do editor (150KB), mais 40 cópias dos 50KB do espaço de dados, uma por

(88)
(89)

Segmentação

• É um esquema de gerência de memória que permite

enxergar o espaço de endereço lógico como um conjunto de segmentos.

• Um endereço lógico é representado por:

<numero_segmento,deslocamento>

• numero_segmento: identificador do segmento

(90)

sub-rotina pilha sqrt tabela de símbolos programa principal

(91)

CPU s d limite base s Tabela de Segmentos Memória Física <

+

Intercepção; erro de endereçamento sim

(92)

Segmentação

• No caso da segmentação, os usuários referenciam

endereços bidirecionais. No entanto, a memória física

continua sendo uma seqüência de bytes unidimensional.

• Sendo assim, faz-se necessário um mapeamento entres

estes dois tipos de endereços.

O mapeamento é feito pela tabela de segmentos.

• base do segmento: endereço físico inicial no qual o

segmento reside na memória

(93)

sub-rotina pilha sqrt tabela de símbolos programa principal Espaço de Endereçamento Lógico 0 4 1 3 2 limite base 1000 1400 400 6300 400 4300 1100 3200 1000 4700 Memória Física segmento 0 segmento 3 segmento 2 segmento 1 segmento4 1400 2400 3200 4300 4700 5700 6300 6700 Tabela de Segmentos

(94)

Proteção e

Compartilhamento

• Assim como na paginação, a segmentação

permite a proteção e o compartilhamento das

informações que são armazenadas na memória.

• Permite a proteção de segmentos, ou seja, permite

a proteção de partes de um programa.

• Instruções: leitura ou execução • Dados: escrita

(95)

Proteção e

Compartilhamento

• Os segmentos são compartilhados quando as

entradas na tabela de segmento de dois

processos diferentes apontam para o mesmo local na memória física.

(96)

editor dados 1 memória lógica do 
 processo P1 0 1 limite base 25286 43062 4425 68348 Memória Física editor dados1 dados 2 43062 68348 72773 90003 98553 tabela de segmento do processo P1 editor dados 2 memória lógica do 
 processo P2 0 1 limite base 25286 43062 8850 90003 tabela de segmento do processo P2

(97)

Fragmentação

• Possui fragmentação externa

• Não possui fragmentação interna

• Como a segmentação é um algoritmo dinâmico de

relocação, podemos compactar a memória sempre que desejarmos.

(98)

Segmentação com

Paginação

(99)
(100)
(101)

Conclusão

• Todas as estratégias possuem o mesmo objetivo:

permitir a multiprogramação.

• No entanto, elas exigem que um processo inteiro

esteja na memória antes de poder ser executado.

• Como executar processos que não estejam

completamente na memória?

(102)
(103)

Referências

• Cap. 9 do livro do Silberschatz • Cap. 3 do livro do Tanenbaum

Referências

Documentos relacionados

É notório que é possível determinar uma região de maior probabilidade de encontrar os picos das curvas de compactação, mas para condições de campo analisada as Figuras 4(a) e 4(b)

Ocorre o fenômeno da crase diante dos pronomes relativos “a qual” e “as quais”, quando o verbo da oração introduzida por esses pronomes exigir a

Este estudo envolveu a caracterização das alterações numéricas e estruturais por citogenética convencional, bem como, investigações sobre a ocorrência ou não

Tomando como base o estudo etnográfico no local conhecido como Jambolão, situado na Universidade Federal de Uberlândia (UFU), e nas repúblicas do entorno foram identificados

Produto Classe 1: Dispostos em aterro industrial desde que autorizado pelo orgão de controle ambiental ou encaminhar para alguma empresa para reciclagem de abrasivos

Sergipe, no uso de suas atribuições legais conferidas pelo Artigo 45, inciso IV da Lei Orgânica do Município de Nossa Senhora da Glória, Estado de Sergipe, combinado com a

 Compete à Comissão Organizadora: Abrir e encerrar as inscrições, escolher um júri idôneo que tenha formação e/ou aptidão na área musical, divulgar o

Destaca-se que sistemas de SIG-Web com ênfase na consulta e disponibilização de dados espaciais, tem representado um avanço no acesso às informações georreferenciadas, como