$./jms console -w <jms in> -r <jms out> -o <operations file> namedpipe. (standard input).

Σχετικά έγγραφα
$./MirrorInitiator -n <MirrorServerAddress> -p <MirrorServerPort> \\ -s <ContentServerAddress1:ContentServerPort1:dirorfile1:delay1, \\

50 Ketseo,Theoni Sarif,Omar 104

an:3 are:6 a:10

waitpid(), read(), write(), pipe(), mkfifo() κ.α.).

./mydiz {-c -a -x -m -d -p -j} <archive-file> <list-of-files/dirs>

0 The quick brown fox leaped over the lazy lazy dog 1 Quick brown foxes leaped over lazy dogs for fun

Εισαγωγή. Interface της εφαρμογής. Κ24: Προγραμματισμός Συστήματος - 1η Εργασία, Εαρινό Εξάμηνο 2019 Προθεσμία Υποβολής: Παρασκευή 15 Μαρτίου, 23:59

fall2018/k22/home m1436+at-di.

ABC3341, CCD2345, ,... CCDA2345, , ,00E

... s12 s13 s14. Σχήμα1: ΙεραρχίαΔιεργασιώνμε l=3καιβάθος d=3. Οκάθεεργάτης(worker)δουλεύειμετο 1/27του αρχείου των ψήφων.

Kitchen Doormam. Floor with Tables. Restaurant Floorplan and Operation

Λειτουργικά Συστήματα (ΗΥ-345) Χειμερινό Εξάμηνο

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

Λειτουργικά Συστήματα (Λ/Σ)

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Για το μέρος αυτό της άσκησης θα υλοποιήσετε μια εφαρμογή κελύφους η οποία θα χρησιμοποιείται ως εξής:

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

ΤΕΙΘ ΣΤΕΦ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ. 6o ΕΡΓΑΣΤΗΡΙΟ

HY-486 Αρχές Κατανεμημένου Υπολογισμού

Σημειώνουμε ότι τα αρχεία περιλαμβάνουν κανονικά αρχεία, καταλόγους και συνδέσμους (links). Οι αντίστοιχες εντολές είναι οι εξής:

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο

Λιβανός Γιώργος Εξάμηνο 2017Β

Προγραµµατισµός 2 The shell

Άσκηση 3 (ανακοινώθηκε στις 24 Απριλίου 2017, προθεσμία παράδοσης: 2 Ιουνίου 2017, 12 τα μεσάνυχτα).

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

εμφανίζονται σε ένα γράφημα που υλοποιείται από κλήση στην εφαρμογή gnuplot.

Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος

Εργαστήριο ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ UNIX

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας

Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο Δεύτερη Προγραμματιστική Εργασία

Θέτοντας και επιστρέφοντας την τιµή της προτεραιότητας διεργασίας

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο

Κεφάλαιο 4: Λογισμικό Συστήματος

ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος

Εργαστήριο Λειτουργικών Συστημάτων. Minix Overview

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη


ΤρόποςΑξιολόγησης: α) Εργαστήρια (Προαιρετικάµε 20% - 35% βαρύτητα µόνοθετικά) β) Τελική Γραπτή Εξέταση

Χρονοδρομολογητής Κυκλικής Επαναφοράς

Περιγραφή και Έλεγχος ιεργασιών

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο

ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος

ΟΜΟΣΠΟΝΔΙΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑΔΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2019 Β ΦΑΣΗ

Εισαγωγή στην Πληροφορική

Εργαστήριο 5. Εαρινό Εξάμηνο

Εισαγωγή εκτελέσιμου κώδικα σε διεργασίες

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ I

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος Προγραμματιστική Εργασία - 2o Μέρος

wget --post-file meme.jpg :9646

HY555 Παράλληλα Συστήματα και Grids Χειμερινό εξάμηνο 2007 Άσκηση 3 Εξοικείωση με το EGEE GRID Environment

Δίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6)

CloudBox!: Ένα εργαλείο cloud αποθήκευσης αρχείων με κατανεμημένο τρόπο

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1

Τελικός Κύκλος Διαγωνισμάτων Γ ΛΥΚΕΙΟΥ Κυριακή 17 Απριλίου 2016 Μάθημα: Α.Ε.Π.Π. KTIΡΙΟ ΤΜΗΜΑΤΑ ΚΑΛΟΚΑΙΡΙΝΑ ΑΡΓΥΡΟΥΠΟΛΗΣ - ΗΛΙΟΥΠΟΛΗΣ - ΓΛΥΦΑΔΑΣ

Άσκηση 3 (ανακοινώθηκε στις 14 Μαΐου 2018, προθεσμία παράδοσης: 8 Ιουνίου 2018, 12 τα μεσάνυχτα).

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επανάληψης. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

ΘΕΜΑΤΑ ΤΕΛΙΚΗΣ ΦΑΣΗΣ

Κεφάλαιο 4 Λογισμικό συστήματος. Εφαρμογές Πληροφορικής Κεφ.4 Καραμαούνας Πολύκαρπος 1

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο M. Χατζόπουλος. Προθεσμία: 19/01/2015

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ «ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ»

Εργαστήριο 7 fork(), exec(), signals

ΠΛΗΡΟΦΟΡΙΚΗ Ι Εργαστήριο 1 MATLAB ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στο MATLAB και στο Octave

Κατανεμημένα Συστήματα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

inotify system call interface του Linux [1, 2]. prompt >>./mirr source backup uoa.gr/fall2018/k22/home compilation.

ΕΡΓΑΣΤΗΡΙΟ 1: 1 Εισαγωγή, Χρήσιμες Εφαρμογές

Μάθημα 7 ο. Αλγόριθμοι Χρονοδρομολόγησης

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 7/1/2014, 22:00

Η γλώσσα προγραμματισμού C

Λειτουργικά Συστήματα Κεφάλαιο 2 Οργάνωση Συστήματος Αρχείων 2.1 Διαχείριση Αρχείων και Σύστημα Αρχείων(File System)

Εισαγωγή στον Προγραμματισμό Μάθημα 1: Βασική Πλοήγηση σε Linux CLI. Οκτώβριος 2016 Χ. Αλεξανδράκη

Ανάπτυξη και Σχεδίαση Λογισμικού

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Κεφάλαιο 3.1: Λειτουργικά Συστήματα. Επιστήμη ΗΥ Κεφ. 3.1 Καραμαούνας Πολύκαρπος

Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που

Κεφάλαιο 4. Λογισμικό Συστήματος

Λειτουργικά Συστήματα (ΗΥ321)

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Λειτουργικά Συστήματα

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

«Μηχανή Αναζήτησης Αρχείων» Ημερομηνία Παράδοσης: 30/04/2015, 09:00 π.μ.

Λειτουργικά Συστήματα (Λ/Σ)

ΕΡΓΑΣΙΕΣ ΟΝΤΟΚΕΝΤΡΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο

Transcript:

Κ24: Προγραμματισμός Συστήματος 2η Εργασία Εαρινό Εξάμηνο 2017 Προθεσμία Υποβολής: Κυριακή 30 Απριλίου 2017 Ωρα 23:59 Εισαγωγή στην Εργασία: Ο στόχος της εργασίας αυτής είναι να εξοικειωθείτε με την δημιουργία διεργασιών (processes) με χρήση των κλήσεων συστήματος fork/exec, την επικοινωνία διεργασιών μέσω named-pipes/pipes, τη χρήση low level I/O, το χειρισμό signals, και τη δημιουργία bash scripts. Καλείστε να υλοποιήσετε ένα πρόγραμμα που υλοποιεί τη λειτουργία ενός συστήματος διαχείρισης εργασιών, job management system (jms), στο οποίο θα υποβάλλονται εργασίες χρήστη. Την εκτέλεση των εργασιών αυτών αναλαμβάνει μια ιεραρχία διεργασιών που δημιουργούνται δυναμικά με την βοήθεια των κλήσεων συστήματος fork() και exec(). Το jms θα μπορεί να διαχειρίζεται και να εκτελεί ταυτόχρονα ένα οποιαδήποτε αριθμό από υποβληθείσες εργασίες. Η υλοποίηση σας θα πρέπει να αποτελείται από δύο βασικά προγράμματα, το jms coord και το jms console. Το πρώτο πρόγραμμα που είναι και ο συντονιστής εκτελείται στην αρχή και παραμένει συνεχώς σε λειτουργία, ενώ το δεύτερο εκτελείται από τον χρήστη για υποβολή εργασιών, τον έλεγχό τους, κλπ. Η επικοινωνία μεταξύ αυτών των δύο βασικών διεργασιών επιτυγχάνεται με τη χρήση named-pipes. Τέλος θα πρέπει να δημιουργήσετε ένα bash script για την εξαγωγή στατιστικών στοιχείων για τις εργασίες που εκτελέστηκαν/εκτελούνται. Συνοπτική Περιγραφή: Το Σχήμα 1 παρουσιάζει την οργάνωση και την αλληλεπίδρασή εμπλεκομένων διεργασιών στην υλοποίηση του jms όπως επίσης και τη συλλογή αποτελεσμάτων με την χρήση του script. Ο συντονιστής jms coord διαχειρίζεται τις εργασίες χρήστη μέσω μια ιεραρχίας που δημιουργεί και επίσης παρακολουθεί την εξέλιξη αυτών των διεργασιών (δηλ. αν είναι ακόμη ενεργές ή αν έχουν τερματίσει). Η jms coord δεν «διεκπεραιώνει κατευθείαν» τις jobs που έχει καταθέσει ο χρήστης. Αντιθέτως, δυναμικά δημιουργεί κόμβους «δεξαμενές» (pools) που η κάθε μία μπορεί να διαχειρίζεται ένα συγκεκριμένο μέγιστο αριθμό από jobs χρηστών. Οι δεξαμενές δημιουργούνται δυναμικά και έτσι μπορούν να εξυπηρετήσουν συνολικά οποιοδήποτε αριθμό από jobs που έχουν κατατεθεί στον συντονιστή. Οταν μία δεξαμενή ολοκληρώσει τον μέγιστο αριθμό jobs που έχει αναλάβει απλά «παραδίδει» οποιαδήποτε στοιχεία έχει συλλέξει στη διεργασία jms coord και στην συνέχεια ολοκληρώνει την εκτέλεσή της αποχωρώντας από την ιεραρχία. Η επικοινωνία του jms console με το jms coord πραγματοποιείται μέσω ζεύγους named-pipes τα ονόματα των οποίων μπορεί να είναι jms in, jms out. Η επικοινωνία μεταξύ pools και του jms coord πραγματοποιείται επίσης με named pipes με ονόματα που θα σχετίζονται με την άσκηση. Και οι δύο αυτές επικοινωνίες χρειάζονται κάποια (απλά) πρωτόκολλα ανταλλαγής πληροφορίας που θα πρέπει να τα σχεδιάσετε ώστε να εξυπηρετήσουν τις ανάγκες της εργασίας σας. Το πρόγραμμα jms console είναι η διεπαφή του χρήστη με την υπηρεσία υποβολής εργασιών (δηλ. jms coord). Το jms console αναλαμβάνει: με τον την επικοινωνία με το jms coord μέσω των named-pipes. την υποβολή των εργασιών. την υποβολή ερωτήσεων σχετικά με την κατάσταση (status) της υπηρεσίας (δηλ. πόσες εργασίες εκτελούνται). 1

την παρουσίαση των πληροφοριών που παράγει ο jms coord για την/τον χρήστη. jms_in jms_console Named-Pipe(s) jms_coord jms_out Pool 1 Pool 2 Pool 3 job 1 job 2 job 3 job 4 job 5 job 6... sdixxxxxxx_1_2312_20170301_133021/ stdout_1 stderr_1 sdixxxxxxx_2_2212_20170330_093012/ stdout_2 stderr_2 sdixxxxxxx_4_5912_20170228_234011/ stdout_4 stderr_4 jms_script.sh Σχήμα 1: Οργανωτική διάταξη και αλληλεπίδραση διεργασιών για την υλοποίηση του jms Κλήση της jms console: $./jms console -w <jms in> -r <jms out> -o <operations file> όπου: 1. jms in είναι το όνομα του named-pipe για εισαγωγή (εγγραφή) δεδομένων στον jms coord. 2. jms out είναι το όνομα του named pipe για έξοδο (ανάγνωση) δεδομένων προερχόμενα από τον jms coord. 3. operations file είναι το όνομα του αρχείου που περιέχει εντολές που πρέπει να σταλούν και να διεκπεραιωθούν από τη διεργασία jms coord και την κάτω από αυτή ιεραρχία διεργασιών. Σε περίπτωση που ολοκληρωθεί η εκτέλεση των εντολών που βρίσκονται στο operations file ή το συγκεκριμένο όρισμα δεν υπάρχει στη γραμμή εντολών, το πρόγραμμα jms console διαβάζει εντολές από τη γραμμή εντολών (standard input). Κλήση του jms coord: $./jms coord -l <path> -n <jobs pool> -w <jms out> -r <jms in> όπου 1. path είναι το όνομα του καταλόγου κάτω από τον οποίο θα δημιουργούνται όσα αρχεία ή κατάλογοι παράγονται στην διάρκεια εκτέλεσης των προγραμμάτων σας. 2. jobs pool είναι ο μέγιστος αριθμός εργασιών που μπορεί να εκτελείται σε κάθε pool. 2

3. jms in και jms out είναι τα ονόματα των named-pipes που χρησιμοποιούνται για επικοινωνία με την jms console. Περιγραφή του jms script.sh: $./jms script.sh -l <path> -c <command> όπου 1. path είναι το όνομα του καταλόγου κάτω από τον οποίο έχουν δημιουργηθεί όσα αρχεία ή κατάλογοι απαιτούνται (βλέπε παραπάνω). 2. command είναι μία εντολή από τις εξής: list: παρουσιάζει μία λίστα από τους καταλόγους που δημιούργησαν οι εργασίες size [n]: παρουσιάζει τη λίστα από τους καταλόγους που δημιούργησαν οι εργασίες ταξινομημένη κατά αύξουσα σειρά μεγέθους των αρχείων που περιέχουν. Προαιρετικά μπορεί να παίρνει όρισμα ένα ακέραιο αριθμό n, που να ορίζει την εμφάνιση μόνο των n μεγαλύτερων τιμών. purge: διαγράφει όλους τους υφιστάμενους καταλόγους που δημιούργησαν οι εργασίες. Η σειρά με την οποία μπορούν να καλούνται οι σημαίες και οι αντίστοιχοι παράμετροι σε όλες τις παραπάνω διεπαφές, δεν είναι προκαθορισμένη. Διεπαφή με τον/την Χρήστη Οταν τρέξει το./jms coord, δέχεται εντολές από το named-pipe jms in και επιστρέφει αποτελέσματα στο named pipe jms out ως εξής: 1. submit <job> Η εντολή αυτή δέχεται την εργασία job προς εκτέλεση. Η διεργασία jms coord βρίσκει το επόμενο διαθέσιμο pool (και το δημιουργεί αν δεν υπάρχει ήδη) και στέλνει την job για εκτέλεση. Η διεργασία jms coord επιστρέφει τον λογικό αριθμό της εργασίας και το pid που έλαβε. Για παράδειγμα: JobID: 3, PID: 2324. 2. status <JobID> Η εντολή αυτή αναζητάει την κατάσταση της εργασίας με λογικό αριθμό JobID. Επιστρέφεται η κατάσταση της εργασίας. Παραδείγματα για τρεις πιθανές διαφορετικές εξόδους: JobID 3 Status: Active (running for 3 seconds) JobID 3 Status: Finished JobID 3 Status: Suspended 3. status-all [time-duration] Η εντολή αυτή αναζητάει την κατάσταση όλων των εργασιών. Η εντολή μπορεί να έχει προαιρετικό όρισμα time-duration που να ορίζει μέχρι πόσα δευτερόλεπτα πριν θα πρέπει να έχουν υποβληθεί οι εργασίες. Επιστρέφονται οι καταστάσεις των εργασιών. Παράδειγμα: 1. JobID 2 Status: Finished 2. JobID 3 Status: Active (running for 3 sec) 3. JobID 4 Status: Suspended 4. show-active Η εντολή αυτή αναζητάει τις εργασίες που είναι ενεργές. Επιστρέφονται οι λογικοί αριθμοί των εργασιών και η ένδειξη Active. Παράδειγμα: Active jobs: 3

1. JobID 3 2. JobID 11 5. show-pools Η εντολή αυτή αναζητάει τις διεργασίες-δεξαμενές με τα Linux pids τους όπως επίσης και των αριθμό των jobs που η κάθε μία έχει υπό εκτέλεση αυτή την στιγμή. Επιστρέφονται οι αριθμοί των εργασιών που υπάρχουν σε κάθε δεξαμενή. Παράδειγμα: Pool & NumOfJobs: 1. 2345 3 2. 2356 11 3. 3456 2 6. show-finished Η εντολή αυτή αναζητάει τις εργασίες που έχουν ολοκληρωθεί. Επιστρέφονται οι αριθμοί των εργασιών και ένδειξη Finished. Παράδειγμα: Finished jobs: 1. JobID 4 2. JobID 6 7. suspend <JobID> Η εντολή αυτή αναστέλλει την εκτέλεση της εργασίας (λογικό) <JobID>. Επιστρέφεται η ανακοίνωση ότι εστάλη σήμα στη συγκεκριμένη εργασία. Παράδειγμα: Sent suspend signal to JobID 3 8. resume <JobID> Η εντολή αυτή επαναφέρει την εκτέλεση της εργασίας <JobID>. Επιστρέφεται ένα μήνυμά ότι εστάλη σήμα στη συγκεκριμένη εργασία. Παράδειγμα: Sent resume signal to JobID 3 9. shutdown Η εντολή αυτή τερματίζει την εκτέλεση της υπηρεσίας με την εξής σειρά: Η διεργασία jms coord στέλνει σήματα SIGTERM στα pools, τα οποία το αναχαιτίζουν με κατάλληλο signal handler, στέλνουν μήνυμα τερματισμού (SIGTERM) στις εργασίες που επιτηρούν, αναφέρουν ό,τι απαιτείται στη διεργασία jms coord και τερματίζουν. Η διεργασία jms coord μετά των τερματισμό όλων των pools τερματίζει με τη σειρά της επιστρέφοντας συνοπτικά στατιστικά στοιχεία. Παράδειγμα: Served 19 jobs, 3 were still in progress Κάθε job θα δημιουργεί ένα κατάλογο (directory), στον οποίο θα αποθηκεύει τα αποτελέσματα της εκτέλεσης του. Το όνομα του καταλόγου θα είναι sdixxxxxxx jobid pid date time, όπου: sdixxxxxxx το account name σας jobid το λογικό αναγνωριστικό της εργασίας που εκτελείται pid το Linux pid της εργασίας που εκτελείται date η ημερομηνία σε μορφή 20170331 για 31 Μαρτίου 2017. time η ώρα σε μορφή 175000 για 17:50:00. Ενα παράδειγμα τέτοιου καταλόγου είναι το: jms sdi0100001 3 20170331 142123. Ο κατάλογός θα δημιουργείται με την έναρξη εκτέλεσης της εργασίας και θα περιέχει τουλάχιστον τα εξής αρχεία: 1. stdout jobid, όπου θα περιέχεται η έξοδος της εργασίας στο standard output. 2. stderr jobid, όπου θα περιέχεται η έξοδος της εργασίας στο standard error. 4

Διαδικαστικά: Το πρόγραμμά σας θα πρέπει να γραφτεί σε C (ή C++ αλλά χωρίς την χρήση έτοιμων δομών της standard βιβλιοθήκης/stl) και να τρέχει στα Linux workstations του τμήματος. Το πρόγραμμα σας (source code) πρέπει να αποτελείται από τουλάχιστον δυο (και κατά προτίμηση πιο πολλά) διαφορετικά αρχεία. Η χρήση του separate compilation είναι επιτακτική! Η οργάνωση και η αναγνωσιμότητα (μαζί με την ύπαρξη σχολίων) του κώδικα περιλαμβάνονται στα κριτήρια βαθμολόγησης. Για επιπρόσθετες ανακοινώσεις, παρακολουθείτε το forum του μαθήματος στο piazza.com. Η πλήρης διεύθυνση είναι https://piazza.com/uoa.gr/spring2017/k24/home. Η παρακολούθηση του φόρουμ στο Piazza είναι υποχρεωτική. Τι πρέπει να Παραδοθεί: 1. Μια σύντομη και περιεκτική εξήγηση για τις επιλογές που έχετε κάνει στο σχεδιασμό του προγράμματος σας (1-2 σελίδες ASCII κειμένου είναι αρκετές) σε αρχείο README. 2. Οποιαδήποτε πηγή πληροφορίας, συμπεριλαμβανομένου και κώδικα που μπορεί να βρήκατε στο Διαδίκτυο ή αλλού θα πρέπει να αναφερθεί και στον πηγαίο κώδικά σας αλλά και στο παραπάνω README. 3. Ολη η δουλειά σας σε ένα tar-file (OnomaEponymoProject2.tar) που να περιέχει όλα τα source files, header files, Makefile. Άλλες Σημαντικές Παρατηρήσεις: 1. Οι εργασίες είναι ατομικές. 2. Οποιος υποβάλλει / δείχνει κώδικα που δεν έχει γραφτεί από την ίδια/τον ίδιο μηδενίζεται στο μάθημα. 3. Αν και αναμένεται να συζητήσετε με φίλους και συνεργάτες το πως θα επιχειρήσετε να δώσετε λύση στο πρόβλημα, αντιγραφή κώδικα (οποιαδήποτε μορφής) είναι κάτι που δεν επιτρέπεται. Οποιοσδήποτε βρεθεί αναμεμιγμένος σε αντιγραφή κώδικά απλά παίρνει μηδέν στο μάθημα. Αυτό ισχύει για όσους εμπλέκονται ανεξάρτητα από το ποιος έδωσε/πήρε κλπ. 5