10.08.2015 Views

Sistemas Operativos Gestão de Memória

Memória Virtual

Memória Virtual

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Sistemas</strong> <strong>Operativos</strong>: <strong>Gestão</strong> <strong>de</strong> <strong>Memória</strong>Pedro F. Souto (pfs@fe.up.pt)May 17, 2011


SumárioConceitos e Técnicas BásicasSwapping<strong>Gestão</strong> da <strong>Memória</strong> Física<strong>Memória</strong> VirtualFundamentosConversão <strong>de</strong> En<strong>de</strong>reçosPage FaultsAlgoritmos <strong>de</strong> Substituição <strong>de</strong> PáginasSwap AreaEnvolvimento do SOInteracção com E/SLeitura Adicional


SumárioConceitos e Técnicas BásicasSwapping<strong>Gestão</strong> da <strong>Memória</strong> Física<strong>Memória</strong> VirtualFundamentosConversão <strong>de</strong> En<strong>de</strong>reçosPage FaultsAlgoritmos <strong>de</strong> Substituição <strong>de</strong> PáginasSwap AreaEnvolvimento do SOInteracção com E/SLeitura Adicional


<strong>Gestão</strong> <strong>de</strong> <strong>Memória</strong>◮ Processadores são concebidos para:◮ executar instruções resi<strong>de</strong>ntes em memóriasemicondutora;◮ transferir dados <strong>de</strong> e para memória semicondutora.CPUMemoriaCont.Disco


Hierarquia <strong>de</strong> <strong>Memória</strong>◮ Praticamente qualquer programador gostaria <strong>de</strong> dispôr <strong>de</strong>memória:◮ em gran<strong>de</strong> quantida<strong>de</strong>;◮ rápida;◮ não volátil.◮ SO e os compiladores exploram a hierarquia <strong>de</strong> memóriapara satisfazer estes “<strong>de</strong>sejos”:Typical access timeTypical capacity1 nsec2 nsec10 nsec10 msec100 secRegistersCacheMain memoryMagnetic diskMagnetic tape


<strong>Gestão</strong> <strong>de</strong> <strong>Memória</strong> em Monoprogramação◮ Executa apenas um processo <strong>de</strong> cada vez.UserprogramOperatingsystem inRAM0xFFF …Operatingsystem inROMDevicedrivers in ROMUserprogramUserprogramOperatingsystem inRAM0 0 0(a) (b) (c)b) Disposição típica em palmtops ( ∼ sistemas embebidos).c) Disposição em MS-DOS (A parte em ROM é conhecidapor BIOS.)


Multiprogramação e Partições FixasMultipleinput queuesPartition 4800K700KPartition 4Partition 3Singleinput queuePartition 3400KPartition 2Partition 1Operatingsystem(a)200K100K0Partition 2Partition 1Operatingsystem(b)◮ A memória é dividida em partições (possivelmente ≠s).a) o SO atribui a partição <strong>de</strong> menor tamanho capaz <strong>de</strong> contero processo;b) quando uma partição fica disponível, o SO atribui-a aoprocesso capaz <strong>de</strong> a usar mais à frente na fila.


Problemas Introduzidos por MultiprogramaçãoRecolocação: a posição do código po<strong>de</strong> variar entreexecuções:◮ O loa<strong>de</strong>r po<strong>de</strong> alterar os en<strong>de</strong>reços absolutos<strong>de</strong> acordo com a posição on<strong>de</strong> o código écarregado.◮ Usar um base register a inicializar com oen<strong>de</strong>reço da partição atribuída ao processo.Protecção: impedir que um processo aceda a código ou adados <strong>de</strong> outros processos ou do SO:◮ Usar um limit register além do base register.CPUlimit baseaddress


SumárioConceitos e Técnicas BásicasSwapping<strong>Gestão</strong> da <strong>Memória</strong> Física<strong>Memória</strong> VirtualFundamentosConversão <strong>de</strong> En<strong>de</strong>reçosPage FaultsAlgoritmos <strong>de</strong> Substituição <strong>de</strong> PáginasSwap AreaEnvolvimento do SOInteracção com E/SLeitura Adicional


Swapping: I<strong>de</strong>ia◮ Com partições fixas um processo é carregado numapartição quando chega à cabeça da fila correspon<strong>de</strong>nte, e<strong>de</strong>pois fica em memória até terminar◮ Se as necessida<strong>de</strong>s <strong>de</strong> memória dos processos foremmuito variáveis, a memória física po<strong>de</strong> tornar-seinsuficiente para todos os processos.◮ Uma solução possível é o recurso a swapping:◮ Passar um processo para o disco (swap out) e,posteriormente◮ Transferi-lo <strong>de</strong> novo do disco para a memória (swap in)


Swapping: ExemploTimeCCCCCBBBAsystemsystemsystemsystemsystemAAADDDOperatingOperatingOperatingOperatingOperatingOperatingOperatingB (a)(b)(c)◮ Com swapping o número, localização e tamanho daspartições varia dinamicamente+ melhora a utilização da memória;- torna a gestão <strong>de</strong> memória mais complexa.◮ Contudo swapping po<strong>de</strong> conduzir à fragmentação damemória:◮ po<strong>de</strong> ser atenuada usando compactação;◮ mas compactação consome bastante CPU(d)(e)(f)(g)


ASwapping: Tamanho das Regiões a Alocar◮ Qual o tamanho da região <strong>de</strong> memória a alocar quando umprocesso é criado ou trazido para memória (swapped in)?BOperatingsystemRoom for growthActually in useRoom for growthActually in useB-StackB-DataA-StackA-DataA-ProgramB-ProgramOperatingsystemRoom for growthRoom for growth(a)◮ Se o processo crescer em <strong>de</strong>masia e não houver maismemória para alocar, po<strong>de</strong>-se passá-lo para o disco(swap-out)◮ Se disco estiver cheio, po<strong>de</strong>-se bloquear processo ... masnesse caso o processo ocupará memória(b)


SumárioConceitos e Técnicas BásicasSwapping<strong>Gestão</strong> da <strong>Memória</strong> Física<strong>Memória</strong> VirtualFundamentosConversão <strong>de</strong> En<strong>de</strong>reçosPage FaultsAlgoritmos <strong>de</strong> Substituição <strong>de</strong> PáginasSwap AreaEnvolvimento do SOInteracção com E/SLeitura Adicional


Alocação Dinâmica <strong>de</strong> <strong>Memória</strong>◮ O SO tem que manter informação sobre o espaço <strong>de</strong>memória disponível◮ Tipicamente <strong>de</strong>compõe-se a memória física em unida<strong>de</strong>s<strong>de</strong> alocação, cujo tamanho é da or<strong>de</strong>m dos KB◮ Normalmente usa-se uma <strong>de</strong> 2 estruturas <strong>de</strong> dados1. bitmaps;2. listas ligadas.A B C D E8 16 24(a)1 1 1 1 1 0 0 01 1 1 1 1 1 1 11 1 0 0 1 1 1 11 1 1 1 1 0 0 0(b)HoleP 0 5 H 5 3 P 8 6 P 14 4H 18 2 P 20 6 P 26 3 H 29 3 XStarts Lengthat 18 2(c)Process


Bitmaps vs. Listas+ Bitmaps ocupam um espaço <strong>de</strong> memória fixo que <strong>de</strong>pen<strong>de</strong>do tamanho da unida<strong>de</strong> <strong>de</strong> alocação◮ blocos pequenos exigem mais memória para os bitmaps;◮ blocos gran<strong>de</strong>s po<strong>de</strong>m conduzir a fragmentação externa- Pesquisa <strong>de</strong> espaço disponível para alocação po<strong>de</strong> serlenta


BBAlgoritmos <strong>de</strong> Alocação Dinâmica <strong>de</strong> <strong>Memória</strong>(a) A X◮ A libertação <strong>de</strong> memória é relativamente simples:Before X terminates(b) A XX B(d) (c)Xbecomesbecomesbecomesbecomes◮ A alocação é mais interessante:first fit: simples e eficiente;next fit: começa varrimeno on<strong>de</strong> parou da última vez - <strong>de</strong>facto pior do que first fit;best fit: tenta evitar fragmentação, mas . . .worst fit: tenta evitar fragmentos muito pequenos, mas . . .After X terminatesBAA


Alicação Dinâmica <strong>de</strong> <strong>Memória</strong>: Truques◮ Manter listas separadas para a memória ocupada e amemória livre+ facilita alocação;+ po<strong>de</strong>-se usar a própria memória livre para implementar oselementos da lista <strong>de</strong> memória livre;- penaliza a libertação da memória.◮ Manter listas <strong>de</strong> memória livre, uma para cada um dostamanhos <strong>de</strong> blocos mais comuns (quick fit)- problemas análogos aos do uso <strong>de</strong> listas separadas


SumárioConceitos e Técnicas BásicasSwapping<strong>Gestão</strong> da <strong>Memória</strong> Física<strong>Memória</strong> VirtualFundamentosConversão <strong>de</strong> En<strong>de</strong>reçosPage FaultsAlgoritmos <strong>de</strong> Substituição <strong>de</strong> PáginasSwap AreaEnvolvimento do SOInteracção com E/SLeitura Adicional


<strong>Memória</strong> Virtual (MV)◮ I<strong>de</strong>ia:◮ Decompôr o espaço <strong>de</strong> en<strong>de</strong>reçamento dum processo emblocos.◮ Manter em memória apenas alguns <strong>de</strong>sses blocos (códigoe dados) do processo em execução.◮ Manter os outros blocos no disco:◮ na área <strong>de</strong> swap;◮ no sistema <strong>de</strong> ficheiros (código, p.ex.).◮ Transferir os blocos entre o disco e a memória, conformenecessário.◮ Mecanismos◮ Paginação;◮ Segmentação;(ambos requerem suporte do HW).


MV vs. swapping+ Permite programas maiores do que a memória físicadisponível;+ Possibilita ter mais processos em memória (ainda que sóparte <strong>de</strong>les);+ Reduz tempo <strong>de</strong> arranque dum processo- Exige suporte do HW mais sofisticado


MV Paginada◮ A memória física está divididaem page frames, ou frames:◮ o tamanho das frames é<strong>de</strong>terminado pelo HW (4 Kbyteou 8 Kbyte).◮ O espaço <strong>de</strong> en<strong>de</strong>reçamentoestá dividido em páginas:◮ tipicamente <strong>de</strong> tamanho igualao das frames.◮ O conteúdo das páginas étransferido <strong>de</strong> e para frames.Virtualaddressspace60K-64K56K-60K52K-56K48K-52K44K-48K40K-44K36K-40K32K-36K28K-32K24K-28K20K-24K16K-20K12K-16K8K-12K4K-8K0K-4KXXXX7X5XXX340612Virtual pagePhysicalmemoryaddress28K-32K24K-28K20K-24K16K-20K12K-16K8K-12K4K-8K0K-4KPage frame


Conversão <strong>de</strong> En<strong>de</strong>reços em MV Paginada◮ Paginação <strong>de</strong>termina dois espaços <strong>de</strong> en<strong>de</strong>reçamento:virtual ou lógico que é o que o CPU conhece - ocódigo executável usa en<strong>de</strong>reços virtuais oulógicos;físico que é usado no barramento <strong>de</strong> en<strong>de</strong>reços damemória.◮ O mapeamento dos en<strong>de</strong>reços dum espaço no outro érealizado pela Memory Management Unit (MMU):CPUpackageThe CPU sends virtualaddresses to the MMUCPUMemorymanagementunitMemoryDiskcontrollerBusThe MMU sends physicaladdresses to the memory


Conversão <strong>de</strong> En<strong>de</strong>reços com uma Tabela (1/2)◮ Em sistemas com MV paginada um en<strong>de</strong>reço tem 2componentes:Page #Offset◮◮O número da página, parte mais significativa do en<strong>de</strong>reço;O <strong>de</strong>slocamento (offset) na página, parte menossignificativa.◮ Como frames e páginas têm o mesmo tamanho, a MMU sótem que mapear o número da página no número da frame.◮ O mapeamento po<strong>de</strong> ser feito usando uma tabela,implementada como um vector:◮ o número da página é usado como indíce para obter onúmero da frame que a contém.


Conversão <strong>de</strong> En<strong>de</strong>reços com uma Tabela (2/2)Virtualaddressspace60K-64K56K-60K52K-56K48K-52K44K-48K40K-44K36K-40K32K-36K28K-32K24K-28K20K-24K16K-20K12K-16K8K-12K4K-8K0K-4KXXXX7X5XXX340612Virtual pagePhysicalmemoryaddress28K-32K24K-28K20K-24K16K-20K12K-16K8K-12K4K-8K0K-4KPage framePagetable1 1 0 0 0 0 0 0 0 0 0 0 1 0 015141312111098765432100000000000001110001010000000000111000001100010100000101000111111110Virtual page = 2 is usedas an in<strong>de</strong>x into thepage tablePresent/absent bit0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 012-bit offsetcopied directlyfrom inputto outputOutgoingphysicaladdress(24580)Incomingvirtualaddress(8196)


Page Table EntryCachingdisabled Modified Present/absentPage frame numberReferencedProtection?◮ Se o CPU usar en<strong>de</strong>reços <strong>de</strong> 32 bits, e páginas <strong>de</strong> 4 Kbyte(12 bits), a page table terá ∼4 Mbyte!!!◮ Cada página po<strong>de</strong> conter até 1024 (2 10 ) elementos◮ Sendo necessárias 1024 (2 20 /2 10 ) páginas◮ Normalmente, um processo usa apenas uma fracção doseu espaço <strong>de</strong> en<strong>de</strong>reçamento:◮ A maioria dos elementos da page table não são usados◮ Muitas das páginas da page table estão vazias


Tabelas com 2 Níveis◮ Permite não usar páginas databela vazias◮ Exige uma “tabela” adicional paraas páginas◮ Elementos correspon<strong>de</strong>ntes apáginas vazias tem o bitPresent/absent a 0◮ Os outros elementos apontampara páginas com conversões◮ A conversão é feita em 2 passos:◮ Os 10 bits mais significativossão usados para seleccionar apágina <strong>de</strong> 2 o nível que po<strong>de</strong>ráconter o elemento <strong>de</strong>sejado◮ Os 10 bits seguintes sãousados como indíce da “tabela”contida nessa páginaBits 10 10 12PT1 PT2 Offset(a)Top-levelpage table◮ Este esquema po<strong>de</strong> ser generalizado a 3 ou mais níveis102365432101023(b)6543210Second-levelpage tablesPagtablthe4MmemTopages


Tabelas Invertidas◮ Alguns CPUs <strong>de</strong> 64 bits usam tabelas invertidas:◮ têm um elemento por frame, em vez <strong>de</strong> ...◮ cada elemento contêm informação sobre (processo, páginavirtual) contido pela frame◮ A tabela está organizada como uma hash table◮ usa o en<strong>de</strong>reço virtual da página como keyTraditional pagetable with an entryfor each of the 2 52 pages2 52 -1256-MB physicalmemory has 2 164-KB page frames2 16 -12 16 -1Hash table0 0In<strong>de</strong>xedby virtualpage0In<strong>de</strong>xedby hash onvirtual pageVirtualpagePageframe


Desempenho da Conversão <strong>de</strong> En<strong>de</strong>reços◮ Po<strong>de</strong> traduzir-se um en<strong>de</strong>reço com tantos acessos àmemória quantos os níveis da page table◮ no caso <strong>de</strong> tabelas invertidas são necessários 2 acessosno mínimo, mais se houver colisões.◮ Obviamente, temos um problema:◮ cada acesso à memória, requereria acessos adicionaispara converter en<strong>de</strong>reços.◮ A solução é usar uma cache, a Table Lookasi<strong>de</strong> Buffer, <strong>de</strong>elementos da page table usados em conversões recentes:Valid Virtual Page Modified Protection Page Frame1 140 1 RW 311 20 0 R X 381 130 1 RW 291 129 1 RW 621 19 0 R X 50


Table Lookasi<strong>de</strong> Buffer (TLB)◮ A TLB usa memória associativa:◮ cada posição <strong>de</strong> memória consiste num par (key, value);◮ o en<strong>de</strong>reçamento é feito comparando o valor do en<strong>de</strong>reçocom o valor <strong>de</strong> key.Em termos <strong>de</strong> implementação, a TLB é semelhante àcache <strong>de</strong> instruções ou dados.◮ O número <strong>de</strong> posições da TLB não precisa ser muitoelevado:◮ por causa da localida<strong>de</strong> no acesso à memória.◮ Quando da comutação <strong>de</strong> processos, o conteúdo da TLBtem que ser invalidado, a menos que ...


TLB Misses◮ E se o en<strong>de</strong>reço a converter não estiver na TLB (TLBmiss)?◮ Há que consultar a page table◮ Normalmente, o HW <strong>de</strong> gestão <strong>de</strong> memória, a MemoryManagement Unit (MMU), processa automaticamente asTLB misses:◮ A MMU precisa conhecer a localização da page table doprocesso em execução.◮ A MMU <strong>de</strong> alguns CPUs RISC não processam TLB misses,<strong>de</strong>ixam essa tarefa a cargo do SO.


Desempenho da Conversão <strong>de</strong> En<strong>de</strong>reços com TLB◮ Seja:p a TLB hit ratiom o n o <strong>de</strong> acessos à memória no caso duma TLB miss◮ Admitindo que no caso <strong>de</strong> um TLB hit, o custo é zero, ocusto efectivo da utilização <strong>de</strong> MV paginada vem:(1 − p)m◮ Seja:p = 0.98m = 3Então o custo será <strong>de</strong>: 0.06 acessos à memoria porconversão <strong>de</strong> en<strong>de</strong>reço


Page FaultQuando um processo tenta ace<strong>de</strong>r a uma página e essapágina não está em memória ocorre uma page fault◮ A MMU gera uma excepção, que é processada pelo pagefault handler:◮ O page fault handler consulta uma outra estrutura <strong>de</strong>dados (address map do processo) para <strong>de</strong>terminar:◮ se a referência é válida: protecção;◮ e, em caso afirmativo, on<strong>de</strong> se encontra a página.◮ O handler obtém uma frame livre.◮ Transfere a página do disco para a frame.◮ Actualiza a page table.◮ O CPU reinicia a execução da instrução que causou apage fault:◮ mais fácil dizer do que fazer, mas tem a ver com o HW.


Address Map◮ É a estrutura <strong>de</strong> dados do SO que mapeia espaço nodisco:◮ ficheiros;◮ partes da área <strong>de</strong> swapno espaço <strong>de</strong> en<strong>de</strong>reçamento dum processo.◮ É usada pelo page-fault handler para <strong>de</strong>terminar:◮ a valida<strong>de</strong> da referência;◮ em caso positivo, qual a fonte da página referenciada.◮ Quando o SO cria um processo:◮ mapeia o ficheiro com o código correspon<strong>de</strong>nte no espaço<strong>de</strong> en<strong>de</strong>reçamento <strong>de</strong>sse processo;◮ reduz o tempo <strong>de</strong> arranque dum processo.◮ transfere algumas páginas <strong>de</strong>sse ficheiro para a memória(prepaging):◮ evita uma page fault rate excessiva inicialmente.


more /proc/1/maps08048000-0804f000 r-xp 00000000 03:02 8954 /sbin/init0804f000-08050000 rw-p 00006000 03:02 8954 /sbin/init08050000-08054000 rwxp 00000000 00:00 040000000-40012000 r-xp 00000000 03:02 8862 /lib/ld-2.1.3.so40012000-40013000 rw-p 00011000 03:02 8862 /lib/ld-2.1.3.so40013000-40014000 rwxp 00000000 00:00 04001b000-400f0000 r-xp 00000000 03:02 8864 /lib/libc-2.1.3.so400f0000-400f4000 rw-p 000d4000 03:02 8864 /lib/libc-2.1.3.so400f4000-400f8000 rw-p 00000000 00:00 0bfffe000-c0000000 rwxp fffff000 00:00 0


Partilha <strong>de</strong> Código◮ O address map facilita a partilha <strong>de</strong> <strong>de</strong> memória entreprocessos.◮ Um exemplo muito comum é o código <strong>de</strong> bibliotecaspartilhadasProcess 1Address−SpaceSharedCo<strong>de</strong>Process 2Address−Space


E se não houver qualquer frame livre?◮ Se, quando duma page-fault, todas as frames estiveremocupadas, o SO tem que libertar uma:◮ se a frame seleccionada tiver sido modificada, terá que sertransferida para o disco.◮ Por razões <strong>de</strong> eficiência, o SO tipicamente executa umprocesso (pageout daemon) que procura manter um certonúmero <strong>de</strong> frames livres.◮ Em qualquer dos casos, põe-se o problema:Que páginas transferir para o disco?É bom que se faça uma boa escolha, doutro modo o<strong>de</strong>sempenho sofre . . .◮ Note-se que este problema é comum a qualquer tipo <strong>de</strong>cache.


Algoritmos <strong>de</strong> Substituição <strong>de</strong> PáginasAlgorithmCommentOptimalNot implementable, but useful as a benchmarkNRU (Not Recently Used) Very cru<strong>de</strong>FIFO (First-In, First-Out) Might throw out important pagesSecond chanceBig improvement over FIFOClockRealisticLRU (Least Recently Used) Excellent, but difficult to implement exactlyNFU (Not Frequently Used) Fairly cru<strong>de</strong> approximation to LRUAgingEfficient algorithm that approximates LRU wellWorking setSomewhat expensive to implementWSClockGood efficient algorithm


Algoritmo Óptimo◮ Quando da substituição duma página, expulsa-se a páginaque será referenciada no futuro <strong>de</strong>pois <strong>de</strong> todas as outras.Problema O SO não consegue prever o futuro◮ A utilida<strong>de</strong> <strong>de</strong>ste algoritmo é que po<strong>de</strong> ser usado paracomparar a qualida<strong>de</strong> <strong>de</strong> algoritmos que são exequíveis:◮ requer o registo das operações à memória por umprocesso;◮ note-se que este registo <strong>de</strong>screve o acesso à memória doprograma em causa, para os dados <strong>de</strong> entrada usados◮ convém que seja representativoSolução Usar o passado recente para prever o futuro◮ Os diferentes algoritmos diferem nos pormenores


Algoritmo Not Recently Used (NRU)◮ Cada page table entry (PTE) contém 2 bits:R-bit referecend bitM-bit modifiedactualizados em cada acesso à memória pela MMU.◮ O R-bit é limpo periodicamente◮ As páginas são classificadas em:1. não referenciadas, não modificadas2. não referenciadas, mas modificadas3. referenciadas, não modificadas4. referenciadas, modificadas◮ NRU selecciona a classe não vazia pela or<strong>de</strong>m indicada eexpulsa uma página <strong>de</strong>sta classe◮ NRU é intuitivo, <strong>de</strong> implementação eficiente e<strong>de</strong>sempenho aceitável para muitas aplicações


Algoritmo Least Recently Used (NRU)I<strong>de</strong>ia Assumir que páginas usadas mais recentemente serãousadas em breve◮ expulsar a página menos usada recentemente◮ Normalmente o HW não fornece os mecanismosnecessários para uma implementação eficiente <strong>de</strong>stealgoritmo◮ A sua implementação em SW não é viável na prática◮Porquê?◮ A alternativa é tentar aproximar o LRU usando outrosalgoritmos


Algoritmo Not Frequently Used (NFU)I<strong>de</strong>ia Associar a cada página um contador que é incrementadoperiodicamente, <strong>de</strong> acordo com o estado do R-bit◮ expulsar a página cujo contador tem o valor mais baixoProblema Este algoritmo nunca esquece◮ acessos num passado remoto têm o mesmo peso queacessos recentesSolução Usar aging:◮ periodicamente, <strong>de</strong>slocar o valor do contador 1 bit paraa direita e inserir o R-bit como MSB


Algoritmo NFU with Aging: ExemploR bits forpages 0-5,clock tick 0R bits forpages 0-5,clock tick 1R bits forpages 0-5,clock tick 2R bits forpages 0-5,clock tick 3R bits forpages 0-5,clock tick 41 0 1 0 1 11 1 0 0 1 01 1 0 1 0 11 0 0 0 1 00 1 1 0 0 0Page010000000110000001110000011110000011110001000000001000000011000000011000001011000021000000001000000001000000010000010001000300000000000000001000000001000000001000004100000001100000001100000101100000101100051000000001000000101000000101000000101000(a)(b)(c)(d)(e)


Conceito <strong>de</strong> Working Set◮ Com paginação pura, as páginas dum processo só sãotrazidas para a memória quando o processo tem umapage-fault.◮ Quando um processo inicia, tem uma taxa <strong>de</strong> page-faultselevada, até que eventualmente essa taxa diminui:◮ este comportamento <strong>de</strong>ve-se à localida<strong>de</strong> <strong>de</strong> referência.◮ O conjunto <strong>de</strong> páginas acedidas por um processo num<strong>de</strong>terminado intervalo <strong>de</strong>signa-se por working set.◮ Se o working set dum processo estiver em memória, umprocesso tem um taxa <strong>de</strong> page-faults muito baixa,reciprocamente . . .◮ Tipicamente, o working set dum processo varia no tempo.


Definição <strong>de</strong> Working SetWorking set conjunto <strong>de</strong> páginas acedidas nos k acessos àmemória mais receentesw(k,t)k◮ w(k, t) é o tamanho do working set no instante t◮ w(k, t) é uma função monótona crescente◮ Contudo w(k, t) não po<strong>de</strong> nunca ser superior ao n o <strong>de</strong>páginas do espaço <strong>de</strong> en<strong>de</strong>reçamento do processo◮ Excepto para valores <strong>de</strong> k muito baixos, o tamanho doworking set dum processo é praticamente in<strong>de</strong>pen<strong>de</strong>nte <strong>de</strong>k


Algoritmo Baseado no Working SetI<strong>de</strong>ia Expulsar as páginas que não fazem parte do working setProblema Como <strong>de</strong>terminar se uma página faz parte do WS?Solução Manter um tempo virtual que é aproximadamente otempo <strong>de</strong> execução do processo.◮ Periodicamente, actualizar o tempo <strong>de</strong> acesso <strong>de</strong>acordo com o R-bit◮ Expulsar apenas páginas que não são acedidas hámuito tempo2204 Current virtual timeInformation aboutone page 2084200311R (Referenced) bitTime of last usePage referencedduring this tickPage not referencedduring this tick198012132014202020321620101110Scan all pages examining R bit:if (R == 1)set time of last use to current virtual timeif (R == 0 and age > τ)remove this pageif (R == 0 and age ≤ τ)remember the smallest time


Algoritmo WSClock◮ O algoritmo anterior é pouco eficiente pois exige um varrimento<strong>de</strong> toda a tabela <strong>de</strong> páginas dum processo sempre que ocorreuma page fault2204 Current virtual time◮ O tempo do último acesso émantido como no algoritmo do WS◮ Quando ocorre uma page-fault ohandler analisa a páginaapontada pelo ponterio.◮ O algoritmo só expulsa páginascuja ida<strong>de</strong> é superior a τ2003 12003 11620 02084 1 2032 11980 1 2014 11213 0(a)1620 0Time oflast use2084 1 2032 12020 12020 1R bit1620 02084 1 2032 12003 12020 11980 1 2014 01213 0(b)1620 02084 1 2032 12003 12020 11980 1 2014 01980 1 2014 01213 0(c)2204 1(d)New page


Algoritmos <strong>de</strong> Substituição <strong>de</strong> PáginasAlgorithmCommentOptimalNot implementable, but useful as a benchmarkNRU (Not Recently Used) Very cru<strong>de</strong>FIFO (First-In, First-Out) Might throw out important pagesSecond chanceBig improvement over FIFOClockRealisticLRU (Least Recently Used) Excellent, but difficult to implement exactlyNFU (Not Frequently Used) Fairly cru<strong>de</strong> approximation to LRUAgingEfficient algorithm that approximates LRU wellWorking setSomewhat expensive to implementWSClockGood efficient algorithm◮ O que é que o “utilizador”/programador po<strong>de</strong> fazer?◮ Pouco a menos que o SO suporte user-level pagers


User-level PagerMain memory3. Request pageDiskUserspaceUserprocess2. Nee<strong>de</strong>dpageExternalpager4. Pagearrives1. Pagefault5. Here is pageKernelspaceFaulthandler6. Mappage inMMUhandler◮ Mais um exemplo <strong>de</strong> separação entre mecanismos epolíticas◮ I<strong>de</strong>almente, o SO <strong>de</strong>veria suportar uma API quepermitisse expulsar páginas da memória◮ O algoritmo <strong>de</strong> substituição precisa tipicamente <strong>de</strong> ace<strong>de</strong>raos bits R E M.


Anomalia <strong>de</strong> Belady◮ Intuitivamente:◮ quanto maior o número <strong>de</strong> page frames, i.e. memória,menor será a taxa <strong>de</strong> page-faults◮ Porém Belady mostrou que nem todos os algoritmos <strong>de</strong>substituição <strong>de</strong> páginas garantem que assim é.◮ Alguns algoritmos apresentam casos patológicos nos quaiso aumento da memória conduz a mais page-faults◮ Uma classe <strong>de</strong> algoritmos <strong>de</strong> substituição que não sofre<strong>de</strong>ste problema é conhecida por stack algorithms◮ Estes algoritmos garantem que:M(n, r) ⊆ M(n + 1, r)on<strong>de</strong> M(f , r) dsigna o conteúdo da memória com f framesapós r referências


Swap Area◮ É uma zona do disco para on<strong>de</strong> é transferido o conteúdodas páginas modificadas expulsas da memória:◮ páginas <strong>de</strong> ficheiros não alteráveis, p.ex. código, nãoprecisam ser transferidas para a swap area.◮ Po<strong>de</strong> ser implementada:◮ directamente sobre o disco – mais eficiente;◮ sobre ficheiros – fácil <strong>de</strong> ajustar o seu tamanho.◮ Em qualquer caso, o SO tem que gerir o espaço disponívelna swap area.◮ A alocação <strong>de</strong> espaço na àrea <strong>de</strong> swap po<strong>de</strong> ser:optimista só é alocada quando necessário – possibilida<strong>de</strong><strong>de</strong> <strong>de</strong>adlock?pessimista é reservada – po<strong>de</strong> não vir a ser usada e,consequentemente, reduzir a utilização dos recursos.


Swap Area: Modos <strong>de</strong> Alocação.Main memoryDiskMain memoryDiskPagesPages0436Swap area750436Swap areaPagetable21Pagetable7521643643Diskmap00(a)(b)


Working Set e Thrashing◮ Normalmente, a frequência <strong>de</strong> page faults <strong>de</strong>pen<strong>de</strong> donúmero <strong>de</strong> frames atribuídas a um processo:Page faults/secABNumber of page frames assigned◮ Quando a maioria dos processos não tem um número <strong>de</strong>páginas suficiente em memória, i.e. o seu working set, ocomputador po<strong>de</strong> entra num estado <strong>de</strong> thrashing:usa a maioria dos seus recursos para transferirpáginas entre a memória principal e o disco


Escalonamento Multinível◮ Se a frequência <strong>de</strong> page faults aumenta bastante,indicando a possibilida<strong>de</strong> <strong>de</strong> thrashing, o SO po<strong>de</strong> “fazer oswapout <strong>de</strong> processos”:i.e. transferir todas as páginas dum ou maisprocessos para o disco.◮ Ou seja, o SO po<strong>de</strong>rá usar dois níveis <strong>de</strong> escalonamento:◮ O nível superior <strong>de</strong>termina quais os processos emmemória.◮ O nível inferior faz o escalonamento dos processos emmemória.


Envolvimento do SO na <strong>Gestão</strong> <strong>de</strong> MV Paginada◮ Criação dum processo:◮ criar page table.◮ Comutação <strong>de</strong> processos:◮ configurar a MMU para o novo processo;◮ invalidar o TLB.◮ Page-fault:◮ <strong>de</strong>terminar e validar o en<strong>de</strong>reço que a causou;◮ transferir página do disco para a memória, possivelmentecom troca.◮ Terminação dum processo:◮ libertação da page table e das frames.◮ Outras tarefas:◮ manter número mínimo <strong>de</strong> frames livres;◮ swap-out processos, se frequência <strong>de</strong> page-faultsexcessiva.


Interacção com E/S◮ Converter en<strong>de</strong>reços para realizar E/S:◮ Dispositivos <strong>de</strong> E/S usam en<strong>de</strong>reços físicos, não lógicos.◮ Impedir que as páginas usadas numa operação <strong>de</strong> E/Ssejam expulsas enquanto a operação não terminar:◮ pin-down/lock páginas na memória.


Algumas Questões◮ Relacionadas com a implementação:◮ Qual <strong>de</strong>ve ser o tamanho duma página?◮ On<strong>de</strong> é que as tabelas <strong>de</strong>vem residir?◮ Será que as páginas que constituem a tabela têm que estarsempre em memória?◮ E as páginas com o SO?◮ Outras:◮ Quantas page tables são necessárias?◮ Como é que a MV paginada assegura protecção entreprocessos?◮ Que medidas se po<strong>de</strong> tomar para reduzir a frequência <strong>de</strong>page-fault?◮ Por que razões a MV funciona, i.e. tem um <strong>de</strong>sempenhopróximo do dum sistema com capacida<strong>de</strong> <strong>de</strong> memóriainfinita?


SumárioConceitos e Técnicas BásicasSwapping<strong>Gestão</strong> da <strong>Memória</strong> Física<strong>Memória</strong> VirtualFundamentosConversão <strong>de</strong> En<strong>de</strong>reçosPage FaultsAlgoritmos <strong>de</strong> Substituição <strong>de</strong> PáginasSwap AreaEnvolvimento do SOInteracção com E/SLeitura Adicional


Leitura AdicionalMo<strong>de</strong>rn Operating Systems, 2nd. Ed.◮ Secção 4.1: Fundamentos (4.1.1, 4.1.2 e 4.1.5)◮ Secção 4.2: Swapping◮ Secção 4.3: <strong>Memória</strong> Virtual◮ Secção 4.4: Page Replacement Algorithms◮ Secção 4.6: Design Issues (até 4.6.2 inclusivé).◮ Secção 4.7: Implementation Issues (excepto 4.7.3).

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!