Skip to content

Valyo95/Syspro2-Ready

Repository files navigation

Syspro2

Όνομα: Valentin Ivanov ΑΜ: 1115 2014 00049

Εχώ υλοποιήση την εργασία με όλα της τα ερωτήματα.

Εχω επιλέξει blocking επικοινωνία μεταξύ console και coordinator, όπως είπατε οτι μπορεί στο Piazza. Δηλαδή μετά απο κάθε εντολή που θα στείλει η console θα περιμένει απάντηση.

Απο την άλλη για την επικοινωνία μεταξυ coordinator και των poools χρησιμοποιώ non-blocking επικοινωνία. Αυτό το επιτυγχάνω με την συνάρτηση select() ή οποία κάνει monitoring κάποιους file descriptors και ενεργοποιήται όταν ένας ή περισσότεροι γίνουν έτοιμοι για ανάγνωση ή εγγραφή.

Κάθε φορά που φτιάχνω ενα νεο pool, συμπεριλαμβάνω το out_pipe του στο αρχεία προς ανάγνωση.

Η επικοινωνία που υλοποιώ είναι η εξής:

Κάθε φορά που ενα job ολοκληρώσει το pool στέλνει message στο coordinator μεσω του pipe. Αυτός το λαμβάνει και σημειώνει ότι το job έχει τελειώσει.

Έτσι στις ερωτήσεις info ο coordinator δεν χριάζεται να ζητήσει πληροφορία απο τα pools.

Suspend και Resume δουλευουν κανονικά όπως περιγράφονται στην εκφώνηση.

Για τον τερματισμό απο την κονσόλα στέλνω SIGTERM στα pools και αυτοί μέσω ενός signal handler και την συνάρτηση sigaction() βγαίνουν απο την while(1) με σωστό τρόπο και στέλνουν μήνυμα με τις τελευταίες πληροφορίες για τα jobs που είχαν.

Απο την άλλη αν ενα job ολοκληρώσει πριν του στάλεί SIGTERM τότε αυτό ενημερώνει τον coordinator, ο οποίος σημειώνει οτι το pool τελείωσε, για να μην προσπαθήσει να ξαναεπικοινωνίσει με αυτό.

Οι πόροι του προγράμματος αποδευσμευοννταί σώστα και δεν υπάρχουν errors.

Για να τρέξουμε το πρόγραμμα γράψτε την εντολή: ./jms_console -w jms_in -r jms_out -o opp

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published