/SystemProgramming-Project-2

Implementation of a job management system using fork/exec, named pipes and signals. It consists of a coordinator (jms_coord) and a console(jms_console) and a bash script that collects stats. The user adds jobs to the console and the console sends via named pipes the job to be executed to the coordinator. The coordinator creates job pools in order to have multiple jobs being executed concurrently.

Primary LanguageC

Ευάγγελος Νεαμονίτης
ΑΜ: 1115201400123


to compile:Make
to run: 1) ./jms_coord -l <path> -n <jobspool> -w <jmsout> -r <jmsin>
	2) ./jms_console -w <jmsin> -r <jmsout> -o <operationsfile> (το -o flag προαιρετικό)

to run the bash script: ./jms_script.sh -l <path> -c <command>


Έχουν υλοποιηθεί όλα τα ζητούμενα της ασκησης (console coord bash script και τα 9 ερωτηματα).

Το πρωτόκολο επικοινωνιας ειναι το εξης:
	-το console στελνει ενα command. Μεχρι να λαβει την  απάντηση  (ή τις απαντησεις) που απαιτουνται δεν στελνει επομενη εντολη και περιμενει σε ενα while στο οποιο διαβαζει απο το jmsout named pipe.
	-το coord βρισκεται σε ενα while κατα το οποιο είτε διαβαζει απο το jmsin που του γραφει το console (αν υπαρχει κατι) ή κοιτάζει ΟΛΑ τα pools για να παρει απαντησεις στο current command ειτε για να
	 δει αν καποιο από αυτα τελειωσε. Με τον τροπο αυτο δεν μπλοκαρει οσο περιμενει για μια απαντηση οπως ζητηθηκε.
	-τα pools με παρομοιο τροπο ελεγχουν τα jobs για αλλαγη καταστασης ειτε κοιτανε το αντοιστοιχο named pipe τους για εντολη απο τον coord 


-Ολα τα named pipes ειναι non-blocking.
-Σε ολα τα ερωτηματα γινεται άμεσος ελεγχος της καταστασης του job. Δεν συμβουλευεται απλα τον πινακα με τις καταστασεις.
-Ουτε τα pools ουτε ο coord μπλοκαρουν καπου περιμένοντας απαντηση.
-Το πρόγραμμα ληγει με την εντολη shutdown
-Στην show-active τυπώνονται ΜΟΝΟ οι active οχι οι suspended.
-Στην show-pools τυπώνονται τα Pools που εχουν active ή suspended jobs
-Στο μηνυμα της shutdown τυπώνονται οι δουλειες που ηταν active ή suspended.

Δομές:

1)Ο coord κρατάει μια λίστα με όλα πληροφοριες για ολα τα Pools. την λιστα αυτη διατρεχει στα ερωτηματα αναζητησης.Η λιστα περιεχει το linux id του pool τα named pipes και ενα int που ειναι 1 αν εχουν τελειωσει ολες οι δουλειες και αρα το Pool εχει κλεισει και δεν υπαρχει επικοινωνια με τον coord.

2)τα Pools εχουν εναν πινακα απο δομες οι οποιες εχουν το linux pid της δουλειας, την κατασταση της και τον χρονο που υποβληθηκε.