Skip to content

lia2-group/EPSSim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

EPSSim — Educational Process Scheduling Simulator

EPSSim is a Java CPU scheduling simulator designed for teaching operating systems courses. It runs one or more scheduling algorithms on the same randomly generated process set and outputs a side-by-side comparison of performance metrics, letting students observe the trade-offs between algorithms under identical conditions.

Requirements

  • Java 8 or higher
  • No external dependencies or build tools required

Getting Started

# Clone the repository
git clone https://github.com/<!-- TODO: username -->/EPSSim.git
cd EPSSim

# Compile
javac simprocesos/*.java

# Run
java simprocesos.App

The program is non-interactive. All parameters are read from config.properties in the working directory.

Configuration

Edit config.properties before running. The main settings are:

# Workload
numeroProcesos=10   # number of processes to generate
maxBT=10            # maximum burst time
maxWT=10            # maximum arrival time

# Which algorithms to run (one boolean per algorithm, in order):
# RR, SJF, ADRR, DMLFQ, KFACTOR, MMRRA, ETS, PBRR, IRR, MTSJRR
bool_resultados=true,true,false,false,false,false,false,false,false,false

# Output files (written to ArchivosTexto/ and ArchivosCsv/)
bool_txt=true
bool_csv=true
nombreArchivo=resultado_simulacion
nombreCsv=resultado_simulacion

Each algorithm also has its own parameter line in the file. The comments inside config.properties describe every argument in detail.

Algorithms

Key Algorithm
RR Round Robin
SJF Shortest Job First
ADRR Adaptive Dynamic Round Robin
DMLFQ Dynamic Multilevel Feedback Queue
KFACTOR K-Factor
MMRRA Min-Max Round Robin with Adjustment
ETS Effective Time Slice
PBRR Priority-Based Round Robin
IRR Improved Round Robin
MTSJRR Modified Time-Slice with Job-Ratio Round Robin

Output

Results are printed to the console for each enabled algorithm, showing per-process values (AT, BT, CT, WT, TT) and summary metrics:

Metric Meaning
MTT Mean Turnaround Time
MWT Mean Waiting Time
NCS Number of Context Switches
NS Number of Queue Sortings

If bool_txt=true or bool_csv=true, results are also saved to ArchivosTexto/ and ArchivosCsv/ respectively.

Project Structure

config.properties
simprocesos/
├── App.java                     Entry point
├── Planificador.java            Scheduler
├── Cpu.java                     CPU model
├── Proceso.java                 Process representation
├── Algoritmo.java               Abstract base class
├── RoundRobin.java
├── Sjf.java
├── Adrr.java
├── Dmlfq.java
├── K_Factor.java
├── Mmrra.java
├── EffectiveTimeSlice.java
├── PriorityBasedRoundRobin.java
├── ImprovedRoundRobin.java
└── MTSJRR.java

Citation

If you use EPSSim in your research or teaching, please cite:

@inproceedings{epssim2025,
  author    = {<!-- TODO: authors -->},
  title     = {{EPSSim}: Aprendiendo Planificación del Procesador mediante la Simulación},
  booktitle = {Actas de las XXX Jornadas sobre la Enseñanza Universitaria de la Informática (JENUI)},
  year      = {2025}
}

License

This project is licensed under the MIT License.

About

Java simulator for comparing CPU scheduling algorithms (RR, SJF, ADRR, MMRR, K-Factor, DMLFQ, ETS, PBRR, IRR, MTSJRR) — designed for teaching OS courses.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages