Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Simulação do algoritmo WSClock

Trabalho da disciplina de Sistemas Operacionais no SENAI CIMATEC, novembro de 2022. Feito em dupla com Guilherme Marinho.

O WSClock é um algoritmo de substituição de páginas: quando a memória enche e o sistema precisa carregar uma página nova, ele decide qual das que já estão lá vai embora. A ideia é combinar o relógio (páginas num anel, um ponteiro girando) com o conceito de working set, o conjunto de páginas que o processo usou recentemente. Página fora do working set pode sair; página dentro dele, não, porque tirá-la garante uma falta de página logo em seguida.

Esta simulação é interativa: você monta o anel de frames e vai disparando referências e substituições na mão, vendo o estado das páginas a cada passo.

Como funciona a implementação

Cada página é um nó de uma lista circular com três campos: id, o instante da última referencia, e o bit R (foi referenciada desde a última varredura?).

O relógio virtual não anda de um em um: a cada referência ele avança um valor aleatório de 1 a 5. Isso simula o tempo que passa entre acessos e faz as páginas envelhecerem em ritmos diferentes, que é o que torna a simulação interessante.

A substituição (substituir_pagina) percorre o anel a partir do ponteiro:

  1. Página com R = 1 → zera o R e segue em frente. Ela foi usada há pouco; ganha uma segunda chance.
  2. Página com R = 0 e referencia < tempo_atual - Δ → está fora do working set. É esta que sai.
  3. Voltou ao ponto de partida sem achar nenhuma → todas estão no working set. Substitui a primeira, porque alguma tem que sair.

O Δ (working set) é fixo em 3, no #define Delta do cabeçalho. Mexer nele muda bastante o comportamento: Δ grande protege mais páginas e força mais o caso 3.

Rodando

g++ -o wsclock src/Main.cpp
./wsclock

O programa pergunta quantos frames criar e o instante inicial de cada um. Depois disso aceita:

Tecla O que faz
R Referencia uma página: marca R = 1 e atualiza o instante
S Roda o algoritmo e substitui uma página
W Mostra o tempo atual do relógio
E Imprime o anel inteiro com os atributos de cada página
F Encerra

src/Main.cpp usa system("pause") e system("cls"), que são comandos do Windows, onde o trabalho rodou. No Linux compila e funciona, mas essas duas chamadas não fazem nada além de imprimir um erro do shell.

docs/ tem o PDF entregue junto com o código.

About

Simulação do algoritmo de substituição de páginas WSClock

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages