Skip to content

Melhorando o Sistema#5

Open
JeffSSD wants to merge 10 commits intoRafaelLopes23:mainfrom
JeffSSD:main
Open

Melhorando o Sistema#5
JeffSSD wants to merge 10 commits intoRafaelLopes23:mainfrom
JeffSSD:main

Conversation

@JeffSSD
Copy link
Copy Markdown
Contributor

@JeffSSD JeffSSD commented Jul 11, 2025

  • Adicioado sistema de verificação de dono do arquivo para exclusão.
  • Formatação de saída.
  • Adicionado novo log para melhorar a visualização.

@JeffSSD
Copy link
Copy Markdown
Contributor Author

JeffSSD commented Jul 13, 2025

  • 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.

@JeffSSD
Copy link
Copy Markdown
Contributor Author

JeffSSD commented Jul 14, 2025

  • 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).

@JeffSSD JeffSSD force-pushed the main branch 2 times, most recently from b023a44 to a0d22c3 Compare July 14, 2025 22:05
@JeffSSD
Copy link
Copy Markdown
Contributor Author

JeffSSD commented Jul 15, 2025

  1. 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.

  2. 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().

  3. 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.

  4. 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 JeffSSD changed the title Melhorando as Mensagens de Erro no Sistema de Arquivos Melhorando o Sistema Jul 15, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant