Skip to content

Child processes send requests to parent process, works like a client-server model.

License

Notifications You must be signed in to change notification settings

rigas2k19/OS-Project1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Βασιλείου Ρηγίνος sdi1900019

Το πρόγραμμά μου αποτελείται από μια main στην οποία υπάρχει ο κώδικας για τη γονική διεργασία και για τα παιδιά. Αρχικά φτιάχνω τη διαμοιραζόμενη μνήμη και την κάνω attach στο process. Ανοίγω το αρχείο από το οποίο θέλω να διαβάσω τις γραμμές , μπορείτε να δώσετε όποιο αρχείο κειμένου θέλετε στη μεταβλητή filename). Στην αρχή υπολογίζω τις γραμμές του αρχείου. Μετά φτιάχνω τους σημαφόρους. Χρησιμοποιώ 3 named semaphores. Ο sem1 είναι για να δηλώνει αν η γονική διεργασία έχει τελειώσει με το προηγούμενο παιδί. Ο sem2 δείχνει αν ο πατέρας έχει τελειώσει με το προηγούμενο αίτημα και ο sem3 περιμένει το παιδί να γράψει στη μνήμη.

Στη γονική διεργασία

Έχουμε το shared memory, και ο πρώτος σημαφόρος δείχνει ότι ο πατέρας δε χρειάζεται να περιμένει κάποιο παιδί (έχει αρχικοποιηθεί με 1, οπότε μπαίνει στην sem_wait() χωρίς να χρειαστεί να περιμένει). Τώρα έχει τιμή 0. Μετά περιμένει από το παιδί να γράψει στη μνήμη εφόσον ο 3ος σημαφόρος είναι 0. Παίρνει από το παιδί τον τυχαίο αριθμό και ψάχνει τη γραμμή του αρχείου, τη βρίσκει και την εκτυπώνει. Μετά δηλώνει πως είναι έτοιμος για το επόμενο request.

Στο παιδί

Έχουμε το shared memory, και με τον δεύτερο σημαφόρο περιμένουμε τον πατέρα να τελειώσει με το προηγούμενο request. Βρίσκει έναν τυχαίο αριθμό και τον γράφει στη μνήμη. Μετά δηλώνει στον πατέρα ότι έγραψε στη μνήμη. Όταν τελειώσει με τα n requests δηλώνει στον πατέρα ότι τελείωσε αυτό το παιδί.

Η clock

Αρχίζει από τη στιγμή που θα γράψει το παιδί στη μνήμη και τελειώνει στη στιγμή που θα επιστρέψει από τη γονική διεργασία και έχει εκτυπωθεί το μήνυμα.

About

Child processes send requests to parent process, works like a client-server model.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published