Τµήµα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Σεπτέµβριος 2013

Σχετικά έγγραφα
Ουρές Μηνυμάτων (Message Queues in System V) Προγραμματισμός II 1

IPC System V. Προγραμματισμός II 1

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

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

Προγραμματισμός συστημάτων UNIX/POSIX

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1

Λειτουργικά Συστήματα. Ενότητα # 10: Προγραμματισμός UNIX Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Μη ανασταλτική/πολυπλεξία Ε/Ε (non-blocking/multiplexed I/O) Προγραμματισμός II 1

Προγραμματισμός συστημάτων UNIX/POSIX. Σήματα (signals)

Συγχρονισμός & σηματοφόροι. Προγραμματισμός II 1

Αρχεία. Προγραμματισμός II 1

Προγραμματισμός συστημάτων UNIX/POSIX

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

Βασικές λειτουργίες συστήματος πάνω σε αρχεία δεδομένων. Προγραμματισμός II 1

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

Διαδιεργασιακή επικοινωνία (inter-process communication IPC) Προγραμματισμός II 1

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Αγωγοί/Σωλήνες (Pipes) Προγραμματισμός II 1

Αρχεία. Προγραμματισμός II 1

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

Παράδειγµα χρήσης perror, errno (πρόγραµµα errors_demo.c)

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

Σήματα (Signals) Προγραμματισμός II 1

Σήματα (Signals) Προγραμματισμός II 1

Κλείδωμα αρχείων (file locking) Προγραμματισμός II 1

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

Εργαστήριο 9: Αρχεία

Σήματα (Signals) Προγραμματισμός II 1

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής

Μεθόδων Επίλυσης Προβλημάτων

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Προγραμματισμός συστημάτων UNIX/POSIX. Ανακατευθύνσεις (redirections)

Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη

Βιβλιοθήκη stdio. Προγραμματισμός II 1

Κλείδωμα αρχείων (file locking) Προγραμματισμός II 1

Προγραμματισμός συστημάτων UNIX/POSIX. Διαδιεργασιακή επικοινωνία: αγωγοί (IPC inter-process communication: pipes)

Βιβλιοθήκη stdio. Προγραμματισμός II 1

Διάλεξη 18η: Διαχείρηση Αρχείων

ιαφάνειες παρουσίασης #6 (β)

Μετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη. (Διάλεξη. Πανεπιστήμιο Κύπρου

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή

ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr

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

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

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings)

Προγραμματισμός Ι (ΗΥ120)

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

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

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

Εισαγωγή στον Προγραμματισμό

Παράλληλη Επεξεργασία

FILE *fopen(const char *fname, const char *mode) void fclose(file *f) void fflush(file *f)

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

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

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

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

Νήµατα. Πολύ σηµαντικό

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 15/11/09, 23:59

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

Εκφωνήσεις ασκήσεων εργαστηρίου 1

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Επεξεργασία Αρχείων Κειµένου

Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων.

S, (5, -3, 34, -23, 7) ( *, _

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

File Management και I/O στο UNIX

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

Περιγραφείς Αρχείων & Ανακατεύθυνση EE. Προγραμματισμός II 1

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

Βαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά

ΑΣΚΗΣΗ 1. Structural Programming

ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων

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

Αρχιτεκτονική Υπολογιστών

ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files)

Streams Input / Output in C++ George Kastrinis

Ζητήματα Σχεδίασης Λογισμικού Εξυπηρετητή

4 η ιάλεξη: Signals UDP Sockets

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

Προγραµµατισµός Ι Εργαστήριο 13ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 13 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

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

Προγραμματισμός Η/Υ. Χειρισμός Αρχείων. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Προγραµµατισµός Ι Εργαστήριο 13ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 13 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

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

ÁÎÉÁ ÅÊÐÁÉÄÅÕÔÉÊÏÓ ÏÌÉËÏÓ

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

Transcript:

Γράψτε όλες τις απαντήσεις σας σε αυτό το φυλλάδιο Οδηγίες για Α: Διαβάστε προσεκτικά όλες τις επιλογές σηµειώστε µε Χ (το πολύ) µια από αυτές. Μην επιλέγετε «στην τύχη» οι λανθασµένες απαντήσεις βαθµολογούνται αρνητικά. Οδηγίες για Β: Γράψετε κώδικα ή δώστε λεκτικές περιγραφές, κι αιτιολογήστε, σύντοµα, τις απαντήσεις σας. Οδηγίες για Γ: Γράψετε εντολές σε γλώσσα C. Εστιάστε στην ουσία του κώδικα, όχι τόσο στην συντακτική ορθότητα του. Πρέπει να είναι ξεκάθαρο ποιες κλήσεις συστήµατος χρησιµοποιείτε σε κάθε περίπτωση. Οι λεκτικές περιγραφές δεν βαθµολογούνται µπορείτε όµως να προσθέσετε σύντοµα σχόλια όπου νοµίζετε ότι αυτό βοηθάει την κατανόηση του κώδικά σας. ΜΕΡΟΣ A [3 µονάδες] 1) [0.5] Τι γίνεται στην περίπτωση που µια διεργασία επιχειρήσει να διαβάσει µέσω της read από το τέλος του αρχείου και πέρα; η διεργασία θα τερµατιστεί από το λειτουργικό η διεργασία θα λάβει ένα σήµα από το λειτουργικό η λειτουργία ανάγνωσης θα επιστρέψει κωδικό λάθους η λειτουργία ανάγνωσης θα επιστρέψει αρνητικό αποτέλεσµα και ο κωδικός λάθους θα αποθηκευτεί στο errno η λειτουργία ανάγνωσης θα επιστρέψει µηδέν χωρίς να αποθηκευτεί κωδικός λάθους στο errno η λειτουργία ανάγνωσης θα µπλοκάρει µέχρι να τοποθετηθούν δεδοµένα στο αρχείο η λειτουργία ανάγνωσης θα επιστρέψει τα δεδοµένα που διαβάστηκαν πρόσφατα 2) [0.5] Όταν καλείται η λειτουργία write για ένα αρχείο, τα δεδοµένα της εφαρµογής αποθηκεύονται στον δίσκο άµεσα ή όχι, και γιατί; όχι, γιατί ο δίσκος µπορεί να χρησιµοποιείται τη συγκεκριµένη χρονική στιγµή όχι, γιατί τα δεδοµένα µπορεί να διαγραφούν στο µέλλον από την ίδια ή κάποια άλλη διεργασία όχι, γιατί αυτό το κάνει το λειτουργικό όταν βρει κατάλληλη ευκαιρία όχι, γιατί αυτό το κάνει η λειτουργία close ναι, γιατί διαφορετικά θα χάνονταν τα δεδοµένα που γράφει η εφαρµογή ναι, γιατί διαφορετικά η εφαρµογή δεν γνωρίζει το πότε γράφτηκαν τα δεδοµένα στο δίσκο ναι, γιατί διαφορετικά δεν θα µπορούσαν άλλες διεργασίες να προσπελάσουν αυτά τα δεδοµένα 3) [0.5] Ποια είναι η πιο βασική διαφορά ανάµεσα σε έναν επώνυµο και έναν ανώνυµο αγωγό; οι ανώνυµοι αγωγοί είναι µιας κατεύθυνσης, ενώ οι επώνυµοι δύο κατευθύνσεων οι επώνυµοι αγωγοί είναι µιας κατεύθυνσης, ενώ οι ανώνυµοι δύο κατευθύνσεων οι ανώνυµοι αγωγοί καταστρέφονται αυτόµατα, ενώ οι επώνυµοι όχι οι επώνυµοι αγωγοί έχουν µεγαλύτερη χωρητικότητα από τους ανώνυµους οι ανώνυµοι αγωγοί είναι µόνιµοι, ενώ οι επώνυµοι όχι οι επώνυµοι αγωγοί µεγαλώνουν αυτόµατα όταν γεµίσουν, ενώ οι ανώνυµοι όχι οι ανώνυµοι αγωγοί είναι αντικείµενα διαδιεργασιακής επικοινωνίας του System V, ενώ οι επώνυµοι όχι 4) [0.5] Πότε γίνεται χειρισµός ενός µπλοκαρισµένου σήµατος; όταν η διεργασία ξεµπλοκάρει το σήµα, εφόσον ένα τέτοιο σήµα εκκρεµεί όταν ξεµπλοκαριστεί ή τερµατιστεί η διεργασία που έστειλε το σήµα όταν η διεργασία λάβει ένα οποιοδήποτε µη µπλοκαρισµένο σήµα ποτέ, καθώς το σήµα χάνεται όσο παραµένει µπλοκαρισµένο προτού γίνει χειρισµός ενός σήµατος που τερµατίζει την διεργασία καλώντας την λειτουργία ελέγχου εκκρεµών σηµάτων δεν µπορούµε να το γνωρίζουµε εκ των προτέρων

5) [0.5] Γιατί τα αντικείµενα διαδιεργασιακής επικοινωνίας του System V (ουρές µηνυµάτων, περιοχές κοινόχρηστης µνήµης, οµάδες σηµατοφόρων) δεν καταστρέφονται αυτοµάτως, αλλά πρέπει να καταστραφούν µε ρητό τρόπο µέσω των λειτουργιών msgctl, shmctl και semctl; το λειτουργικό δεν γνωρίζει αν αυτά χρησιµοποιούνται από µια ή περισσότερες διεργασίες δεν επιτρέπεται να καταστραφούν την ώρα που τα χρησιµοποιεί µια διεργασία πρέπει να προηγηθεί συγχρονισµός/συµφωνία µεταξύ των διεργασιών που τα χρησιµοποιούν η αυτόµατη δηµιουργία/καταστροφή θα ήταν υπερβολικά ακριβή διαδικασία η ευθύνη για την καταστροφή τους ανήκει στον χρήστη/διαχειριστή του συστήµατος για να υπάρχει πλήρης απεµπλοκή µεταξύ των προγραµµάτων που τα χρησιµοποιούν είναι µόνιµες οντότητες, που επιζούν πέρα από τις διεργασίες που τα χρησιµοποιούν 6) [0.5] Ποιο βασικό σκοπό εξυπηρετεί ο «τύπος» ενός µηνύµατος στις ουρές µηνυµάτων; για να µπορεί το λειτουργικό να τοποθετεί τα µηνύµατα στην σωστή ουρά, ανάλογα µε τον τύπο τους για να υποστηριχθεί µια ευέλικτη παραλαβή µηνυµάτων, µε βάση τον τύπο τους για να γνωρίζει το λειτουργικό πόσος χώρος χρειάζεται για την αποθήκευση του εκάστοτε µηνύµατος για να γνωρίζει το λειτουργικό ποια είναι τα επιµέρους πεδία του µηνύµατος για να µπορεί ο προγραµµατιστής να διαχωρίζει ανάµεσα σε διαφορετικά είδη µηνυµάτων για να µπορεί το λειτουργικό να ελέγχει την ορθότητα των µηνυµάτων για να µην µπορεί η εφαρµογή να στέλνει τυχαία µηνύµατα ΜΕΡΟΣ Β [3 µονάδες] 1) [1.0] Σε µια εκτέλεση του παρακάτω προγράµµατος εµφανίστηκαν "σκουπίδια" στην οθόνη. Γιατί συνέβη αυτό, παρόλο που οι read/write εκτελέστηκαν επιτυχώς; Πώς θα διορθώνατε το πρόβληµα; int main (int argc, char *argv[]) { char sentence[100]; read(0, sentence, 100); write(1, sentence, 100); return 0; 2) [1.0] Πόσες φορές θα εκτυπωθεί κάθε ένα από τα ψηφία 1, 2, 3, 4 κατά την εκτέλεση του παρακάτω κώδικα; int main (int argc, char *argv[]) { if (!fork()) printf("1\n"); printf("2\n"); if (!fork()) printf("3\n"); printf("4\n"); return 0;

3) [1.0] Τι αλλαγές/προσθήκες πρέπει να γίνουν στο παρακάτω πρόγραµµα, µε χρήση σηµατοφόρων, έτσι ώστε το µήνυµα A: bye να εκτυπώνεται αφού εκτυπωθεί το B: hello ; int main (int argc, char *argv[]) { if (!fork() ) { printf("a: hello\n "); printf("a: bye\n "); return(0); printf("b: hello\n "); printf("b: bye\n "); return(0); ΜΕΡΟΣ Γ [4 µονάδες] Γράψτε ένα πρόγραµµα που τυπώνει περιοδικά στην έξοδο του το µήνυµα hello, επιτρέποντας στον χρήστη να αλλάξει την περίοδο εκτύπωσης ανά πάσα στιγµή κατά την εκτέλεση, ως εξής. Η κυρίως διεργασία δηµιουργεί έναν ανώνυµο αγωγό και µια διεργασία-παιδί που πραγµατοποιεί την περιοδική εκτύπωση του µηνύµατος hello, αρχικά κάθε 1 δευτερόλεπτο. Η κυρίως διεργασία, σε βρόγχο, διαβάζει από την είσοδο της την τιµή της περιόδου που δίνει ο χρήστης (υποθέστε ότι ο χρήστης δίνει σωστές ακέραιες τιµές), στέλνει την τιµή στην διεργασία-παιδί µέσω του αγωγού, και ειδοποιεί το παιδί στέλνοντας του το σήµα SIGUSR1. Αντίστοιχα, η διεργασία-παιδί, κάθε φορά που λαµβάνει το σήµα SIGUSR1, διαβάζει από τον αγωγό την τιµή που έστειλε ο γονιός, και προσαρµόζει αντίστοιχα την περίοδο εκτύπωσης. Αν ο χρήστης δώσει την τιµή 0, η κυρίως διεργασία πρέπει να τερµατίζει το παιδί και στη συνέχεια τον εαυτό της. Γράψτε τον κώδικα σας στην επόµενη σελίδα.

ΚΛΗΣΕΙΣ ΣΥΣΤΗΜΑΤΟΣ ΚΛΗΣΗ ΠΕΡΙΓΡΑΦΗ int open(const char *path, int oflag,...); άνοιγµα ή δηµιουργία αρχείου για διάβασµα ή γράψιµο. ssize_t read(int fd, void *buffer, size_t n); ανάγνωση n bytes από περιγραφέα fd στο buffer ssize_t write(int fd, void *buffer, size_t n); εγγραφή n bytes από buffer σε περιγραφέα fd off_t lseek(int fd, off_t offset, int whence); τοποθέτηση θέσης ανάγνωσης/εγγραφής int ftruncate(int fd, off_t length); κόψιµο ή επέκταση αρχείου int fsync(int fd); σύγχρονη αποθήκευση δεδοµένων στον δίσκο int close(int fd); κλείσιµο περιγραφέα αρχείου int unlink(const char *path); int dup(int fd); int dup2(int fd, int fd2); pid_t fork(); void _exit(int status); void exit(int status); pid_t wait(int *stat); pid_t waitpid(pid_t pid, int *stat, int options); int execlp(const char *file, const char *arg0,...); καταργεί τον σύνδεσµο στο αρχείο δηµιουργία αντιγράφου ενός περιγραφέα αρχείου, dup2: fd2 = dup(fd); δηµιουργία νέας διεργασίας τερµατίζει τη διεργασία κι επιστρέφει κωδικό status. Η exit εκτελεί επιπλέον διαδικασίες καθαρισµού. αναµονή για τερµατισµό θυγατρικής διεργασίας. εκτέλεση προγράµµατος file µε ορίσµατα arg0,... int execvp(const char *file, char *const argv[]); εκτέλεση προγράµµατος file µε διάνυσµα ορισµάτων argv int pipe(int fd[2]); δηµιουργία αγωγού int mkfifo(const char *path, mode_t mode); δηµιουργία επώνυµου αγωγού int fcntl(int fd, int cmd,...); int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval *timeout); int poll(struct pollfd fds[], nfds_t nfds, int timeout); έλεγχος λειτουργίας περιγραφέα fd µπλοκάρει µέχρι να είναι έτοιµος ένας από τους περιγραφείς στα δεδοµένα σύνολα ή να παρέλθει το χρονικό διάστηµα timeout οµοίως µε select αλλα για τον πίνακα περιγραφέων fds. int sigemptyset(sigset_t *set); αρχικοποίηση άδειου συνόλου σηµάτων int sigfillset(sigset_t *set); αρχικοποίηση γεµάτου συνόλου σηµάτων int sigaddset(sigset_t *set, int signo); προσθήκη σήµατος signo στο σύνολο set int sigdelset(sigset_t *set, int signo); αφαίρεση σήµατος signo από το σύνολο set

ΚΛΗΣΗ ΠΕΡΙΓΡΑΦΗ int sigismember(const sigset_t *set, int signo); int sigprocmask(int how, const sigset_t *set, sigset_t *oset); int sigpending(sigset_t *set); int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); int pause(); int sleep(int secs); int sigwait(const sigset_t *set, int *sig); ελέγχει αν το σήµα signo ανήκει στο σύνολο set καθορισµός µάσκας µπλοκαρίσµατος αποθηκεύει εκκρεµή σήµατα στο set καθορίζει επιθυµητό χειρισµό του σήµατος sig αναµονή παραλαβής/χειρισµού σήµατος αναµονή για εκκρεµή σήµατα int sigsuspend(const sigset_t *sigmask); αλλαγή µάσκας µπλοκαρίσµατος και αναµονή σήµατος int kill(pid_t pid, int sig); αποστολή σήµατος sig στη διεργασία pid int ftok(const char *path, int id); δηµιουργία κλειδιού µε βάση το µονοπάτι path και το id int msgget(key_t key, int flags); int msgctl (int msqid, int cmd, struct msqid_ds *data); int msgsnd(int msqid, void *msgp, size_t msize, int flags); int msgrcv(int msqid, void *msgp, size_t msize, long mtype, int flags); int shmget(key_t key, size_t size, int shmflg); δηµιουργία/ανεύρεση ουράς µηνυµάτων έλεγχος ουράς µηνυµάτων αποστολή µηνύµατος msgp µεγέθους msize στην ουρά msqid παραλαβή µηνύµατος msgp µεγέθους msize και τύπου mtype από την ουρά msqid δηµιουργία/ανεύρεση τµήµατος κοινόχρηστης µνήµης int shmctl(int id, int cmd, struct shmid_ds *buf); void *shmat(int id, const void *add, int shmflg); int shmdt(const void *add); int semget(key_t key, int nsems, int semflg); έλεγχος τµήµατος κοινόχρηστης µνήµης δέσµευση/αποδέσµευση τµήµατος κοινόχρηστης µνήµης δηµιουργία/ανεύρεση οµάδας σηµατοφόρων int semctl(int semid, int semnum, int cmd,...); έλεγχος οµάδας σηµατοφόρων int semop(int id, struct buf *ops, size_t nsops); εκτέλεση πράξεων ops σε οµάδα σηµατοφόρων