Skip to content
This repository was archived by the owner on Jun 24, 2026. It is now read-only.

glfaria/SO

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SO

Este projeto foi desenvolvido no âmbito da cadeira de Sistemas Operativos.

Estrutura do Projeto

  • bin/: Binários resultantes da compilação.
  • src/: Código fonte do projeto.
    • controller/: Lógica do servidor central que gere a fila de tarefas.
    • runner/: Cliente que submete tarefas e as executa após autorização.
  • include/: Ficheiros de cabeçalho (.h).
  • obj/: Ficheiros objeto (.o).
  • tmp/: Localização dos FIFOs e ficheiros temporários.

Compilação

Para compilar o projeto, basta executar o comando make na raíz do repositório:

make

Isto irá criar os diretórios necessários (bin, obj, tmp) e compilar os binários controller e runner.

Para limpar os ficheiros gerados:

make clean

Instruções de Execução

O sistema baseia-se num modelo cliente-servidor onde o controller deve estar a correr para que o runner possa submeter tarefas.

1. Controller

O controller é responsável por receber pedidos de execução, geri-los numa fila de espera e autorizar a execução com base numa política de escalonamento e num limite de paralelismo.

Uso:

./bin/controller <max_parallel> <policy>
  • <max_parallel>: Número máximo de tarefas a correr em simultâneo.
  • <policy>: Política de escalonamento a utilizar. Opções:
    • fcfs: First-Come, First-Served (por ordem de chegada).
    • rr: Round Robin (atualmente implementado como alternância simples).
    • random: Escolha aleatória da próxima tarefa.

Exemplo:

./bin/controller 3 fcfs

2. Runner

O runner é a interface do utilizador para interagir com o sistema. Permite submeter comandos para execução, listar o estado atual ou desligar o sistema.

Submeter uma tarefa

Executa um comando (com os seus argumentos) sob um determinado ID de utilizador.

Uso:

./bin/runner -e <user_id> "<comando> <argumentos>"

Exemplo:

./bin/runner -e 1001 "ls -l /tmp"
./bin/runner -e 1001 "sleep 10"

Listar estado do sistema

Mostra as tarefas que estão atualmente em execução ou em fila de espera.

Uso:

./bin/runner -c

Desligar o Controller

Envia um sinal ao controller para terminar a sua execução de forma segura. O controller apenas desligará após concluir todas as tarefas em execução e em fila.

Uso:

./bin/runner -s

Logs

Todas as tarefas concluídas são registadas no ficheiro logs/log.txt (criado automaticamente se o diretório existir). O registo inclui o ID do utilizador, o ID do comando (PID do runner que o submeteu) e a duração da execução em milissegundos.

Exemplo de log: user-id 1001 | command-id 12345 | duration 10005 ms

About

Multi-runner command scheduling system

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors