Προς το περιεχόμενο

απορια shared memory


euler

Προτεινόμενες αναρτήσεις

Δημοσ.

γεια χαρα!

 

εχω μια ασκηση λειτουργικων και εχω μια απορια..

πρεπει να φτιαξω περιοχη shared memory οπου εκει θα υπαρχεια μια ουρα και καποια δεδομενα που θα επιστρεφουν τα παιδια στον πατερα

στην ουρα θα μπαινουν αντικειμενα που θα τα φτιαχνει η διεργασια πατερας και θα τα περνουν με τη σειρα τους τα παιδια για επεξεργασια.

αφου τελειωσουν θα αφαιρουνται απο την κορυφη της ουρας και θα περνουν το επομενο..

 

το θεμα μου ειναι πως η shared memory θα βαλω μια ουρα.

καμια ιδεα ??

Δημοσ.

Η κοινή μνήμη δεν είναι μια ιδιαίτερη δομή, δεσμεύεις απλώς έναν χώρο στην μνήμη κοινό για τις διεργασίες. Οπότε όπως θα υλοποιούσες μια ουρά χωρίς κοινή μνήμη(πχ με πίνακες), ανάλογα την υλοποιείς με την κοινή μνήμη. (Κάνεις cast τον void pointer που επιστρέφει η shmat σε ότι θέλεις.)

Δημοσ.

οκ νομιζω πως καταλαβα..ευχαριστω.

κατι αλλο,η ασκηση λεει να δημιουργηθουν n+1 διεργασιες.η αρχικη να γεννησει τις αλλες n και μετα η αρχικη να φτιαχνει ενα αντικειμενο και να το παιρνει οποια απο τις n θυγατρικες ειναι ελευθερη.

πως θα γινει αυτο?

θα φτιαξω καποιο πινακα με τις διεργασιες παιδια?και πως θα λεω ο πατερας να φτιαχνει και να στελνει και τα παιδια να επεξεργαζονται..

μια γενικη δομη του τι να κανω θα βοηθουσε πολυ..

Δημοσ.

Γενικά μπορείς να "στείλεις" δεδομένα από διεργασία σε διεργασία, δεν είναι όμως αυτό το ζητούμενο της άσκησης.

 

Το όποιο αντικείμενο μπορείς να το τοποθετείς στην κοινή μνήμη όπου έχουν πρόσβαση όλες οι διεργασίες. Φαντάζομαι αυτό που ζητάει η άσκηση είναι να παίξεις με σήματα (signals) ωστε να ενημερώνεις τις όποιες διεργασίες για την ύπαρξή του.

 

Προτείνω να ασχοληθείς πρώτα μόνο με αυτά τα θέματα (fork(), shmat(), signal()) ωστε να εξοικειωθείς με τον τρόπο χρήσης και τις λειτουργίες τους. Μετά ξαναδιαβάζοντας την εκφώνιση να προσπαθήσεις να υλοποιήσεις το ζητούμενο.

Αρχειοθετημένο

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

  • Δημιουργία νέου...