# 📏 Métricas O PSS calcula automaticamente um conjunto de métricas ao final (ou durante) a simulação. Este documento explica cada métrica, sua fórmula, o que ela representa e como lê-la nos gráficos. --- ## Métricas por Processo Estas métricas são calculadas individualmente para cada processo simulado. | Métrica | Fórmula | O que significa | |---------|---------|----------------| | **Arrival Time** | `arrivalTime` | Tick em que o processo entrou na fila Ready pela primeira vez | | **First CPU Tick** | `startTick` | Tick em que o processo usou a CPU pela primeira vez | | **Finish Time** | `finishTick` | Tick em que o processo encerrou sua execução | | **Response Time** | `startTick − arrivalTime` | Quanto tempo o processo esperou antes de receber a CPU pela primeira vez | | **Turnaround Time** | `finishTick − arrivalTime` | Tempo total de vida do processo (chegada → término) | | **Waiting Time** | `turnaround − cpuTime − ioTime` | Tempo total na fila Ready (sem fazer nada útil) | | **CPU Time** | Σ ticks em estado Running | Total de CPU efetivamente consumido | | **I/O Time** | Σ ticks em estado Waiting | Total de tempo aguardando dispositivos de I/O | | **CPU Utilization** | `cpuTime / turnaround × 100` | Percentual do turnaround em que o processo estava de fato usando CPU | | **Bound Type** | ver abaixo | Classificação do processo como CPU Bound, I/O Bound ou Balanced | ### Visualização na tabela Na aba **Por Processo**, cada linha exibe mini barras de progresso horizontais inline ao lado dos valores numéricos. As barras são proporcionais ao **maior valor da mesma métrica entre todos os processos**, permitindo comparação visual imediata: | Coluna | Cor da barra | |--------|-------------| | Response Time | Âmbar | | Turnaround Time | Azul | | Waiting Time | Laranja | | CPU Time | Esmeralda | | I/O Time | Ciano | | CPU Utilization | Gradiente violeta → azul | --- ## Métricas Globais Calculadas sobre o conjunto completo de processos da simulação. | Métrica | Fórmula | |---------|---------| | **Avg Response Time** | Média dos response times de todos os processos | | **Avg Turnaround Time** | Média dos turnaround times | | **Avg Waiting Time** | Média dos waiting times | | **CPU Throughput** | `processos concluídos / tempo total de simulação` | | **CPU Utilization (global)** | `Σ ticks em Running / tempo total × 100` | | **Total Simulation Time** | Tick do último evento de término | Na aba **Global**, cada card de tempo (Response, Turnaround, Waiting) exibe uma barra proporcional ao **tempo total de simulação**, indicando "quanto desse tempo total o processo médio passa nesse estado". A barra de CPU Utilization usa um gradiente âmbar → verde para indicar saúde da utilização. --- ## Classificação CPU Bound vs. I/O Bound Ao final da simulação, cada processo é classificado automaticamente com base na proporção de tempo gasto em CPU e I/O: ``` cpuRatio = cpuTime / (cpuTime + ioTime) ioRatio = ioTime / (cpuTime + ioTime) cpuRatio ≥ 0.65 → CPU Bound ioRatio ≥ 0.65 → I/O Bound caso contrário → Balanced ``` - **CPU Bound:** o processo passa a maior parte do tempo usando o processador. - **I/O Bound:** o processo passa a maior parte do tempo esperando dispositivos de entrada/saída. - **Balanced:** o processo usa CPU e I/O de forma equilibrada. > **Na lista de processos:** estimativa calculada sobre os bursts declarados (antes da simulação). > **Na tabela de métricas:** classificação calculada sobre os tempos reais registrados. --- ## Gráficos (aba "Gráfico") ### 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: | Eixo | Significado | |------|------------| | **Turnaround** | Tempo total de vida relativo | | **Response** | Tempo até a primeira CPU relativo | | **Waiting** | Tempo na fila Ready relativo | | **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. ### 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 A altura total de cada barra equivale ao **Turnaround Time** do processo. --- ## Exemplo Considere três processos com os seguintes bursts: | Processo | Bursts | cpuTime | ioTime | cpuRatio | Classificação | |----------|--------|:-------:|:------:|:--------:|:-------------:| | P1 | CPU:8, IO:1, CPU:1 | 9 | 1 | 90% | CPU Bound | | P2 | CPU:1, IO:8, CPU:1 | 2 | 8 | 20% | I/O Bound | | P3 | CPU:4, IO:2, CPU:4 | 8 | 2 | 80% | CPU Bound |