Implementando a Funcionalidade de Entrada de Processos
Nesta etapa, implementaremos a funcionalidade para coletar informações sobre os processos a serem escalonados. Para o escalonamento FCFS, precisamos saber:
- O número de processos
- O tempo de burst (burst time) para cada processo (tempo de execução exigido por cada processo)
Vamos modificar nosso arquivo fcfs.cpp para incluir essa funcionalidade:
#include <iostream>
#include <iomanip> // Para saída formatada
using namespace std;
int main() {
cout << "FCFS Scheduling Algorithm Implementation" << endl;
cout << "----------------------------------------" << endl;
// Declaração de variáveis
int n; // Número de processos
int burst_time[20]; // Array para armazenar o tempo de burst de cada processo
// Obter o número de processos do usuário
cout << "\nDigite o número de processos (máximo 20): ";
cin >> n;
// Validação da entrada
if (n <= 0 || n > 20) {
cout << "Número inválido de processos. Por favor, insira um valor entre 1 e 20." << endl;
return 1;
}
// Obter o tempo de burst para cada processo
cout << "\nDigite o Tempo de Burst para cada processo:" << endl;
for (int i = 0; i < n; i++) {
cout << "Processo P" << i + 1 << ": ";
cin >> burst_time[i];
// Validação da entrada para o tempo de burst
if (burst_time[i] <= 0) {
cout << "O tempo de burst deve ser um inteiro positivo. Por favor, reinicie o programa." << endl;
return 1;
}
}
// Exibir os dados inseridos
cout << "\nProcesso\tTempo de Burst" << endl;
cout << "--------------------" << endl;
for (int i = 0; i < n; i++) {
cout << "P" << i + 1 << "\t" << burst_time[i] << endl;
}
return 0;
}
Vamos analisar o que adicionamos:
- Variáveis para armazenar o número de processos (
n) e o tempo de burst para cada processo (burst_time[20]).
- Solicitações de entrada para coletar o número de processos e o tempo de burst para cada processo.
- Validação da entrada para garantir que o número de processos esteja dentro de uma faixa razoável (1-20) e que os tempos de burst sejam positivos.
- Uma exibição em tabela para mostrar os dados inseridos para verificação.
Vamos compilar e executar nosso programa atualizado:
g++ fcfs.cpp -o fcfs
./fcfs
Quando você executar o programa, será solicitado que você insira o número de processos e seus tempos de burst. Tente inserir os seguintes dados:
3
5
9
4
Isso representa 3 processos com tempos de burst de 5, 9 e 4 unidades de tempo, respectivamente. Você deve ver uma saída semelhante a:
FCFS Scheduling Algorithm Implementation
----------------------------------------
Enter the number of processes (maximum 20): 3
Enter the Burst Time for each process:
Process P1: 5
Process P2: 9
Process P3: 4
Process Burst Time
--------------------
P1 5
P2 9
P3 4
Isso confirma que nossa funcionalidade de entrada está funcionando corretamente. Na próxima etapa, calcularemos o tempo de espera e o tempo de retorno (turnaround time) para cada processo.