·
Sistemas de Informação ·
Sistemas Operacionais
· 2023/2
Send your question to AI and receive an answer instantly
Recommended for you
2
Tarefa 02 Gerenciamento de Memória-2023-2
Sistemas Operacionais
UFSC
86
Paginação e Segmentação -2023-2
Sistemas Operacionais
UFSC
130
Memória Virtual-2023-2
Sistemas Operacionais
UFSC
16
Lista Resolvida-2023-2
Sistemas Operacionais
UFSC
108
Scheduling-2023-2
Sistemas Operacionais
UFSC
5
Lista de Exercícios - Gerenciamento de Memória-2023-2
Sistemas Operacionais
UFSC
1
Trabalho Prático 2-2023 1
Sistemas Operacionais
UFSC
2
Lista 2 - Gerenciamento de Memória- 2024-1
Sistemas Operacionais
UFSC
4
Lista 1 - 2023-2
Sistemas Operacionais
UFSC
10
Lista 3 - 2023-2
Sistemas Operacionais
UFSC
Preview text
Algoritmos de substituição de páginas Memória virtual Processo 1 Processo 2 Endereços físicos Espaço de endereçamento virtual (P1) n n-1 .... 2 1 páginas m ... 1 páginas Espaço de endereçamento virtual (P1) • Permite a execução de processos sem que estejam completamente carregados na memória • Páginas/segmentos são carregados na memória principal quando forem necessários • Uso de estratégias de swapping para movimento entre essas páginas do processo entre memória principal e secundária SO é responsável por: • Gerenciar quadros livres e ocupados • Controlar o compartilhamento e proteção de memória entre processos • Implementar políticas de alocação de memória • Substituir páginas em memória Princípio da localidade • O que levar em conta para definir estratégias para substituição de páginas? O princípio da localidade observa que, em determinados momentos, acessos à instruções ou dados se concentram em uma certa região do espaço de endereçamento do processo • Pode-se manter na memória física apenas partes do endereçamento lógico necessárias para a execução do processo Princípio da localidade Localidade temporal: Uma região acessada recentemente tem mais chances de ser acessada novamente do que regiões acessadas há mais tempo Ex. iterações em laços de repetição Localidade espacial: Há uma boa probabilidade de acesso às instruções e dados próximos àquelas acessadas recentemente Ex. acesso a elementos de vetores ou matrizes Paginação sob demanda O bit presente/ausente da tabela de páginas indica páginas carregadas na memória física (presente) ou em armazenamento secundário (ausente) Processo 1 Tabela de páginas • Se a página estiver marcada como presente na tabela de páginas, o endereço lógico é traduzido para o endereço físico e é feito o acesso à memória física • Se a página estiver marcada como ausente na tabela de páginas, a MMU gera uma interrupção de proteção e aciona o SO Tratamento de uma falta de página 1. Alocação de um quadro livre 2. Localização da página no armazenamento secundário (ex. disco) 3. Operação de leitura da página faltante do disco para o quadro na memória principal 4. Suspensão do processo que gerou a interrupção e escalonamento de outro processo 5. Tratamento de interrupção do disco, indicando final da transferência da página 6. Atualização da tabela de páginas do processo 7. Retirada do processo da fila de suspensos e inclusão na fila de prontos 8. Repetição da operação que causou a falta de página Tratamento de uma falta de página Desempenho Taxa de faltas de páginas: 0 ≤ 𝑝 ≤ 1, onde: 𝑝 = 0 → nenhum acesso ocasiona falta de página 𝑝 = 1 → todos os acessos ocasionam falta de página O tempo efetivo (tempo médio) de acesso é memória é dado por: 𝑡𝑒 = 1 − 𝑝 × 𝑡𝑎𝑚 + 𝑝 × 𝑡𝑝𝑓 Onde: 𝑡𝑎𝑚 representa o tempo de acesso à memória, e 𝑡𝑝𝑓 representa o tempo de tratamento de um page fault Tratamento de uma falta de página Exemplo Calcular o tempo efetivo de acesso à memória, considerando que: i) 𝑡𝑎𝑚 = 100𝑛𝑠 = 102𝑛𝑠 ii) 𝑡𝑝𝑓 = 25𝑚𝑠 = 25 × 106𝑛𝑠 iii) Um page fault ocorre a cada 1000 acessos → 𝑝 = 1 1000 = 1/103 𝑡𝑒 = 1 − 1/103 × 102 + 1 103 × 25 × 106 𝑡𝑒 = 999 10 + 25 × 103 𝑡𝑒 ≈ 25𝜇𝑠 Algoritmos de substituição de páginas • Algoritmo para decidir qual página será movida da memória para o armazenamento secundário (page-out) • Algoritmo com escolha aleatória: qualquer página pode ser escolhida • Problema: se uma página muito acessada for escolhida, logo ela será requisitada e causará outro page fault • Algoritmo ótimo: seleciona a página que levará mais tempo para ser referenciada novamente • Problema: o SO não tem como saber quando uma página será referenciada no futuro Algoritmos de substituição de páginas • Algoritmos clássicos para substituição de páginas: • Primeiro a entrar, Primeiro a sair (FIFO) • Segunda chance e relógio • Não usada recentemente (NRU) • Usada menos recentemente (LRU) FIFO – First-In, First-Out • Utiliza uma fila para ordenar as páginas por ordem de alocação • Cada nova página alocada é adicionada ao final da fila 1 12 páginas Início da fila Fim da fila FIFO – First-In, First-Out • Utiliza uma fila para ordenar as páginas por ordem de alocação • Cada nova página alocada é adicionada ao final da fila 1 14 12 Página referenciada Início da fila Fim da fila FIFO – First-In, First-Out • Utiliza uma fila para ordenar as páginas por ordem de alocação • Cada nova página alocada é adicionada ao final da fila 1 18 12 Página referenciada 14 Início da fila Fim da fila FIFO – First-In, First-Out • Utiliza uma fila para ordenar as páginas por ordem de alocação • Cada nova página alocada é adicionada ao final da fila 1 7 12 Página referenciada 14 18 Page fault Início da fila Fim da fila E quadros ocupados FIFO – First-In, First-Out • Utiliza uma fila para ordenar as páginas por ordem de alocação • Cada nova página alocada é adicionada ao final da fila 1 12 12 Página referenciada 14 18 7 Removido o primeiro item da fila Início da fila Fim da fila FIFO – First-In, First-Out • Utiliza uma fila para ordenar as páginas por ordem de alocação • Cada nova página alocada é adicionada ao final da fila 1 12 12 Página referenciada 14 18 7 Removido o primeiro item da fila Início da fila Fim da fila Desvantagem: Pode remover páginas que são frequentemente referenciadas Segunda chance e relógio • Implementação semelhante ao FIFO • Também considera o bit “referenciado” (R) da tabela de páginas • Bit é marcado em 1 quando uma página é referenciada 1 12 14 18 Início da fila Fim da fila R 1 R 1 R 0 R 1 Segunda chance e relógio • Implementação semelhante ao FIFO • Também considera o bit “referenciado” (R) da tabela de páginas • Bit é marcado em 1 quando uma página é referenciada • Page fault: Verifica início da fila. • Se bit R = 1, atribui R = 0 e move o elemento para o final da fila (terá uma segunda chance) 1 12 14 18 Início da fila Fim da fila R 1 R 0 R 0 R 1 27 Página referenciada Page fault E quadros ocupados Segunda chance e relógio • Implementação semelhante ao FIFO • Também considera o bit “referenciado” (R) da tabela de páginas • Bit é marcado em 1 quando uma página é referenciada • Page fault: Verifica início da fila. • Se bit R = 1, atribui R = 0 e move o elemento para o final da fila (terá uma segunda chance) 12 14 18 Início da fila Fim da fila R 0 R 0 R 1 27 Página referenciada Page fault 1 R 0 E quadros ocupados Segunda chance e relógio • Implementação semelhante ao FIFO • Também considera o bit “referenciado” (R) da tabela de páginas • Bit é marcado em 1 quando uma página é referenciada • Page fault: Verifica início da fila. • Se bit R = 1, atribui R = 0 e move o elemento para o final da fila (terá uma segunda chance) • Se bit R = 0, move página para o disco e remove da fila 12 14 18 Início da fila Fim da fila R 0 R 0 R 1 27 Página referenciada Page fault 1 R 0 E quadros ocupados Segunda chance e relógio • Implementação semelhante ao FIFO • Também considera o bit “referenciado” (R) da tabela de páginas • Bit é marcado em 1 quando uma página é referenciada • Page fault: Verifica início da fila. • Se bit R = 1, atribui R = 0 e move o elemento para o final da fila (terá uma segunda chance) • Se bit R = 0, move página para o disco e remove da fila • Nova página é carregada, adicionada no fim da fila e R=1 12 14 18 Início da fila Fim da fila R 0 R 0 R 1 14 Página referenciada 1 R 0 27 R 1 Segunda chance e relógio • Considerações • Ineficiente • Constantemente movendo páginas do início para o final da fila • Abordagem mais eficiente seria o uso de uma estrutura de dados circular • Um ponteiro aponta para a próxima página candidata a ser substituída • Conhecido como algoritmo do relógio Segunda chance e relógio 14 R 1 18 R 1 32 Página referenciada 1 R 0 27 R 1 Page fault E quadros ocupados Segunda chance e relógio 14 R 0 18 R 1 32 Página referenciada 1 R 0 27 R 1 Page fault E quadros ocupados Segunda chance e relógio 14 R 0 18 R 0 32 Página referenciada 1 R 0 27 R 1 Page fault E quadros ocupados Segunda chance e relógio 14 R 0 18 R 0 32 Página referenciada 1 R 0 27 R 1 Page fault E quadros ocupados Segunda chance e relógio 14 R 0 18 R 0 4 Página referenciada 32 R 1 27 R 1 Não Recentemente Utilizada (NRU – Not Recently Used) Ideia geral É melhor remover uma página modificada, mas não referenciada, do que uma página não modificada que está sendo intensamente utilizada • Considera os bits Referenciado (R) e Modificado (M) da tabela de páginas Não Recentemente Utilizada (NRU – Not Recently Used) • Quando há um page fault, verifica todas as páginas da tabela de páginas, classificando-as em função dos bits R e M 𝑹 𝑴 → 𝑪𝒍𝒂𝒔𝒔𝒆 0 0 → 𝐶𝑙𝑎𝑠𝑠𝑒 0 0 1 → 𝐶𝑙𝑎𝑠𝑠𝑒 1 1 0 → 𝐶𝑙𝑎𝑠𝑠𝑒 2 1 1 → 𝐶𝑙𝑎𝑠𝑠𝑒 3 • Remove aleatoriamente uma página da classe mais baixa Não referenciada, não modificada Não referenciada, modificada Referenciada, não modificada Referenciada, Modificada Não Recentemente Utilizada (NRU – Not Recently Used) P/A R M Quadro 1 0 0 2 0 0 0 1 0 1 37 1 1 0 1 1 1 1 5 1 1 1 12 0 1 2 3 4 5 Tabela de páginas do Processo 1 Página referenciada Page fault E quadros ocupados Não Recentemente Utilizada (NRU – Not Recently Used) P/A R M Quadro 1 0 0 2 0 0 0 1 0 1 37 1 1 0 1 1 1 1 5 1 1 1 12 0 1 2 3 4 5 Tabela de páginas do Processo 1 Página referenciada Page fault Classe 0 Classe 1 Classe 2 Classe 3 1. Seleciona uma página da classe mais baixa E quadros ocupados Não Recentemente Utilizada (NRU – Not Recently Used) P/A R M Quadro 1 0 0 2 0 0 0 1 0 1 37 1 1 0 1 1 1 1 5 1 1 1 12 0 1 2 3 4 5 Tabela de páginas do Processo 1 Página referenciada Page fault Classe 0 Classe 1 Classe 2 Classe 3 1. Seleciona uma página da classe mais baixa 2. Move a página para o disco 3. Marca bit Ausente 4. Carrega a nova página no quadro liberado E quadros ocupados Não Recentemente Utilizada (NRU – Not Recently Used) P/A R M Quadro 0 0 0 2 0 0 0 1 0 1 37 1 1 0 1 1 1 1 5 1 1 1 12 0 1 2 3 4 5 Tabela de páginas do Processo 1 Página referenciada Page fault Classe 0 Classe 1 Classe 2 Classe 3 1. Seleciona uma página da classe mais baixa 2. Move a página para o disco 3. Marca bit Ausente 4. Carrega a nova página no quadro liberado E quadros ocupados Não Recentemente Utilizada (NRU – Not Recently Used) P/A R M Quadro 0 0 0 2 1 1 1 2 1 0 1 37 1 1 0 1 1 1 1 5 1 1 1 12 0 1 2 3 4 5 Tabela de páginas do Processo 1 Página referenciada Page fault Classe 0 Classe 1 Classe 2 Classe 3 1. Seleciona uma página da classe mais baixa 2. Move a página para o disco 3. Marca bit Ausente 4. Carrega a nova página no quadro liberado E quadros ocupados Não Recentemente Utilizada (NRU – Not Recently Used) • Periodicamente o bit R de todas as páginas é alterado para 0 • Período pode ser um dado número de interrupções do relógio • Algoritmo simples, de fácil compreensão e implementação • Apresenta um bom desempenho Usado Menos Recentemente (LRU – Least Recently Used) • O algoritmo assume que: • Páginas muito referenciadas nas últimas instruções provavelmente serão usadas nas próximas instruções • Páginas não usadas por longos períodos provavelmente permanecerão inutilizadas por muito tempo • Estratégia adotada: • Remover a página não utilizada há mais tempo Usado Menos Recentemente (LRU – Least Recently Used) • Mantém uma lista ordenada de todas as páginas carregadas em memória • Páginas mais recentemente utilizadas no início da lista • Na ocorrência de um page fault: • remove a última página da lista • Problema: necessita atualizar a lista a cada referência à memória • Na prática, esta não é uma solução viável • Abordagens de software que se aproximam do LRU • Não Usadas Frequentemente (NFU, Not Frequently Used) • Envelhecimento (Aging) Não Usadas Frequentemente (NFU, Not Frequently Used) • Mantém um contador para cada página carregada • Contador é inicializado com 0 • A cada interrupção de relógio, o SO percorre todas as páginas • Para cada página... • Valor do bit Referenciado (R) é adicionado ao contador • Bit R é atualizado com 0 • Na ocorrência de um page fault: • Remove a página com o menor contador Não Usadas Frequentemente (NFU, Not Frequently Used) P/A R M Quadro C 1 0 0 2 0 0 0 0 1 0 1 37 0 1 1 0 1 0 1 1 1 5 0 1 1 1 12 0 0 1 2 3 4 5 Tabela de páginas do Processo Não Usadas Frequentemente (NFU, Not Frequently Used) P/A R M Quadro C 1 0 0 2 0 0 0 0 1 0 1 37 0 1 1 0 1 0 1 1 1 5 0 1 1 1 12 0 0 1 2 3 4 5 Tabela de páginas do Processo Interrupção do relógio Não Usadas Frequentemente (NFU, Not Frequently Used) P/A R M Quadro C 1 0 0 2 0 0 0 0 1 0 1 37 0 1 0 0 1 1 1 0 1 5 1 1 0 1 12 1 0 1 2 3 4 5 Tabela de páginas do Processo Interrupção do relógio Contador é atualizado a cada interrupção do relógio Não Usadas Frequentemente (NFU, Not Frequently Used) P/A R M Quadro C 1 0 0 2 0 0 0 0 1 1 1 37 0 1 1 0 1 1 1 0 1 5 1 1 0 1 12 1 0 1 2 3 4 5 Tabela de páginas do Processo Não Usadas Frequentemente (NFU, Not Frequently Used) P/A R M Quadro C 1 0 0 2 0 0 0 0 1 1 1 37 0 1 1 0 1 1 1 0 1 5 1 1 0 1 12 1 0 1 2 3 4 5 Tabela de páginas do Processo Interrupção do relógio Não Usadas Frequentemente (NFU, Not Frequently Used) P/A R M Quadro C 1 0 0 2 0 0 0 0 1 0 1 37 1 1 0 0 1 2 1 0 1 5 1 1 0 1 12 1 0 1 2 3 4 5 Tabela de páginas do Processo Interrupção do relógio Contador é atualizado a cada interrupção do relógio Não Usadas Frequentemente (NFU, Not Frequently Used) P/A R M Quadro C 1 0 0 2 3 0 0 0 1 0 1 37 1 1 0 0 1 5 1 0 1 5 11 1 0 1 12 6 0 1 2 3 4 5 Tabela de páginas do Processo Após algumas interrupção do relógio Contador é atualizado a cada interrupção do relógio Não Usadas Frequentemente (NFU, Not Frequently Used) P/A R M Quadro C 1 0 0 2 3 0 0 0 1 0 1 37 1 1 0 0 1 5 1 0 1 5 11 1 0 1 12 6 0 1 2 3 4 5 Tabela de páginas do Processo Após algumas interrupção do relógio 1 Página referenciada Page fault E quadros ocupados Não Usadas Frequentemente (NFU, Not Frequently Used) P/A R M Quadro C 1 0 0 2 3 0 0 0 1 0 1 37 1 1 0 0 1 5 1 0 1 5 11 1 0 1 12 6 0 1 2 3 4 5 Tabela de páginas do Processo Após algumas interrupção do relógio 1 Página referenciada Page fault Página com menor contador é escolhida Página é movida para o disco e quadro é liberado E quadros ocupados Não Usadas Frequentemente (NFU, Not Frequently Used) P/A R M Quadro C 1 0 0 2 3 0 0 0 0 0 1 37 0 1 0 0 1 5 1 0 1 5 11 1 0 1 12 6 0 1 2 3 4 5 Tabela de páginas do Processo 1 Página referenciada Page fault Página com menor contador é escolhida Página é movida para o disco e quadro é liberado E quadros ocupados Não Usadas Frequentemente (NFU, Not Frequently Used) P/A R M Quadro C 1 0 0 2 3 1 0 0 37 0 0 0 1 37 0 1 0 0 1 5 1 0 1 5 11 1 0 1 12 6 0 1 2 3 4 5 Tabela de páginas do Processo 1 Página referenciada Page fault Página com menor contador é escolhida Página é movida para o disco e quadro é liberado Carrega nova página E quadros ocupados Não Usadas Frequentemente (NFU, Not Frequently Used) • Problema: “Memória de elefante”, nunca esquece nada • Páginas muito referenciadas em um intervalo de tempo dificilmente serão eliminadas • contadores com valores altos • mesmo que não estejam sendo referenciadas recentemente • Páginas recentemente carregadas (contadores com valores ainda baixos) tem mais chances de serem removidas • Mesmo que sejam referenciadas intensamente Não Usadas Frequentemente (NFU, Not Frequently Used) Envelhecimento • Aprimoramento do NFU • Antes de adicionar o bit referenciado (R), desloca os contadores 1 bit à direita • Bit R é adicionado ao bit mais à esquerda • Penaliza as páginas não referenciadas por mais tempo • O valor do contador reduz pela metade a cada interrupção do relógio em que a página não foi acessada Não Usadas Frequentemente (NFU, Not Frequently Used) Envelhecimento P/A R M Quadro C 1 0 0 2 0000 (010) 0 0 0 0000 (010) 1 1 1 37 0000 (010) 1 0 0 1 0000 (010) 1 1 1 5 0000 (010) 1 1 1 12 0000 (010) 0 1 2 3 4 5 Tabela de páginas do Processo Não Usadas Frequentemente (NFU, Not Frequently Used) Envelhecimento P/A R M Quadro C 1 0 0 2 0000 (010) 0 0 0 0000 (010) 1 1 1 37 1000 (810) 1 0 0 1 0000 (010) 1 1 1 5 1000 (810) 1 1 1 12 1000 (810) 0 1 2 3 4 5 Tabela de páginas do Processo Interrupção do relógio Não Usadas Frequentemente (NFU, Not Frequently Used) Envelhecimento P/A R M Quadro C 1 1 0 2 0000 (010) 0 0 0 0000 (010) 1 1 1 37 1000 (810) 1 0 0 1 0000 (010) 1 0 1 5 1000 (810) 1 0 1 12 1000 (810) 0 1 2 3 4 5 Tabela de páginas do Processo Não Usadas Frequentemente (NFU, Not Frequently Used) Envelhecimento P/A R M Quadro C 1 1 0 2 1000 (810) 0 0 0 0000 (010) 1 1 1 37 1100 (1210) 1 0 0 1 0000 (010) 1 0 1 5 0100 (410) 1 0 1 12 0100 (410) 0 1 2 3 4 5 Tabela de páginas do Processo Interrupção do relógio Não Usadas Frequentemente (NFU, Not Frequently Used) Envelhecimento P/A R M Quadro C 1 1 0 2 1000 (810) 0 0 0 0000 (010) 1 0 1 37 1100 (1210) 1 1 0 1 0000 (010) 1 1 1 5 0100 (410) 1 0 1 12 0100 (410) 0 1 2 3 4 5 Tabela de páginas do Processo Não Usadas Frequentemente (NFU, Not Frequently Used) Envelhecimento P/A R M Quadro C 1 1 0 2 1100 (1210) 0 0 0 0000 (010) 1 0 1 37 0110 (610) 1 1 0 1 1000 (810) 1 1 1 5 1010 (1010) 1 0 1 12 0010 (210) 0 1 2 3 4 5 Tabela de páginas do Processo Interrupção do relógio Não Usadas Frequentemente (NFU, Not Frequently Used) Envelhecimento P/A R M Quadro C 1 1 0 2 1100 (1210) 0 0 0 0000 (010) 1 0 1 37 0110 (610) 1 1 1 5 1010 (1010) 1 0 1 12 0010 (210) 0 1 2 3 4 5 Tabela de páginas do Processo 1 Página referenciada Page fault 1 1 0 1 1000 (810) Página com menor contador é escolhida Página é movida para o disco e quadro é liberado E quadros ocupados Não Usadas Frequentemente (NFU, Not Frequently Used) Envelhecimento P/A R M Quadro C 1 1 0 2 1100 (1210) 1 1 0 12 0000 (010) 1 0 1 37 0110 (610) 1 1 1 5 1010 (1010) 0 0 1 12 0010 (210) 0 1 2 3 4 5 Tabela de páginas do Processo 1 Página referenciada Page fault 1 1 0 1 1000 (810) Página com menor contador é escolhida Página é movida para o disco e quadro é liberado Carrega nova página E quadros ocupados Não Usadas Frequentemente (NFU, Not Frequently Used) Envelhecimento • Em uma interrupção do relógio, não se sabe a ordem em que as páginas foram referenciadas • Sabe-se apenas quais foram acessadas no intervalo • Tamanho dos contadores limita a longevidade da memória • Para um contador com n bits, informação é perdida após n interrupções Referências Parte destes slides são baseadas em material de aula dos livros: • R. Oliveira, A. Carissimi, S. Toscani. Sistemas Operacionais. Editora Bookman, 2010. • Silberschatz, Galven e Gagne. Operating System Concepts (2018). • A. S. Tanenbaum. Sistemas Operacionais Modernos (2010) • R. H. Arpaci-Dusseau e A. C. Arpaci-Dusseau. Operating Systems: Three Easy Pieces (2018) Documentação do código: Classe: PageReplacementSimulator • Descrição: Esta classe implementa um simulador para algoritmos de substituição de páginas em gerenciamento de memória. Método: __init__ • Entradas: • self: Referência à instância atual da classe. • num_frames: Número de quadros disponíveis na memória. • Saídas: • Este método inicializa a instância da classe com o número especificado de quadros. Método: fifo • Entradas: • self: Referência à instância atual da classe. • reference_string: Lista de inteiros representando a sequência de páginas referenciadas. • Saídas: • Retorna o número de page faults utilizando o algoritmo FIFO. Método: second_chance • Entradas: • self: Referência à instância atual da classe. • reference_string: Lista de inteiros representando a sequência de páginas referenciadas. • Saídas: • Retorna o número de page faults utilizando o algoritmo de Segunda Chance. Método: clock • Entradas: • self: Referência à instância atual da classe. • reference_string: Lista de inteiros representando a sequência de páginas referenciadas. • Saídas: • Retorna o número de page faults utilizando o algoritmo Relógio (Clock). Método: lru • Entradas: • self: Referência à instância atual da classe. • reference_string: Lista de inteiros representando a sequência de páginas referenciadas. • Saídas: • Retorna o número de page faults utilizando o algoritmo LRU (Least Recently Used). Método: nru • Entradas: • self: Referência à instância atual da classe. • reference_string: Lista de inteiros representando a sequência de páginas referenciadas. • Saídas: • Retorna o número de page faults utilizando o algoritmo NRU (Not Recently Used). Função: analyze_performance • Entradas: • simulator: Objeto da classe PageReplacementSimulator configurado com um determinado número de quadros. • reference_string: Lista de inteiros representando a sequência de páginas referenciadas. • algorithms: Lista de strings com os nomes dos algoritmos a serem testados (por exemplo, 'fifo', 'second_chance', 'clock', 'lru', 'nru'). • Saídas: • Dicionário com os nomes dos algoritmos como chaves e o número de page faults como valores, representando o desempenho de cada algoritmo com a sequência de páginas dada. Note que esta é a única função definida com entradas e saídas explícitas no código. As demais funcionalidades do simulador são implementadas como métodos dentro da classe PageReplacementSimulator. Estes métodos (fifo, second_chance, clock, lru, nru) recebem a reference_string como entrada e retornam o número de page faults como saída. Documentação do Simulador de Substituição de Página Objetivo O simulador foi desenvolvido para estudar e avaliar estratégias de paginação sob demanda, comparando algoritmos de substituição de página como FIFO, Segunda Chance, Relógio (Clock), NRU e LRU. Funcionalidades do Simulador • Alocação e Liberação de Páginas: O simulador aloca e libera páginas na memória conforme um padrão de acesso informado. • Gestão de Páginas e Quadros: Utiliza uma tabela de páginas e gerencia bits presente/ausente. • Algoritmos Implementados: FIFO, Segunda Chance, Relógio, NRU e LRU. Entrada do Simulador • Número de Quadros Endereçáveis: Capacidade de memória em termos de quadros. • Total de Páginas Distintas Endereçáveis: Variedade de páginas que podem ser referenciadas. • Lista de Páginas Referenciadas: Sequência de referências a páginas para simulação. Saída do Simulador • Page Faults por Algoritmo: Número total de page faults gerados para cada algoritmo de substituição de páginas. • Análise de Desempenho: Inclui testes com diferentes configurações de quadros e páginas para avaliar o desempenho de cada algoritmo. Uso do Simulador 1. Defina o número de quadros e a sequência de referência. 2. Invoque os métodos correspondentes aos algoritmos de substituição de páginas. 3. Analise os resultados em termos de page faults e desempenho. Análise de Desempenho • O simulador inclui funcionalidades para testar diferentes cenários, variando o número de quadros e a diversidade de páginas. • As métricas de page faults ajudam a determinar quais algoritmos são mais eficazes em diferentes configurações. Conclusão Este simulador serve como uma ferramenta educacional e de análise para compreender o comportamento e a eficácia de diferentes algoritmos de substituição de página em sistemas de gerenciamento de memória.
Send your question to AI and receive an answer instantly
Recommended for you
2
Tarefa 02 Gerenciamento de Memória-2023-2
Sistemas Operacionais
UFSC
86
Paginação e Segmentação -2023-2
Sistemas Operacionais
UFSC
130
Memória Virtual-2023-2
Sistemas Operacionais
UFSC
16
Lista Resolvida-2023-2
Sistemas Operacionais
UFSC
108
Scheduling-2023-2
Sistemas Operacionais
UFSC
5
Lista de Exercícios - Gerenciamento de Memória-2023-2
Sistemas Operacionais
UFSC
1
Trabalho Prático 2-2023 1
Sistemas Operacionais
UFSC
2
Lista 2 - Gerenciamento de Memória- 2024-1
Sistemas Operacionais
UFSC
4
Lista 1 - 2023-2
Sistemas Operacionais
UFSC
10
Lista 3 - 2023-2
Sistemas Operacionais
UFSC
Preview text
Algoritmos de substituição de páginas Memória virtual Processo 1 Processo 2 Endereços físicos Espaço de endereçamento virtual (P1) n n-1 .... 2 1 páginas m ... 1 páginas Espaço de endereçamento virtual (P1) • Permite a execução de processos sem que estejam completamente carregados na memória • Páginas/segmentos são carregados na memória principal quando forem necessários • Uso de estratégias de swapping para movimento entre essas páginas do processo entre memória principal e secundária SO é responsável por: • Gerenciar quadros livres e ocupados • Controlar o compartilhamento e proteção de memória entre processos • Implementar políticas de alocação de memória • Substituir páginas em memória Princípio da localidade • O que levar em conta para definir estratégias para substituição de páginas? O princípio da localidade observa que, em determinados momentos, acessos à instruções ou dados se concentram em uma certa região do espaço de endereçamento do processo • Pode-se manter na memória física apenas partes do endereçamento lógico necessárias para a execução do processo Princípio da localidade Localidade temporal: Uma região acessada recentemente tem mais chances de ser acessada novamente do que regiões acessadas há mais tempo Ex. iterações em laços de repetição Localidade espacial: Há uma boa probabilidade de acesso às instruções e dados próximos àquelas acessadas recentemente Ex. acesso a elementos de vetores ou matrizes Paginação sob demanda O bit presente/ausente da tabela de páginas indica páginas carregadas na memória física (presente) ou em armazenamento secundário (ausente) Processo 1 Tabela de páginas • Se a página estiver marcada como presente na tabela de páginas, o endereço lógico é traduzido para o endereço físico e é feito o acesso à memória física • Se a página estiver marcada como ausente na tabela de páginas, a MMU gera uma interrupção de proteção e aciona o SO Tratamento de uma falta de página 1. Alocação de um quadro livre 2. Localização da página no armazenamento secundário (ex. disco) 3. Operação de leitura da página faltante do disco para o quadro na memória principal 4. Suspensão do processo que gerou a interrupção e escalonamento de outro processo 5. Tratamento de interrupção do disco, indicando final da transferência da página 6. Atualização da tabela de páginas do processo 7. Retirada do processo da fila de suspensos e inclusão na fila de prontos 8. Repetição da operação que causou a falta de página Tratamento de uma falta de página Desempenho Taxa de faltas de páginas: 0 ≤ 𝑝 ≤ 1, onde: 𝑝 = 0 → nenhum acesso ocasiona falta de página 𝑝 = 1 → todos os acessos ocasionam falta de página O tempo efetivo (tempo médio) de acesso é memória é dado por: 𝑡𝑒 = 1 − 𝑝 × 𝑡𝑎𝑚 + 𝑝 × 𝑡𝑝𝑓 Onde: 𝑡𝑎𝑚 representa o tempo de acesso à memória, e 𝑡𝑝𝑓 representa o tempo de tratamento de um page fault Tratamento de uma falta de página Exemplo Calcular o tempo efetivo de acesso à memória, considerando que: i) 𝑡𝑎𝑚 = 100𝑛𝑠 = 102𝑛𝑠 ii) 𝑡𝑝𝑓 = 25𝑚𝑠 = 25 × 106𝑛𝑠 iii) Um page fault ocorre a cada 1000 acessos → 𝑝 = 1 1000 = 1/103 𝑡𝑒 = 1 − 1/103 × 102 + 1 103 × 25 × 106 𝑡𝑒 = 999 10 + 25 × 103 𝑡𝑒 ≈ 25𝜇𝑠 Algoritmos de substituição de páginas • Algoritmo para decidir qual página será movida da memória para o armazenamento secundário (page-out) • Algoritmo com escolha aleatória: qualquer página pode ser escolhida • Problema: se uma página muito acessada for escolhida, logo ela será requisitada e causará outro page fault • Algoritmo ótimo: seleciona a página que levará mais tempo para ser referenciada novamente • Problema: o SO não tem como saber quando uma página será referenciada no futuro Algoritmos de substituição de páginas • Algoritmos clássicos para substituição de páginas: • Primeiro a entrar, Primeiro a sair (FIFO) • Segunda chance e relógio • Não usada recentemente (NRU) • Usada menos recentemente (LRU) FIFO – First-In, First-Out • Utiliza uma fila para ordenar as páginas por ordem de alocação • Cada nova página alocada é adicionada ao final da fila 1 12 páginas Início da fila Fim da fila FIFO – First-In, First-Out • Utiliza uma fila para ordenar as páginas por ordem de alocação • Cada nova página alocada é adicionada ao final da fila 1 14 12 Página referenciada Início da fila Fim da fila FIFO – First-In, First-Out • Utiliza uma fila para ordenar as páginas por ordem de alocação • Cada nova página alocada é adicionada ao final da fila 1 18 12 Página referenciada 14 Início da fila Fim da fila FIFO – First-In, First-Out • Utiliza uma fila para ordenar as páginas por ordem de alocação • Cada nova página alocada é adicionada ao final da fila 1 7 12 Página referenciada 14 18 Page fault Início da fila Fim da fila E quadros ocupados FIFO – First-In, First-Out • Utiliza uma fila para ordenar as páginas por ordem de alocação • Cada nova página alocada é adicionada ao final da fila 1 12 12 Página referenciada 14 18 7 Removido o primeiro item da fila Início da fila Fim da fila FIFO – First-In, First-Out • Utiliza uma fila para ordenar as páginas por ordem de alocação • Cada nova página alocada é adicionada ao final da fila 1 12 12 Página referenciada 14 18 7 Removido o primeiro item da fila Início da fila Fim da fila Desvantagem: Pode remover páginas que são frequentemente referenciadas Segunda chance e relógio • Implementação semelhante ao FIFO • Também considera o bit “referenciado” (R) da tabela de páginas • Bit é marcado em 1 quando uma página é referenciada 1 12 14 18 Início da fila Fim da fila R 1 R 1 R 0 R 1 Segunda chance e relógio • Implementação semelhante ao FIFO • Também considera o bit “referenciado” (R) da tabela de páginas • Bit é marcado em 1 quando uma página é referenciada • Page fault: Verifica início da fila. • Se bit R = 1, atribui R = 0 e move o elemento para o final da fila (terá uma segunda chance) 1 12 14 18 Início da fila Fim da fila R 1 R 0 R 0 R 1 27 Página referenciada Page fault E quadros ocupados Segunda chance e relógio • Implementação semelhante ao FIFO • Também considera o bit “referenciado” (R) da tabela de páginas • Bit é marcado em 1 quando uma página é referenciada • Page fault: Verifica início da fila. • Se bit R = 1, atribui R = 0 e move o elemento para o final da fila (terá uma segunda chance) 12 14 18 Início da fila Fim da fila R 0 R 0 R 1 27 Página referenciada Page fault 1 R 0 E quadros ocupados Segunda chance e relógio • Implementação semelhante ao FIFO • Também considera o bit “referenciado” (R) da tabela de páginas • Bit é marcado em 1 quando uma página é referenciada • Page fault: Verifica início da fila. • Se bit R = 1, atribui R = 0 e move o elemento para o final da fila (terá uma segunda chance) • Se bit R = 0, move página para o disco e remove da fila 12 14 18 Início da fila Fim da fila R 0 R 0 R 1 27 Página referenciada Page fault 1 R 0 E quadros ocupados Segunda chance e relógio • Implementação semelhante ao FIFO • Também considera o bit “referenciado” (R) da tabela de páginas • Bit é marcado em 1 quando uma página é referenciada • Page fault: Verifica início da fila. • Se bit R = 1, atribui R = 0 e move o elemento para o final da fila (terá uma segunda chance) • Se bit R = 0, move página para o disco e remove da fila • Nova página é carregada, adicionada no fim da fila e R=1 12 14 18 Início da fila Fim da fila R 0 R 0 R 1 14 Página referenciada 1 R 0 27 R 1 Segunda chance e relógio • Considerações • Ineficiente • Constantemente movendo páginas do início para o final da fila • Abordagem mais eficiente seria o uso de uma estrutura de dados circular • Um ponteiro aponta para a próxima página candidata a ser substituída • Conhecido como algoritmo do relógio Segunda chance e relógio 14 R 1 18 R 1 32 Página referenciada 1 R 0 27 R 1 Page fault E quadros ocupados Segunda chance e relógio 14 R 0 18 R 1 32 Página referenciada 1 R 0 27 R 1 Page fault E quadros ocupados Segunda chance e relógio 14 R 0 18 R 0 32 Página referenciada 1 R 0 27 R 1 Page fault E quadros ocupados Segunda chance e relógio 14 R 0 18 R 0 32 Página referenciada 1 R 0 27 R 1 Page fault E quadros ocupados Segunda chance e relógio 14 R 0 18 R 0 4 Página referenciada 32 R 1 27 R 1 Não Recentemente Utilizada (NRU – Not Recently Used) Ideia geral É melhor remover uma página modificada, mas não referenciada, do que uma página não modificada que está sendo intensamente utilizada • Considera os bits Referenciado (R) e Modificado (M) da tabela de páginas Não Recentemente Utilizada (NRU – Not Recently Used) • Quando há um page fault, verifica todas as páginas da tabela de páginas, classificando-as em função dos bits R e M 𝑹 𝑴 → 𝑪𝒍𝒂𝒔𝒔𝒆 0 0 → 𝐶𝑙𝑎𝑠𝑠𝑒 0 0 1 → 𝐶𝑙𝑎𝑠𝑠𝑒 1 1 0 → 𝐶𝑙𝑎𝑠𝑠𝑒 2 1 1 → 𝐶𝑙𝑎𝑠𝑠𝑒 3 • Remove aleatoriamente uma página da classe mais baixa Não referenciada, não modificada Não referenciada, modificada Referenciada, não modificada Referenciada, Modificada Não Recentemente Utilizada (NRU – Not Recently Used) P/A R M Quadro 1 0 0 2 0 0 0 1 0 1 37 1 1 0 1 1 1 1 5 1 1 1 12 0 1 2 3 4 5 Tabela de páginas do Processo 1 Página referenciada Page fault E quadros ocupados Não Recentemente Utilizada (NRU – Not Recently Used) P/A R M Quadro 1 0 0 2 0 0 0 1 0 1 37 1 1 0 1 1 1 1 5 1 1 1 12 0 1 2 3 4 5 Tabela de páginas do Processo 1 Página referenciada Page fault Classe 0 Classe 1 Classe 2 Classe 3 1. Seleciona uma página da classe mais baixa E quadros ocupados Não Recentemente Utilizada (NRU – Not Recently Used) P/A R M Quadro 1 0 0 2 0 0 0 1 0 1 37 1 1 0 1 1 1 1 5 1 1 1 12 0 1 2 3 4 5 Tabela de páginas do Processo 1 Página referenciada Page fault Classe 0 Classe 1 Classe 2 Classe 3 1. Seleciona uma página da classe mais baixa 2. Move a página para o disco 3. Marca bit Ausente 4. Carrega a nova página no quadro liberado E quadros ocupados Não Recentemente Utilizada (NRU – Not Recently Used) P/A R M Quadro 0 0 0 2 0 0 0 1 0 1 37 1 1 0 1 1 1 1 5 1 1 1 12 0 1 2 3 4 5 Tabela de páginas do Processo 1 Página referenciada Page fault Classe 0 Classe 1 Classe 2 Classe 3 1. Seleciona uma página da classe mais baixa 2. Move a página para o disco 3. Marca bit Ausente 4. Carrega a nova página no quadro liberado E quadros ocupados Não Recentemente Utilizada (NRU – Not Recently Used) P/A R M Quadro 0 0 0 2 1 1 1 2 1 0 1 37 1 1 0 1 1 1 1 5 1 1 1 12 0 1 2 3 4 5 Tabela de páginas do Processo 1 Página referenciada Page fault Classe 0 Classe 1 Classe 2 Classe 3 1. Seleciona uma página da classe mais baixa 2. Move a página para o disco 3. Marca bit Ausente 4. Carrega a nova página no quadro liberado E quadros ocupados Não Recentemente Utilizada (NRU – Not Recently Used) • Periodicamente o bit R de todas as páginas é alterado para 0 • Período pode ser um dado número de interrupções do relógio • Algoritmo simples, de fácil compreensão e implementação • Apresenta um bom desempenho Usado Menos Recentemente (LRU – Least Recently Used) • O algoritmo assume que: • Páginas muito referenciadas nas últimas instruções provavelmente serão usadas nas próximas instruções • Páginas não usadas por longos períodos provavelmente permanecerão inutilizadas por muito tempo • Estratégia adotada: • Remover a página não utilizada há mais tempo Usado Menos Recentemente (LRU – Least Recently Used) • Mantém uma lista ordenada de todas as páginas carregadas em memória • Páginas mais recentemente utilizadas no início da lista • Na ocorrência de um page fault: • remove a última página da lista • Problema: necessita atualizar a lista a cada referência à memória • Na prática, esta não é uma solução viável • Abordagens de software que se aproximam do LRU • Não Usadas Frequentemente (NFU, Not Frequently Used) • Envelhecimento (Aging) Não Usadas Frequentemente (NFU, Not Frequently Used) • Mantém um contador para cada página carregada • Contador é inicializado com 0 • A cada interrupção de relógio, o SO percorre todas as páginas • Para cada página... • Valor do bit Referenciado (R) é adicionado ao contador • Bit R é atualizado com 0 • Na ocorrência de um page fault: • Remove a página com o menor contador Não Usadas Frequentemente (NFU, Not Frequently Used) P/A R M Quadro C 1 0 0 2 0 0 0 0 1 0 1 37 0 1 1 0 1 0 1 1 1 5 0 1 1 1 12 0 0 1 2 3 4 5 Tabela de páginas do Processo Não Usadas Frequentemente (NFU, Not Frequently Used) P/A R M Quadro C 1 0 0 2 0 0 0 0 1 0 1 37 0 1 1 0 1 0 1 1 1 5 0 1 1 1 12 0 0 1 2 3 4 5 Tabela de páginas do Processo Interrupção do relógio Não Usadas Frequentemente (NFU, Not Frequently Used) P/A R M Quadro C 1 0 0 2 0 0 0 0 1 0 1 37 0 1 0 0 1 1 1 0 1 5 1 1 0 1 12 1 0 1 2 3 4 5 Tabela de páginas do Processo Interrupção do relógio Contador é atualizado a cada interrupção do relógio Não Usadas Frequentemente (NFU, Not Frequently Used) P/A R M Quadro C 1 0 0 2 0 0 0 0 1 1 1 37 0 1 1 0 1 1 1 0 1 5 1 1 0 1 12 1 0 1 2 3 4 5 Tabela de páginas do Processo Não Usadas Frequentemente (NFU, Not Frequently Used) P/A R M Quadro C 1 0 0 2 0 0 0 0 1 1 1 37 0 1 1 0 1 1 1 0 1 5 1 1 0 1 12 1 0 1 2 3 4 5 Tabela de páginas do Processo Interrupção do relógio Não Usadas Frequentemente (NFU, Not Frequently Used) P/A R M Quadro C 1 0 0 2 0 0 0 0 1 0 1 37 1 1 0 0 1 2 1 0 1 5 1 1 0 1 12 1 0 1 2 3 4 5 Tabela de páginas do Processo Interrupção do relógio Contador é atualizado a cada interrupção do relógio Não Usadas Frequentemente (NFU, Not Frequently Used) P/A R M Quadro C 1 0 0 2 3 0 0 0 1 0 1 37 1 1 0 0 1 5 1 0 1 5 11 1 0 1 12 6 0 1 2 3 4 5 Tabela de páginas do Processo Após algumas interrupção do relógio Contador é atualizado a cada interrupção do relógio Não Usadas Frequentemente (NFU, Not Frequently Used) P/A R M Quadro C 1 0 0 2 3 0 0 0 1 0 1 37 1 1 0 0 1 5 1 0 1 5 11 1 0 1 12 6 0 1 2 3 4 5 Tabela de páginas do Processo Após algumas interrupção do relógio 1 Página referenciada Page fault E quadros ocupados Não Usadas Frequentemente (NFU, Not Frequently Used) P/A R M Quadro C 1 0 0 2 3 0 0 0 1 0 1 37 1 1 0 0 1 5 1 0 1 5 11 1 0 1 12 6 0 1 2 3 4 5 Tabela de páginas do Processo Após algumas interrupção do relógio 1 Página referenciada Page fault Página com menor contador é escolhida Página é movida para o disco e quadro é liberado E quadros ocupados Não Usadas Frequentemente (NFU, Not Frequently Used) P/A R M Quadro C 1 0 0 2 3 0 0 0 0 0 1 37 0 1 0 0 1 5 1 0 1 5 11 1 0 1 12 6 0 1 2 3 4 5 Tabela de páginas do Processo 1 Página referenciada Page fault Página com menor contador é escolhida Página é movida para o disco e quadro é liberado E quadros ocupados Não Usadas Frequentemente (NFU, Not Frequently Used) P/A R M Quadro C 1 0 0 2 3 1 0 0 37 0 0 0 1 37 0 1 0 0 1 5 1 0 1 5 11 1 0 1 12 6 0 1 2 3 4 5 Tabela de páginas do Processo 1 Página referenciada Page fault Página com menor contador é escolhida Página é movida para o disco e quadro é liberado Carrega nova página E quadros ocupados Não Usadas Frequentemente (NFU, Not Frequently Used) • Problema: “Memória de elefante”, nunca esquece nada • Páginas muito referenciadas em um intervalo de tempo dificilmente serão eliminadas • contadores com valores altos • mesmo que não estejam sendo referenciadas recentemente • Páginas recentemente carregadas (contadores com valores ainda baixos) tem mais chances de serem removidas • Mesmo que sejam referenciadas intensamente Não Usadas Frequentemente (NFU, Not Frequently Used) Envelhecimento • Aprimoramento do NFU • Antes de adicionar o bit referenciado (R), desloca os contadores 1 bit à direita • Bit R é adicionado ao bit mais à esquerda • Penaliza as páginas não referenciadas por mais tempo • O valor do contador reduz pela metade a cada interrupção do relógio em que a página não foi acessada Não Usadas Frequentemente (NFU, Not Frequently Used) Envelhecimento P/A R M Quadro C 1 0 0 2 0000 (010) 0 0 0 0000 (010) 1 1 1 37 0000 (010) 1 0 0 1 0000 (010) 1 1 1 5 0000 (010) 1 1 1 12 0000 (010) 0 1 2 3 4 5 Tabela de páginas do Processo Não Usadas Frequentemente (NFU, Not Frequently Used) Envelhecimento P/A R M Quadro C 1 0 0 2 0000 (010) 0 0 0 0000 (010) 1 1 1 37 1000 (810) 1 0 0 1 0000 (010) 1 1 1 5 1000 (810) 1 1 1 12 1000 (810) 0 1 2 3 4 5 Tabela de páginas do Processo Interrupção do relógio Não Usadas Frequentemente (NFU, Not Frequently Used) Envelhecimento P/A R M Quadro C 1 1 0 2 0000 (010) 0 0 0 0000 (010) 1 1 1 37 1000 (810) 1 0 0 1 0000 (010) 1 0 1 5 1000 (810) 1 0 1 12 1000 (810) 0 1 2 3 4 5 Tabela de páginas do Processo Não Usadas Frequentemente (NFU, Not Frequently Used) Envelhecimento P/A R M Quadro C 1 1 0 2 1000 (810) 0 0 0 0000 (010) 1 1 1 37 1100 (1210) 1 0 0 1 0000 (010) 1 0 1 5 0100 (410) 1 0 1 12 0100 (410) 0 1 2 3 4 5 Tabela de páginas do Processo Interrupção do relógio Não Usadas Frequentemente (NFU, Not Frequently Used) Envelhecimento P/A R M Quadro C 1 1 0 2 1000 (810) 0 0 0 0000 (010) 1 0 1 37 1100 (1210) 1 1 0 1 0000 (010) 1 1 1 5 0100 (410) 1 0 1 12 0100 (410) 0 1 2 3 4 5 Tabela de páginas do Processo Não Usadas Frequentemente (NFU, Not Frequently Used) Envelhecimento P/A R M Quadro C 1 1 0 2 1100 (1210) 0 0 0 0000 (010) 1 0 1 37 0110 (610) 1 1 0 1 1000 (810) 1 1 1 5 1010 (1010) 1 0 1 12 0010 (210) 0 1 2 3 4 5 Tabela de páginas do Processo Interrupção do relógio Não Usadas Frequentemente (NFU, Not Frequently Used) Envelhecimento P/A R M Quadro C 1 1 0 2 1100 (1210) 0 0 0 0000 (010) 1 0 1 37 0110 (610) 1 1 1 5 1010 (1010) 1 0 1 12 0010 (210) 0 1 2 3 4 5 Tabela de páginas do Processo 1 Página referenciada Page fault 1 1 0 1 1000 (810) Página com menor contador é escolhida Página é movida para o disco e quadro é liberado E quadros ocupados Não Usadas Frequentemente (NFU, Not Frequently Used) Envelhecimento P/A R M Quadro C 1 1 0 2 1100 (1210) 1 1 0 12 0000 (010) 1 0 1 37 0110 (610) 1 1 1 5 1010 (1010) 0 0 1 12 0010 (210) 0 1 2 3 4 5 Tabela de páginas do Processo 1 Página referenciada Page fault 1 1 0 1 1000 (810) Página com menor contador é escolhida Página é movida para o disco e quadro é liberado Carrega nova página E quadros ocupados Não Usadas Frequentemente (NFU, Not Frequently Used) Envelhecimento • Em uma interrupção do relógio, não se sabe a ordem em que as páginas foram referenciadas • Sabe-se apenas quais foram acessadas no intervalo • Tamanho dos contadores limita a longevidade da memória • Para um contador com n bits, informação é perdida após n interrupções Referências Parte destes slides são baseadas em material de aula dos livros: • R. Oliveira, A. Carissimi, S. Toscani. Sistemas Operacionais. Editora Bookman, 2010. • Silberschatz, Galven e Gagne. Operating System Concepts (2018). • A. S. Tanenbaum. Sistemas Operacionais Modernos (2010) • R. H. Arpaci-Dusseau e A. C. Arpaci-Dusseau. Operating Systems: Three Easy Pieces (2018) Documentação do código: Classe: PageReplacementSimulator • Descrição: Esta classe implementa um simulador para algoritmos de substituição de páginas em gerenciamento de memória. Método: __init__ • Entradas: • self: Referência à instância atual da classe. • num_frames: Número de quadros disponíveis na memória. • Saídas: • Este método inicializa a instância da classe com o número especificado de quadros. Método: fifo • Entradas: • self: Referência à instância atual da classe. • reference_string: Lista de inteiros representando a sequência de páginas referenciadas. • Saídas: • Retorna o número de page faults utilizando o algoritmo FIFO. Método: second_chance • Entradas: • self: Referência à instância atual da classe. • reference_string: Lista de inteiros representando a sequência de páginas referenciadas. • Saídas: • Retorna o número de page faults utilizando o algoritmo de Segunda Chance. Método: clock • Entradas: • self: Referência à instância atual da classe. • reference_string: Lista de inteiros representando a sequência de páginas referenciadas. • Saídas: • Retorna o número de page faults utilizando o algoritmo Relógio (Clock). Método: lru • Entradas: • self: Referência à instância atual da classe. • reference_string: Lista de inteiros representando a sequência de páginas referenciadas. • Saídas: • Retorna o número de page faults utilizando o algoritmo LRU (Least Recently Used). Método: nru • Entradas: • self: Referência à instância atual da classe. • reference_string: Lista de inteiros representando a sequência de páginas referenciadas. • Saídas: • Retorna o número de page faults utilizando o algoritmo NRU (Not Recently Used). Função: analyze_performance • Entradas: • simulator: Objeto da classe PageReplacementSimulator configurado com um determinado número de quadros. • reference_string: Lista de inteiros representando a sequência de páginas referenciadas. • algorithms: Lista de strings com os nomes dos algoritmos a serem testados (por exemplo, 'fifo', 'second_chance', 'clock', 'lru', 'nru'). • Saídas: • Dicionário com os nomes dos algoritmos como chaves e o número de page faults como valores, representando o desempenho de cada algoritmo com a sequência de páginas dada. Note que esta é a única função definida com entradas e saídas explícitas no código. As demais funcionalidades do simulador são implementadas como métodos dentro da classe PageReplacementSimulator. Estes métodos (fifo, second_chance, clock, lru, nru) recebem a reference_string como entrada e retornam o número de page faults como saída. Documentação do Simulador de Substituição de Página Objetivo O simulador foi desenvolvido para estudar e avaliar estratégias de paginação sob demanda, comparando algoritmos de substituição de página como FIFO, Segunda Chance, Relógio (Clock), NRU e LRU. Funcionalidades do Simulador • Alocação e Liberação de Páginas: O simulador aloca e libera páginas na memória conforme um padrão de acesso informado. • Gestão de Páginas e Quadros: Utiliza uma tabela de páginas e gerencia bits presente/ausente. • Algoritmos Implementados: FIFO, Segunda Chance, Relógio, NRU e LRU. Entrada do Simulador • Número de Quadros Endereçáveis: Capacidade de memória em termos de quadros. • Total de Páginas Distintas Endereçáveis: Variedade de páginas que podem ser referenciadas. • Lista de Páginas Referenciadas: Sequência de referências a páginas para simulação. Saída do Simulador • Page Faults por Algoritmo: Número total de page faults gerados para cada algoritmo de substituição de páginas. • Análise de Desempenho: Inclui testes com diferentes configurações de quadros e páginas para avaliar o desempenho de cada algoritmo. Uso do Simulador 1. Defina o número de quadros e a sequência de referência. 2. Invoque os métodos correspondentes aos algoritmos de substituição de páginas. 3. Analise os resultados em termos de page faults e desempenho. Análise de Desempenho • O simulador inclui funcionalidades para testar diferentes cenários, variando o número de quadros e a diversidade de páginas. • As métricas de page faults ajudam a determinar quais algoritmos são mais eficazes em diferentes configurações. Conclusão Este simulador serve como uma ferramenta educacional e de análise para compreender o comportamento e a eficácia de diferentes algoritmos de substituição de página em sistemas de gerenciamento de memória.