chore: final pre-submission polish for JOSS

- Add CITATION.cff for GitHub citation support and Zenodo/JOSS integration
- Fix ossim reference URL in references.bib (was pointing to unrelated repo)
- Remove broken favicon reference from index.html (no public/ directory exists)
- Add meta description to index.html
- Fix sidebar title inconsistency: "Process Simulator" → "Process Scheduler Simulator"
- Rebuild dist.tar.gz with production assets

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lucas RayanandClaude Sonnet 4.6 committed 2026-03-23 19:50:45 -03:00
1 parent fa009102eb
commit 22925578b1
34 files changed
+304 -255

No files matched your search

+10 -10
View File
@@ -15,13 +15,13 @@ This document describes in detail the scheduling algorithms implemented in PSS.
---
## FCFS — First Come, First Served
## FCFS (First Come, First Served)
**Type:** Non-preemptive
### How it works
Perhaps the most intuitive algorithm: the process that arrived first is served first. The Ready queue is sorted by `arrivalTime`. Once a process occupies the CPU, it stays there until its current CPU burst is complete — no interruptions.
Perhaps the most intuitive algorithm: the process that arrived first is served first. The Ready queue is sorted by `arrivalTime`. Once a process occupies the CPU, it stays there until its current CPU burst is complete, with no interruptions.
### Example
@@ -42,11 +42,11 @@ Tick: 0 1 2 3 4 5 6 7
### Note: Convoy Effect
If a long process arrives before several short ones, the short ones wait a long time — even though the CPU could be serving them. This phenomenon is called the **Convoy Effect** and is one of the main drawbacks of FCFS. Try the `convoy_effect` preset to visualize it.
If a long process arrives before several short ones, the short ones wait a long time, even though the CPU could be serving them. This phenomenon is called the **Convoy Effect** and is one of the main drawbacks of FCFS. Try the `convoy_effect` preset to visualize it.
---
## SJF — Shortest Job First (Non-Preemptive)
## SJF (Shortest Job First - Non-Preemptive)
**Type:** Non-preemptive
@@ -62,7 +62,7 @@ No additional parameters.
---
## SRTF — Shortest Remaining Time First (Preemptive SJF)
## SRTF (Shortest Remaining Time First - Preemptive SJF)
**Type:** Preemptive
@@ -93,7 +93,7 @@ Tick 12: P1 finishes
The Ready queue is treated as a circular queue. Each process receives at most `quantum` consecutive CPU ticks. If the process still has remaining burst at the end of the quantum, it goes back to the **end** of the Ready queue and waits its turn.
I/O bursts **do not** consume quantum — the process voluntarily leaves the CPU when initiating I/O.
I/O bursts **do not** consume quantum, as the process voluntarily leaves the CPU when initiating I/O.
### Trade-off
@@ -123,7 +123,7 @@ Try the `starvation` and `aging_fix` presets to see this difference.
---
## HRRN — Highest Response Ratio Next
## HRRN (Highest Response Ratio Next)
**Type:** Non-preemptive
@@ -152,7 +152,7 @@ The process with the **highest ratio** is selected. This naturally increases the
### How it works
Processes are distributed across multiple queues with different priorities. Each queue has its own Round Robin quantum. Higher-priority queues are always served first — a lower-priority queue only receives CPU if all queues above it are empty.
Processes are distributed across multiple queues with different priorities. Each queue has its own Round Robin quantum. Higher-priority queues are always served first. A lower-priority queue only receives CPU if all queues above it are empty.
This allows different classes of processes to be treated distinctly: for example, interactive processes in high-priority queues (small quantum) and batch processes in low-priority queues (larger quantum).
@@ -160,5 +160,5 @@ This allows different classes of processes to be treated distinctly: for example
## References
- Silberschatz, A., Galvin, P. B., & Gagne, G. — *Operating System Concepts*, 10th edition
- Tanenbaum, A. S. — *Modern Operating Systems*, 4th edition
- Silberschatz, A., Galvin, P. B., & Gagne, G., *Operating System Concepts*, 10th edition.
- Tanenbaum, A. S., *Modern Operating Systems*, 4th edition.
+10 -10
View File
@@ -15,13 +15,13 @@ Este documento descreve em detalhes os algoritmos de escalonamento implementados
---
## FCFS — First Come, First Served
## FCFS (First Come, First Served)
**Tipo:** Não-preemptivo
### Como funciona
Talvez o algoritmo mais intuitivo: o processo que chegou primeiro é atendido primeiro. A fila Ready é ordenada por `arrivalTime`. Quando um processo ocupa a CPU, ele permanece lá até completar seu burst de CPU atual — sem interrupções.
Talvez o algoritmo mais intuitivo: o processo que chegou primeiro é atendido primeiro. A fila Ready é ordenada por `arrivalTime`. Quando um processo ocupa a CPU, ele permanece lá até completar seu burst de CPU atual, sem interrupções.
### Exemplo
@@ -42,11 +42,11 @@ Tick: 0 1 2 3 4 5 6 7
### Observação: Efeito de Comboio
Se um processo longo chega antes de vários processos curtos, estes ficam esperando por muito tempo — mesmo que a CPU esteja "disponível" para eles. Este fenômeno é chamado de **Convoy Effect** e é um dos principais problemas do FCFS. Experimente o preset `convoy_effect` para visualizá-lo.
Se um processo longo chega antes de vários processos curtos, estes ficam esperando por muito tempo, mesmo que a CPU esteja "disponível" para eles. Este fenômeno é chamado de **Convoy Effect** e é um dos principais problemas do FCFS. Experimente o preset `convoy_effect` para visualizá-lo.
---
## SJF — Shortest Job First (Não-Preemptivo)
## SJF (Shortest Job First - Não-Preemptivo)
**Tipo:** Não-preemptivo
@@ -62,7 +62,7 @@ Nenhum parâmetro adicional.
---
## SRTF — Shortest Remaining Time First (SJF Preemptivo)
## SRTF (Shortest Remaining Time First - SJF Preemptivo)
**Tipo:** Preemptivo
@@ -93,7 +93,7 @@ Tick 12: P1 termina
A fila Ready é tratada como uma fila circular. Cada processo recebe no máximo `quantum` ticks de CPU consecutivos. Se ao final do quantum o processo ainda tiver burst restante, ele retorna ao **fim** da fila Ready e aguarda sua vez.
I/O bursts **não** consomem quantum — o processo sai voluntariamente da CPU quando inicia I/O.
I/O bursts **não** consomem quantum, pois o processo sai voluntariamente da CPU quando inicia I/O.
### Tradeoff
@@ -123,7 +123,7 @@ Experimente os presets `starvation` e `aging_fix` para ver esta diferença.
---
## HRRN — Highest Response Ratio Next
## HRRN (Highest Response Ratio Next)
**Tipo:** Não-preemptivo
@@ -152,7 +152,7 @@ O processo com o **maior ratio** é selecionado. Isso faz com que processos que
### Como funciona
Os processos são distribuídos em múltiplas filas com diferentes prioridades. Cada fila tem seu próprio quantum de Round Robin. Filas de maior prioridade sempre são servidas primeiro — uma fila de menor prioridade só recebe CPU se todas as filas acima dela estiverem vazias.
Os processos são distribuídos em múltiplas filas com diferentes prioridades. Cada fila tem seu próprio quantum de Round Robin. Filas de maior prioridade sempre são servidas primeiro. Uma fila de menor prioridade só recebe CPU se todas as filas acima dela estiverem vazias.
Isso permite tratar diferentes classes de processos de forma distinta: por exemplo, processos interativos em filas de alta prioridade (quantum pequeno) e processos batch em filas de baixa prioridade (quantum maior).
@@ -160,5 +160,5 @@ Isso permite tratar diferentes classes de processos de forma distinta: por exemp
## Referências
- Silberschatz, A., Galvin, P. B., & Gagne, G. — *Operating System Concepts*, 10ª edição
- Tanenbaum, A. S. — *Modern Operating Systems*, 4ª edição
- Silberschatz, A., Galvin, P. B., & Gagne, G., *Operating System Concepts*, 10ª edição.
- Tanenbaum, A. S., *Modern Operating Systems*, 4ª edição.
+6 -6
View File
@@ -79,7 +79,7 @@ otherwise → Balanced
## Charts ("Chart" tab)
### Comparative Profile — Radar Chart
### Comparative Profile (Radar Chart)
Displayed when there are **2 or more processes**. Each axis represents a time dimension, normalized from 0–100% relative to the largest value in that dimension among all processes:
@@ -91,15 +91,15 @@ Displayed when there are **2 or more processes**. Each axis represents a time di
| **CPU Time** | Relative CPU usage |
| **I/O Time** | Relative I/O usage |
Each process is drawn as a colored polygon (the color configured for the process). Wider polygons indicate processes with larger times in the corresponding dimensions. The radar chart is ideal for identifying **profile differences** between processes — for example, a CPU Bound process will have a much larger CPU Time axis than I/O Time.
Each process is drawn as a colored polygon (the color configured for the process). Wider polygons indicate processes with larger times in the corresponding dimensions. The radar chart is ideal for identifying **profile differences** between processes (for example, a CPU Bound process will have a much larger CPU Time axis than I/O Time).
### Per-Process Breakdown — Stacked Bar Chart
### Per-Process Breakdown (Stacked Bar Chart)
Always displayed. Each bar represents a process, with stacked segments:
- **Amber** — Waiting Time
- **Green** — CPU Time
- **Cyan** — I/O Time
- **Amber**: Waiting Time
- **Green**: CPU Time
- **Cyan**: I/O Time
The total height of each bar equals the **Turnaround Time** of the process.
+6 -6
View File
@@ -79,7 +79,7 @@ caso contrário → Balanced
## Gráficos (aba "Gráfico")
### Perfil Comparativo — Radar Chart
### Perfil Comparativo (Radar Chart)
Exibido quando há **2 ou mais processos**. Cada eixo representa uma dimensão de tempo, normalizada de 0–100% em relação ao maior valor dessa dimensão entre todos os processos:
@@ -91,15 +91,15 @@ Exibido quando há **2 ou mais processos**. Cada eixo representa uma dimensão d
| **CPU Time** | Uso de CPU relativo |
| **I/O Time** | Uso de I/O relativo |
Cada processo é desenhado como um polígono colorido (a cor configurada no processo). Polígonos mais "amplos" indicam processos com tempos maiores nas dimensões correspondentes. O radar é ideal para identificar **diferenças de perfil** entre processos — por exemplo, um processo CPU Bound terá o eixo CPU Time muito maior que o eixo I/O Time.
Cada processo é desenhado como um polígono colorido (a cor configurada no processo). Polígonos mais "amplos" indicam processos com tempos maiores nas dimensões correspondentes. O radar é ideal para identificar **diferenças de perfil** entre processos (por exemplo, um processo CPU Bound terá o eixo CPU Time muito maior que o eixo I/O Time).
### Breakdown por Processo — Stacked Bar Chart
### Breakdown por Processo (Stacked Bar Chart)
Sempre exibido. Cada barra representa um processo, com os segmentos empilhados:
- **Âmbar** — Waiting Time
- **Verde** — CPU Time
- **Ciano** — I/O Time
- **Âmbar**: Waiting Time
- **Verde**: CPU Time
- **Ciano**: I/O Time
A altura total de cada barra equivale ao **Turnaround Time** do processo.