Παράλληλα και κατανεμημένα συστήματα: Διαφορά μεταξύ των αναθεωρήσεων

Περιεχόμενο που διαγράφηκε Περιεχόμενο που προστέθηκε
Gts-tg (συζήτηση | συνεισφορές)
μ σήμανση για έλλειψη πηγών
μΧωρίς σύνοψη επεξεργασίας
Γραμμή 4:
Κατά τη δεκαετία του 1960 η εμφάνιση [[πολυδιεργασία|πολυδιεργασιακών]] [[λειτουργικό σύστημα|λειτουργικών συστημάτων]] και η τυποποίηση της έννοιας της [[διεργασία (υπολογιστές)|διεργασίας]] έφεραν στην επιφάνεια τον '''ταυτοχρονισμό''', μία ιδιότητα των υπολογιστικών συστημάτων η οποία αφορά την ''παράλληλη'' ή ''ψευδοπαράλληλη'' εκτέλεση διαφορετικών, συνεργαζόμενων διεργασιών, σε έναν ή περισσότερους υπολογιστές, για την εκτέλεση ενός υπολογισμού. Αρχικώς οι επιστήμονες της [[θεωρητική πληροφορική|θεωρητικής πληροφορικής]] επιχείρησαν να δώσουν απαντήσεις σε αλγοριθμικά ζητήματα λογισμικού όπως ο ''[[αμοιβαίος αποκλεισμός]]'', η ''εκλογή αρχηγού'', ο ''συγχρονισμός'' και η ''ομοφωνία'' μεταξύ συνεργαζόμενων, ταυτοχρόνως εκτελούμενων διεργασιών (το πεδίο αυτό σήμερα προσδιορίζεται με τον όρο '''κατανεμημένος υπολογισμός'''), ενώ με τις μεθόδους πρακτικής υλοποίησης της πολυδιεργασίας (τον [[χρονοπρογραμματισμός|χρονοπρογραμματισμό]]) ασχολήθηκαν οι ερευνητές από τον χώρο των λειτουργικών συστημάτων.
 
Με την καθιέρωση υπολογιστών με πολλαπλούς επεξεργαστές, όπου οι διεργασίες μπορούσαν να εκτελούνται πραγματικά παράλληλα και όχι ψευδοπαράλληλα, προέκυψαν νέα ζητήματα υλικού με αποτέλεσμα να αναδυθεί η ''παράλληλη επεξεργασία'', ένα επιστημονικό πεδίο το οποίο μελετά, τόσο από πλευράς υλικού όσο και λογισμικού, μόνο υπολογιστικά συστήματα με πολλαπλές επεξεργαστικές μονάδες. Τα συστήματα αυτά μπορούν να εκτελούν ορισμένες, κατάλληλα σχεδιασμένες εφαρμογές (συνήθως [[επιστήμη|επιστημονικού]] σκοπού, π.χ. [[προσομοίωση|προσομοιώσεις]]) ταχύτερα απ' ότιό,τι οι συνηθισμένοι ''σειριακοί'' υπολογιστές [[αρχιτεκτονική φον Νόιμαν|αρχιτεκτονικής Φον Νόιμαν]]. Την ίδια περίοδο όμως εξελίσσονταν και τα [[Δίκτυο υπολογιστών|δίκτυα υπολογιστών]] με αποτέλεσμα, καθώς η δικτύωση άρχισε να είναι πανταχού παρούσα προς τα τέλη της δεκαετίας του 1970, να εμφανιστούν δικτυακά προγράμματα που όχι μόνο αλληλεπιδρούσαν μεταξύ τους μέσω της υποκείμενης δικτυακής υποδομής αλλά εκτελούσαν από κοινού υπολογισμούς με διαφανή για τον χρήστη τρόπο, διασπώντας τους σε τμήματα και κατανέμοντάς τους μεταξύ τους, ενώ στο εξωτερικό περιβάλλον εμφανίζονταν ως ένα μοναδικό σύστημα. Καθώς αυτός ήταν ένας τύπος παραλληλισμού εμφανίστηκε ο όρος ''κατανεμημένη επεξεργασία'' για να τον περιγράψει.
 
Η κατανεμημένη επεξεργασία αποτελεί ένα υποσύνολο της παράλληλης επεξεργασίας, στο οποίο όλες οι [[CPU]] έχουν ιδιωτικές, τοπικές [[μνήμη υπολογιστή|μνήμες]] με ξεχωριστούς [[χώρος διευθύνσεων|χώρους διευθύνσεων]] (είναι δηλαδή ανεξάρτητοι, δικτυωμένοι υπολογιστές) και παρέχουν στον χρήστη την ψευδαίσθηση του ενιαίου, μοναδικού συστήματος. Ο όρος «κατανεμημένο σύστημα» αναφέρεται τόσο στο υλικό (επεξεργαστές, μνήμες, δίκτυο) όσο και στο λογισμικό (λειτουργικό σύστημα, εφαρμογές) που είναι απαραίτητα για να υλοποιηθούν η κατανομή και αυτή η ψευδαίσθηση, με έμφαση όμως στο λογισμικό. Στα κατανεμημένα συστήματα, σε αντίθεση με τα παράλληλα, η εικόνα συνεκτικότητας των γεωγραφικά διεσπαρμένων [[πόρος (υπολογιστές)|πόρων]] είναι συνήθως σπουδαιότερος στόχος από την αύξηση των υπολογιστικών επιδόσεων που επιτυγχάνεται με τον παραλληλισμό. Δεν είναι σπάνιο μάλιστα να μη συμμετέχουν καν οι κόμβοι σε κάποιον από κοινού υπολογισμό αλλά να εκτελούν διαφορετικές επιμέρους εργασίες, παρουσιαζόμενοι όμως στο εξωτερικό περιβάλλον (π.χ. σε πελάτες οι οποίοι ζητούν υπηρεσίες) ως ενιαίο σύστημα. Αυτά ονομάζονται ''μη συνεκτικά κατανεμημένα συστήματα'' (π.χ. ο [[Παγκόσμιος Ιστός]] ή οι [[Peer-to-peer|ομότιμες εφαρμογές ανταλλαγής αρχείων]] μέσω [[Διαδίκτυο|Διαδικτύου]]), σε αντίθεση με τα ''συνεκτικά κατανεμημένα συστήματα'', τα οποία αξιοποιούνται περισσότερο ως συνήθη παράλληλα συστήματα για τη μεγιστοποίηση των υπολογιστικών επιδόσεων.
Γραμμή 21:
Τα συστήματα MIMD διακρίνονται σε '''πολυεπεξεργαστές κοινής μνήμης''', όπου πολλαπλοί επεξεργαστές επικοινωνούν με μία κοινή μνήμη ενιαίου χώρου διευθύνσεων, και σε '''πολυυπολογιστές κατανεμημένης μνήμης''', όπου πολλαπλά πακέτα επεξεργαστή-ιδιωτικής μνήμης, με τον δικό του χώρο διευθύνσεων το καθένα, διασυνδέονται και επικοινωνούν μεταξύ τους --και στις δύο περιπτώσεις η επικοινωνία γίνεται μέσω ενός «''δικτύου διασύνδεσης''». Τα μοντέλα παράλληλου προγραμματισμού για πολυεπεξεργαστές και πολυυπολογιστές είναι το μοντέλο κοινού χώρου διευθύνσεων (π.χ. πολλαπλές διεργασίες ή [[νήμα (υπολογιστές)|νήματα]], [[OpenMP]]) και το μοντέλο μεταβίβασης μηνυμάτων (π.χ. [[PVM]], [[MPI]]), αντιστοίχως. Στο πρώτο οι επεξεργαστικές μονάδες ανταλλάσσουν πληροφορίες προσπελαύνοντας κοινόχρηστες [[μεταβλητή (υπολογιστές)|μεταβλητές]] στην κοινή μνήμη, ενώ στο δεύτερο ανταλλάσσοντας μηνύματα. Κάθε προγραμματιστικό μοντέλο μπορεί να εφαρμοστεί και σε σύστημα μιας αρχιτεκτονικής που δεν είναι η φυσική του (π.χ. πολυνηματικό πρόγραμμα σε πολυυπολογιστή ή πρόγραμμα MPI σε πολυεπεξεργαστή) αλλά συνήθως με χαμηλότερες επιδόσεις.
 
Στους πολυεπεξεργαστές εκτελείται ένα μόνο λειτουργικό σύστημα, το οποίο αναλαμβάνει να αναθέσει την εκτέλεση παράλληλων διεργασιών σε διαφορετικούς επεξεργαστές, ενώ στους πολυυπολογιστές, οι οποίοι ουσιαστικά αποτελούν κατανεμημένα συστήματα εφόσον είναι εφοδιασμένοι με το κατάλληλο λογισμικό, κάθε κόμβος εκτελεί τον δικό του [[πυρήνας (υπολογιστές)|πυρήνα]]. Μία υβριδική αρχιτεκτονική, η οποία επιτρέπει εύκολη εκτέλεση προγραμμάτων κοινού χώρου διευθύνσεων σε πολυυπολογιστές, είναι η '''κατανεμημένη κοινή μνήμη''', στην οποία εξειδικευμένο υλικό (ελεγκτές μνήμης) παρέχει διαφανώς την ψευδαίσθηση ενιαίου χώρου διευθύνσεων στο λογισμικό που εκτελείται σε κάθε κόμβο. Στα συστήματα αυτά, φυσικά κατανεμημένης αλλά λογικά ενιαίας μνήμης, ένας κόμβος προσπελαύνει πολύ γρηγορότερα τα δεδομένα που είναι αποθηκευμένα στην τοπική του μνήμη απ' ότιό,τι τα δεδομένα που βρίσκονται σε κάποιον απομακρυσμένο κόμβο και γι' αυτό λέγονται συστήματα '''Ανομοιόμορφης Πρόσβασης Μνήμης''' (NUMA). Στους υπολογιστές αυτούς συνήθως εκτελείται ένας μόνο πυρήνας λειτουργικού συστήματος ο οποίος γνωρίζει, για λόγους βελτιστοποίησης των επιδόσεων, τις λεπτομέρειες της υποκείμενης αρχιτεκτονικής NUMA.
 
=== Πολυεπεξεργαστές ===
Γραμμή 112:
Με βάση τα προηγούμενα, ενδιάμεσο λογισμικό αποτελεί π.χ. μία βιβλιοθήκη η οποία υλοποιεί το MPI, λειτουργώντας έτσι ως «διαμεσολαβητής» για την εύκολη και διαφανή ανάπτυξη παράλληλων εφαρμογών μεταβίβασης μηνυμάτων σε πολυυπολογιστές. Ωστόσο το MPI, λόγω του ρόλου και της φύσης του, παραβιάζει θεμελιωδώς τη διαφάνεια θέσης με τη ρητή ανταλλαγή μηνυμάτων μεταξύ των συμμετεχόντων διεργασιών. Ακόμα, κάποιο ενδιάμεσο λογισμικό μπορεί να μην παρέχεται ως ξεχωριστή βιβλιοθήκη για την υποστήριξη πολλαπλών εφαρμογών, αλλά να είναι ενσωματωμένο σε μία μόνο κατανεμημένη δικτυακή εφαρμογή και βελτιστοποιημένο γι' αυτήν. Αυτό συμβαίνει π.χ. με τις περισσότερες ομότιμες εφαρμογές ανταλλαγής αρχείων μέσω Διαδικτύου.
 
Τα DOS παρουσιάζονται στους χρήστες ως συγκεντρωτικά και μονοεπεξεργαστικά. Ένα DOS σε πολυεπεξεργαστή έχει έναν μοναδικό πυρήνα κοινό για όλες τις CPU (όχι μονολιθικό στην πλειονότητα των περιπτώσεων, για λόγους ευελιξίας) ενώ, αντιθέτως, σ' ένα DOS σε πολυυπολογιστή κάθε κόμβος έχει τον δικό του πυρήνα (ο οποίος χρησιμοποιεί την τοπική μνήμη) αλλά παρέχεται κατάλληλη διασύνδεση που αποκρύπτει αυτό το γεγονός από τις εφαρμογές προσφέροντας, αν χρειάζεται, μέχρι και την ψευδαίσθηση κοινής [[εικονική μνήμη|εικονικής μνήμης]]: ο χώρος εικονικών διευθύνσεων διαμερίζεται σε σελίδες και σε κάθε κόμβο ανατίθενται κάποιες ('''κατανεμημένη κοινή μνήμη λογισμικού'''). Αυτό μοιάζει με ό,τι συμβαίνει στα συστήματα NUMA, όπου ο χώρος διευθύνσεων είναι έτσι κι αλλιώς κοινός από τη σκοπιά του λειτουργικού συστήματος, μόνο που οι επιδόσεις ενός πολυυπολογιστή με κατανεμημένη κοινή μνήμη λογισμικού είναι σαφώς χαμηλότερες απ' ότιό,τι αν η ψευδαίσθηση του εναίου χώρου διευθύνσεων υλοποιούνταν απευθείας στο υλικό, όπως στην αρχιτεκτονική NUMA.
 
=== Ζητήματα σχεδίασης ===