You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Implementação de Fila de Espera: Em vez de descartar processos que não conseguiam alocar recursos de E/S (como Scanner ou Disco SATA), o sistema agora os coloca num estado BLOCKED.
Criação de Semáforos Simulados: Foi criado um novo módulo (semaphore.c, semaphore.h) para simular o comportamento de semáforos. Cada tipo de recurso de E/S agora é gerido por um semáforo.
Mecanismo de Bloqueio e Despertar: Quando um processo liberta um recurso, o semáforo correspondente "acorda" um processo que estava na fila de espera, movendo-o para a fila de prontos do escalonador.
Identificámos que o erro era causado por caracteres invisíveis (espaços em branco no início e novas linhas no final) nos nomes dos ficheiros lidos.
A mensagem de erro agora distingue corretamente entre um "Arquivo não encontrado" e uma "Permissão Negada", informando qual o PID dono do ficheiro, o que torna o diagnóstico muito mais fácil.
A saída do programa (log.txt) foi completamente redesenhada para ser mais clara, profissional e consistente.
Ícones de Status: Foram adicionados ícones (✅, ❌, ⚠️) para identificar rapidamente o resultado de cada operação.
A visualização do mapa de blocos foi alterada de uma única linha para uma grelha com os símbolos # (ocupado) e . (livre), melhorando drasticamente a sua legibilidade.
Adicionei novos estados: Em src/core/types.h, expandindo o enum ProcessState com os estados PROCESS_BACKGROUND e PROCESS_SUSPENDED.
Adaptei o escalonador: Em src/process/dispatcher.c, modifiquei a função run_current_process. Quando o quantum de um processo de utilizador acaba, em vez de apenas o rebaixar, mude o seu estado para PROCESS_BACKGROUND.
Criei regras de transição: No main.c, no loop principal, adicionei uma lógica que verifica periodicamente os processos em BACKGROUND. Se um processo passou tempo suficiente nesse estado, mude-o para PROCESS_SUSPENDED (ele para de ser escalonado, mas continua a ocupar memória).
Integração da biblioteca JSON: Escolha uma biblioteca C simples para JSON, como a cJSON. Adicionei os ficheiros fonte ao projeto e atualize o Makefile para os compilar.
Criar a Função de Exportação: Criei um novo ficheiro, por exemplo, src/core/export.c, com uma função export_system_state_to_json().
Gerei o JSON: Esta função irá percorrer todas as suas estruturas de dados (filas de processos, mapa de memória, estado dos recursos) e usar as funções da biblioteca cJSON para construir um objeto JSON que represente o estado atual de todo o sistema.
Chamada da Exportação: No main.c, dentro do loop principal, chame export_system_state_to_json() a cada "tick" da simulação. Isto irá gerar um ficheiro estado.json que é constantemente atualizado.
JeffSSD
changed the title
Melhorando as Mensagens de Erro no Sistema de Arquivos
Melhorando o Sistema
Jul 15, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.