This repository contains the implementation of a train scheduling solution, for the lab project of Operating Systems class at UNIFI.
The goal of the project is to simulate the behavior of 5 trains, that have to cross different railway segments. The goal of each train is to reach a pre-defined station, while their main constraint is that each railway segment can be occupied by at most one train at a time.
During its travel, a train is granted access to the next railway segment. The project deals with the implementation of two different ways to ask and grant access to railway segments, by using the C language and its built-in threading system.
In order to run the project, you need to clone this repository and compile the main.c
file, using a C language compiler like GCC.
Compiling the project is as simple as running:
gcc -o main main.c
Then, you can simply execute the resulting file like the following:
./main <arg>
Here, <arg>
could be:
- ETCS1
- ETCS2
- ETCS2 RBC
To see more details about each and every running mode, please have a look at the assignment and the related report, but beware that they have been written in the Italian language.