- Ως καθηγητής Επιστήμης Υπολογιστών στο Πανεπιστήμιο του Ρότσεστερ, και στο Πανεπιστήμιο του Ουισκόνσιν-Μάντισον της πατρίδας του ήταν κοσμήτορας για πέντε χρόνια. Ερευνά και διδάσκει στους μαθητές τον παράλληλο και κατανεμημένο προγραμματισμό και το σχεδιασμό γλώσσας.
Ο κόσμος γνωρίζει τον Μιχαήλ από το σχολικό βιβλίο , τι γίνεται με τη δουλειά έλαβε το βραβείο Dijkstra ως ένα από τα πιο διάσημα στον τομέα των κατανεμημένων υπολογιστών. Μπορεί επίσης να τον γνωρίζετε ως τον συγγραφέα αυτού ακριβώς του αλγορίθμου .
Μαζί με τον Doug Lee, ανέπτυξε τους αλγόριθμους μη αποκλεισμού και τις σύγχρονες ουρές που τροφοδοτούν τις βιβλιοθήκες Java. Εκτέλεση στο JavaSE 6 βελτίωσε την απόδοση κατά 10 φορές ThreadPoolExecutor.
Περιεχόμενα:
- Πρώιμη καριέρα, Πανεπιστήμιο του Ρότσεστερ. Project Charlotte, γλώσσα Lynx;
- IEEE Scalable Coherent Interface, MCS κλείδωμα.
- Επιβίωση σε έναν συνεχώς μεταβαλλόμενο κόσμο.
- Γίνονται οι μαθητές πιο χαζοί; Παγκόσμιες τάσεις, διεθνοποίηση;
- Αποτελεσματική εργασία με μαθητές.
- Πώς να παρακολουθείτε την προετοιμασία νέων μαθημάτων και βιβλίων.
- Σχέσεις μεταξύ επιχειρήσεων και ακαδημαϊκού κόσμου.
- Πρακτική υλοποίηση ιδεών. MCS, MS, CLH, JSR 166, σε συνεργασία με τον Doug Lee και άλλα.
- Συναλλακτική μνήμη;
- Νέες αρχιτεκτονικές. Η νίκη της συναλλακτικής μνήμης είναι κοντά.
- Μη πτητική μνήμη, Optane DIMM, εξαιρετικά γρήγορες συσκευές.
- Η επόμενη μεγάλη τάση. Διπλές δομές δεδομένων. Υδρα.
Η συνέντευξη γίνεται από:
Βιτάλι Ακσένοφ — επί του παρόντος μεταδιδακτορικός στο IST Austria και μέλος του Τμήματος Τεχνολογιών Υπολογιστών στο Πανεπιστήμιο ITMO. Διεξάγει έρευνα στον τομέα της θεωρίας και της πρακτικής ανταγωνιστικών δομών δεδομένων. Πριν εργαστεί στο IST, έλαβε το διδακτορικό του από το Πανεπιστήμιο Paris Diderot και το Πανεπιστήμιο ITMO υπό την επίβλεψη του καθηγητή Peter Kuznetsov.
Αλεξέι Φεντόροφ - Παραγωγός στην JUG Ru Group, μια ρωσική εταιρεία που διοργανώνει συνέδρια για προγραμματιστές. Ο Alexey συμμετείχε στην προετοιμασία περισσότερων από 50 συνεδρίων και το βιογραφικό του περιλαμβάνει τα πάντα, από τη θέση του μηχανικού ανάπτυξης στην Oracle (JCK, Java Platform Group) μέχρι τη θέση του προγραμματιστή στην Odnoklassniki.
Βλαντιμίρ Σίτνικοφ - Μηχανικός στο Netcracker. Δέκα χρόνια δουλειάς για την απόδοση και την επεκτασιμότητα του NetCracker OS, λογισμικού που χρησιμοποιείται από τηλεπικοινωνιακούς φορείς για την αυτοματοποίηση των διαδικασιών διαχείρισης εξοπλισμού δικτύου και δικτύου. Ενδιαφέρεστε για ζητήματα απόδοσης της Java και της Oracle Database. Συγγραφέας περισσότερων από δώδεκα βελτιώσεων απόδοσης στο επίσημο πρόγραμμα οδήγησης PostgreSQL JDBC.
Πρώιμη καριέρα, Πανεπιστήμιο του Ρότσεστερ. Έργο Charlotte, γλώσσα Lynx.
Αλεξέι: Αρχικά, ήθελα να σας πω ότι στη Ρωσία όλοι αγαπάμε πολύ την Επιστήμη των Υπολογιστών, την Επιστήμη των Δεδομένων και τους αλγόριθμους. Είναι εντελώς άσεμνο. Έχουμε διαβάσει τα πάντα . Επομένως, το επερχόμενο συνέδριο, το σχολείο και αυτή η ίδια η συνέντευξη θα πρέπει να είναι πολύ δημοφιλή. Λάβαμε πολλές ερωτήσεις για αυτήν τη συνέντευξη από φοιτητές, προγραμματιστές και μέλη της κοινότητας, επομένως είμαστε πολύ ευγνώμονες για αυτήν την ευκαιρία. Η Επιστήμη των Υπολογιστών έχει την ίδια αγάπη στις ΗΠΑ;
Μιχαήλ: Ο τομέας μας είναι τόσο διαφορετικός, έχει τόσες πολλές κατευθύνσεις και επηρεάζει την κοινωνία με τόσους διαφορετικούς τρόπους που μου είναι δύσκολο να σας δώσω μια οριστική απάντηση. Γεγονός όμως είναι ότι έχει επιφέρει τεράστιες αλλαγές στις επιχειρήσεις, τη βιομηχανία, την τέχνη και την κοινωνία γενικότερα τα τελευταία 30 χρόνια.
Виталий: Ας ξεκινήσουμε με κάτι μακρινό. Σε πολλά πανεπιστήμια υπάρχει κάτι σαν εξειδίκευση σε έναν συγκεκριμένο τομέα. Για το Πανεπιστήμιο Carnegie Mellon αυτό είναι παράλληλος υπολογισμός, για το MIT είναι κρυπτογραφία, ρομπότ και πολυνηματική. Υπάρχει τέτοια εξειδίκευση στο Πανεπιστήμιο του Ρότσεστερ;
Μιχαήλ: Για να είμαι ειλικρινής, θα έλεγα ότι το CMU και το MIT ειδικεύονται σε όλους τους τομείς. Το τμήμα μας έδινε πάντα τη μεγαλύτερη προσοχή στην τεχνητή νοημοσύνη. Οι μισοί από τους ανθρώπους που εργάζονται για εμάς ασχολούνται με την τεχνητή νοημοσύνη ή την αλληλεπίδραση ανθρώπου-υπολογιστή - αυτό το μερίδιο είναι υψηλότερο από ό,τι σε άλλα τμήματα, και ήταν πάντα έτσι. Αλλά όταν ήμουν στο πανεπιστήμιο, δεν είχα μαθήματα τεχνητής νοημοσύνης και δεν δούλεψα ποτέ σε αυτόν τον τομέα. Άρα το τμήμα μου ειδικεύεται σε ένα πρόβλημα με το οποίο δεν έχω καμία σχέση. Το παρήγορο είναι ότι το δεύτερο σημαντικότερο πρόβλημα για το τμήμα μας είναι ο παράλληλος και πολυνηματικός προγραμματισμός, δηλαδή η εξειδίκευσή μου.
Виталий: Ξεκινήσατε να εργάζεστε στην Επιστήμη των Υπολογιστών όταν μόλις αναδυόταν ο τομέας του προγραμματισμού πολλαπλών νημάτων. Ο κατάλογος των δημοσιεύσεών σας δείχνει ότι τα πρώτα σας έργα αντιμετώπιζαν ένα αρκετά ευρύ φάσμα θεμάτων: διαχείριση μνήμης σε συστήματα πολλαπλών νημάτων, συστήματα κατανεμημένων αρχείων, λειτουργικά συστήματα. Γιατί τέτοια πολυχρηστικότητα; Προσπαθήσατε να βρείτε τη θέση σας στην ερευνητική κοινότητα;
Μιχαήλ: Ως μαθητής συμμετείχα στο στο Πανεπιστήμιο του Ουισκόνσιν, όπου αναπτύχθηκε ένα από τα πρώτα κατανεμημένα λειτουργικά συστήματα. Εκεί δούλεψα μαζί με τον Rafael Finkel () και Marvin Solomon (). Η διατριβή μου ήταν αφιερωμένη στην ανάπτυξη μιας γλώσσας για λογισμικό συστήματος για κατανεμημένα συστήματα - τώρα όλοι το έχουν ξεχάσει και δόξα τω Θεώ. Δημιούργησα τη γλώσσα προγραμματισμού Lynx, η οποία είχε σκοπό να διευκολύνει τη δημιουργία διακομιστών για ένα χαλαρά συνδεδεμένο κατανεμημένο λειτουργικό σύστημα. Δεδομένου ότι εκείνη την περίοδο ασχολιόμουν κυρίως με τα λειτουργικά, υπέθεσα ότι η καριέρα μου θα συνδεόταν κυρίως με αυτά. Αλλά το Ρότσεστερ ήταν ένα πολύ μικρό πανεπιστήμιο, και εξαιτίας αυτού, οι διαφορετικές ομάδες εκεί αλληλεπιδρούσαν πολύ στενά μεταξύ τους. Δεν υπήρχαν δώδεκα άλλα άτομα λειτουργικών συστημάτων εκεί για να μιλήσω, έτσι όλες οι επαφές μου ήταν με ανθρώπους που εργάζονταν σε εντελώς διαφορετικούς τομείς. Το απόλαυσα πολύ, το να είμαι πολυετής είναι ένα μεγάλο πλεονέκτημα για μένα. Αν μιλάμε συγκεκριμένα για δομές δεδομένων πολλαπλών νημάτων και αλγόριθμους συγχρονισμού, τότε άρχισα να δουλεύω πάνω τους εντελώς τυχαία.
IEEE Scalable Coherent Interface, κλείδωμα MCS.
Виталий: Μπορείτε να μου πείτε λίγα περισσότερα για αυτό;
Μιχαήλ: Αυτή είναι μια αστεία ιστορία που δεν βαριέμαι να λέω σε όλους. Συνέβη σε ένα συνέδριο στη Βοστώνη - αυτό ήταν στα τέλη της δεκαετίας του '80 ή στις αρχές της δεκαετίας του '90. Τζον Μέλορ-Κράμι (), απόφοιτος της σχολής μας. Τον ήξερα, αλλά δεν είχαμε κάνει κοινή έρευνα πριν. Mary Vernon () από το Ουισκόνσιν μίλησε για ένα σύστημα πολλαπλών επεξεργαστών που ανέπτυξαν στο Ουισκόνσιν: . Αυτό το Multicube είχε έναν μηχανισμό συγχρονισμού σε επίπεδο υλικού που ονομαζόταν Q on Sync Bit, και αργότερα μετονομάστηκε σε Q on Lock Bit επειδή ακουγόταν σαν τυρί Colby, που ήταν λογοπαίγνιο. Εάν ενδιαφέρεστε για μηχανισμούς πολλαπλών νημάτων, πιθανότατα γνωρίζετε ότι το Colby έγινε τελικά η μηχανή συγχρονισμού για το πρότυπο IEEE Scalable Coherent Interface. Αυτός ήταν ένας μηχανισμός κλειδώματος που δημιουργούσε δείκτες από τη μια κρυφή μνήμη στην άλλη σε επίπεδο υλικού, έτσι ώστε κάθε κάτοχος κλειδαριάς να γνωρίζει ποιανού ήταν η σειρά. Όταν ο John και εγώ ακούσαμε για αυτό, κοιταχτήκαμε και είπαμε: γιατί να το κάνουμε αυτό σε επίπεδο υλικού; Δεν μπορεί να επιτευχθεί το ίδιο με τη χρήση σύγκρισης και ανταλλαγής; Πήραμε ένα από τα τετράδια που ήταν ξαπλωμένα στην τάξη και το γράψαμε , ενώ η Μαίρη συνέχιζε την αναφορά της. Στη συνέχεια, το εφαρμόσαμε, πειραματιστήκαμε, η ιδέα αποδείχθηκε επιτυχημένη και δημοσιεύσαμε το άρθρο. Εκείνη την εποχή, για μένα, αυτό το θέμα φαινόταν απλώς μια διασκεδαστική απόσπαση της προσοχής, μετά την οποία σχεδίαζα να επιστρέψω στα λειτουργικά συστήματα. Στη συνέχεια, όμως, προέκυψε ένα άλλο πρόβλημα στην ίδια γραμμή, και τελικά ο συγχρονισμός, η πολλαπλή νήμα και οι δομές δεδομένων έγιναν η ειδικότητά μου. Όπως μπορείτε να δείτε, όλα αυτά έγιναν τυχαία.
Виталий: Είμαι εξοικειωμένος με τον αποκλεισμό MCS εδώ και πολύ καιρό, αλλά μέχρι τώρα δεν ήξερα ότι ήταν δουλειά σου και δεν καταλάβαινα ότι ήταν αρκτικόλεξο για τα επώνυμά σου.
Πώς να επιβιώσετε σε έναν συνεχώς μεταβαλλόμενο κόσμο;
Αλεξέι: Έχω μια ερώτηση για ένα σχετικό θέμα. Πριν από 30 ή 40 χρόνια υπήρχε μεγαλύτερη ελευθερία σε διάφορες ειδικότητες. Αν θέλετε να ξεκινήσετε μια καριέρα σε συστήματα πολλαπλών νημάτων ή κατανεμημένων συστημάτων, είστε ευπρόσδεκτοι, αν θέλετε να ασχοληθείτε με τα λειτουργικά συστήματα, κανένα πρόβλημα. Σε κάθε τομέα υπήρχαν πολλές ανοιχτές ερωτήσεις και λίγοι ειδικοί. Τώρα έχουν προκύψει στενές εξειδικεύσεις: δεν υπάρχουν μόνο ειδικοί στα λειτουργικά συστήματα γενικά, υπάρχουν ειδικοί σε μεμονωμένα συστήματα. Το ίδιο συμβαίνει με τα συστήματα πολλαπλών νημάτων και κατανεμημένων συστημάτων. Αλλά το πρόβλημα είναι ότι η ζωή μας δεν είναι ατελείωτη. Πώς να επιβιώσετε σε αυτόν τον νέο κόσμο;
Μιχαήλ: Δεν είμαστε ειδικοί από αυτή την άποψη, το ίδιο συνέβη κάποτε σε άλλους τομείς. Ήμουν τυχερός που ξεκίνησα να εργάζομαι στην Πληροφορική όταν ο κλάδος ήταν στα «εφηβικά» του χρόνια. Είχαν ήδη μπει κάποια θεμέλια, αλλά όλα ήταν ακόμα πολύ ανώριμα. Αυτή η ευκαιρία δεν έρχεται συχνά. Η ηλεκτρική μηχανική υπάρχει εδώ και πολύ καιρό, η φυσική ακόμα περισσότερο, τα μαθηματικά σχεδόν από την αρχή του χρόνου. Αυτό όμως δεν σημαίνει ότι κανείς πλέον δεν κάνει ενδιαφέρουσες ανακαλύψεις στα μαθηματικά. Υπάρχουν ακόμη πολλά ανοιχτά προβλήματα, αλλά ταυτόχρονα πρέπει να μάθουμε περισσότερα. Έχετε δίκιο που σημειώνετε ότι τώρα υπάρχουν πολλές περισσότερες εξειδικεύσεις από ό,τι πριν, αλλά αυτό σημαίνει μόνο ότι βρισκόμαστε στην ίδια κατάσταση με τους περισσότερους άλλους τομείς της ανθρώπινης δραστηριότητας.
Αλεξέι: Με ενδιαφέρει η πιο πρακτική πτυχή του θέματος εδώ. Έχω υπόβαθρο στα μαθηματικά και κατά τη διάρκεια των σπουδών μου παρακολουθούσα συχνά συνέδρια και δούλεψα σε διάφορα επιστημονικά θέματα. Ανακάλυψα ότι κανένας από το κοινό δεν καταλάβαινε τις αναφορές μου, και με τον ίδιο τρόπο, οι αναφορές άλλων ανθρώπων ήταν κατανοητές μόνο από τον εαυτό τους. Αυτό δεν συμβαίνει σε θέματα υψηλού επιπέδου, αλλά μόλις αρχίσετε να εμβαθύνετε σε κάτι, το κοινό δεν μπορεί πλέον να σας παρακολουθεί. Πώς το αντιμετωπίζετε αυτό;
Μιχαήλ: Όχι πάντα επιτυχημένη. Πρόσφατα ετοίμασα μια έκθεση στην οποία μπήκα πολύ βαθιά σε τεχνικές λεπτομέρειες. Καθώς προχωρούσε η συζήτηση, έγινε σαφές ότι το μεγαλύτερο μέρος του κοινού δεν με καταλάβαινε, οπότε έπρεπε να προσαρμοστώ στην κατάσταση εν κινήσει. Οι διαφάνειες δεν μπορούσαν να αλλάξουν, επομένως δεν βγήκε πολύ καλά - επομένως, γενικά μιλώντας, προσπαθώ να μην χρησιμοποιώ διαφάνειες. Συνολικά, η συμβουλή μου είναι να λάβετε υπόψη το κοινό σας. Πρέπει να ξέρετε με ποιον μιλάτε, ποιο είναι το επίπεδο γνώσεών τους και τι πρέπει να ακούσουν για να εκτιμήσουν τη δουλειά σας.
Виталий: Θα μπορούσατε να μας δώσετε μια υπόδειξη για το τι ήταν αυτή η διάλεξη;
Μιχαήλ: Για να είμαι ειλικρινής, θα προτιμούσα να μην επεκταθώ σε αυτό το θέμα για να αφήσω τους εν λόγω ανθρώπους ανώνυμους. Το θέμα είναι ότι συχνά μπαίνουμε πολύ βαθιά στις περιπλοκές του προβλήματος που εργαζόμαστε, επομένως μας γίνεται δύσκολο να εξηγήσουμε στην αρχή της ομιλίας γιατί το πρόβλημα είναι ενδιαφέρον και σημαντικό και πώς σχετίζεται με ζητήματα που το κοινό γνωρίζει ήδη. Σύμφωνα με τις παρατηρήσεις μου, οι μαθητές δυσκολεύονται να μάθουν αυτή τη δεξιότητα. Και αυτό ήταν επίσης το αδύναμο σημείο της πρόσφατης έκθεσής μου. Μια σωστά δομημένη αναφορά θα πρέπει από την αρχή να βρει επαφή με το κοινό, να του εξηγήσει ποιο ακριβώς είναι το πρόβλημα και πώς σχετίζεται με θέματα που είναι ήδη γνωστά σε αυτό. Το πόσο τεχνική είναι αυτή η εισαγωγή εξαρτάται από το κοινό. Εάν είναι τελείως ετερόκλητη, τότε η αναφορά μπορεί να είναι πολλαπλών σταδίων. Η εισαγωγή θα πρέπει να είναι προσβάσιμη σε όλους και μέχρι το τέλος το κομμάτι μπορεί να μην είναι σε θέση να συμβαδίσει με εσάς, αλλά άτομα που είναι σχετικά εξοικειωμένα με τον τομέα σας θα μπορούν να το καταλάβουν.
Γίνονται οι μαθητές πιο χαζοί; Παγκόσμιες τάσεις, διεθνοποίηση.
Αλεξέι: Παρατηρείτε μαθητές εδώ και αρκετές δεκαετίες. Γίνονται οι μαθητές πιο χαζοί ή εξυπνότεροι από δεκαετία σε δεκαετία ή χρόνο σε χρόνο; Στη Ρωσία, οι καθηγητές διαμαρτύρονται διαρκώς ότι οι μαθητές γίνονται πιο χαζοί κάθε χρόνο και δεν είναι πραγματικά ξεκάθαρο τι να κάνουν γι 'αυτό.
Μιχαήλ: Πραγματικά μπορείς να ακούσεις πολύ αρνητισμό από εμάς τους παλιούς. Υποσυνείδητα, έχουμε την τάση να περιμένουμε από τους μαθητές να απορροφήσουν όλα τα 30 χρόνια εμπειρίας που έχουμε ήδη. Αν έχω βαθύτερη κατανόηση από ό,τι είχα το 1985, γιατί δεν την έχουν οι μαθητές; Μάλλον επειδή είναι 20 ετών, τι πιστεύεις; Νομίζω ότι οι πιο σημαντικές αλλαγές τις τελευταίες δεκαετίες ήταν στη δημογραφική σύνθεση: τώρα έχουμε πολύ περισσότερους ξένους φοιτητές, με εξαίρεση τους Καναδούς. Υπήρχαν πολλοί Καναδοί γιατί είμαστε πολύ κοντά στα σύνορα με τον Καναδά και οι μαθητές από εκεί μπορούν να ταξιδέψουν στο σπίτι τα Σαββατοκύριακα. Αλλά τώρα υπάρχουν πολλά καλά πανεπιστήμια στον Καναδά, και οι Καναδοί προτιμούν να σπουδάζουν εδώ, σημαντικά λιγότερα από αυτά έρχονται στις ΗΠΑ.
Αλεξέι: Πιστεύετε ότι πρόκειται για τοπική τάση ή παγκόσμια;
Μιχαήλ: Δεν θυμάμαι ακριβώς ποιος, αλλά κάποιος είπε ότι ο κόσμος είναι επίπεδος. Ο τομέας μας έχει γίνει πολύ πιο διεθνής. Παλαιότερα γίνονταν αποκλειστικά εντός των Ηνωμένων Πολιτειών, μετά αποφάσισαν να πραγματοποιούνται μία φορά κάθε 4 χρόνια σε άλλες χώρες και τώρα γίνονται σε όλο τον κόσμο. Αυτές οι αλλαγές επηρέασαν ακόμη περισσότερο , καθώς ήταν πάντα ένας πιο διεθνής οργανισμός από τον ACM. Και υπάρχουν έδρες προγράμματος από την Κίνα, την Ινδία, τη Ρωσία, τη Γερμανία και πολλές άλλες χώρες, γιατί συμβαίνουν πολλά παντού τώρα.
Αλεξέι: Αλλά, πιθανώς, υπάρχουν κάποιες αρνητικές πτυχές μιας τέτοιας διεθνοποίησης;
Μιχαήλ: Θα έλεγα ότι όλες οι αρνητικές πτυχές δεν σχετίζονται με την τεχνολογία, αλλά με την πολιτική. Μια φορά κι έναν καιρό, το κύριο πρόβλημα ήταν το γεγονός ότι οι ΗΠΑ έκλεβαν τους πιο έξυπνους και ταλαντούχους ανθρώπους από χώρες σε όλο τον κόσμο. Και τώρα το κύριο πρόβλημα είναι τα πολιτικά παιχνίδια μεταξύ διαφορετικών χωρών γύρω από τις βίζες και τη μετανάστευση.
Αλεξέι: Δηλαδή εμπόδια και τέτοια. Είναι σαφές.
Βλαδίμηρος: Προσωπικά, με ενδιαφέρει ποια προσέγγιση ακολουθείτε όταν διδάσκετε ένα νέο μάθημα σε μαθητές. Υπάρχουν διαφορετικές επιλογές: μπορείτε να δοκιμάσετε πρώτα απ 'όλα να τους εμπνεύσετε να δοκιμάσουν κάτι νέο ή μπορείτε να δώσετε μεγαλύτερη προσοχή στις λεπτομέρειες του τρόπου λειτουργίας μιας συγκεκριμένης τεχνολογίας. Τι προτιμάτε?
Αποτελεσματική εργασία με μαθητές
Αλεξέι: Και πώς να βρεις την καταραμένη ισορροπία μεταξύ του πρώτου και του δεύτερου;
Μιχαήλ: Το πρόβλημα είναι ότι τα μαθήματα δεν πάνε πάντα όπως θα ήθελα. Συνήθως δίνω στους μαθητές υλικό ανάγνωσης εκ των προτέρων, ώστε να εμβαθύνουν σε αυτό, να το κατανοήσουν όσο καλύτερα μπορούν και να διατυπώσουν ερωτήσεις σχετικά με εκείνα τα μέρη που δεν μπορούσαν να κατανοήσουν. Στη συνέχεια στην τάξη μπορείτε να εστιάσετε στις πιο δύσκολες στιγμές και να τις εξερευνήσετε μαζί. Έτσι μου αρέσει περισσότερο να διδάσκω μαθήματα. Αλλά δεδομένου του φορτίου που βαρύνει τώρα τους μαθητές, δεν είμαι πάντα σε θέση να βεβαιωθώ ότι προετοιμάζονται εκ των προτέρων. Ως αποτέλεσμα, θα πρέπει να αφιερώσετε πολύ περισσότερο χρόνο στη γενική αναδιήγηση του υλικού από όσο θα θέλατε. Παρόλα αυτά, προσπαθώ να κρατάω τα μαθήματά μας διαδραστικά. Διαφορετικά, είναι ευκολότερο να εγγράψετε ένα βίντεο μόλις οι μαθητές μπορούν να το παρακολουθήσουν στο σπίτι. Το σημείο των ζωντανών μαθημάτων είναι η ανθρώπινη αλληλεπίδραση. Στην τάξη, προτιμώ να χρησιμοποιώ κιμωλία και μαυροπίνακα παρά διαφάνειες, εκτός από ορισμένες περιπτώσεις όπου ένα διάγραμμα είναι πολύ περίπλοκο για να απεικονιστεί στον πίνακα. Χάρη σε αυτό, δεν χρειάζεται να επιμείνω σε ένα άκαμπτο σχέδιο μαθήματος. Δεδομένου ότι δεν υπάρχει αυστηρή σειρά με την οποία δίνω το υλικό, μου επιτρέπει να το προσαρμόσω στο κοινό ανάλογα με τις ερωτήσεις που λαμβάνω. Γενικά, προσπαθώ να κάνω τα μαθήματα όσο το δυνατόν πιο διαδραστικά, ώστε το υλικό που παρουσιάζω να εξαρτάται από τις ερωτήσεις που μου τίθενται.
Βλαδίμηρος: Ειναι υπεροχο. Σύμφωνα με την εμπειρία μου, είναι αρκετά δύσκολο να κάνεις τους ακροατές να κάνουν ερωτήσεις. Ακόμα κι αν ζητήσετε εκ των προτέρων να κάνετε οποιεσδήποτε ερωτήσεις, όσο ανόητες ή έξυπνες κι αν είναι, εξακολουθούν να σιωπούν. Πώς το αντιμετωπίζετε αυτό;
Μιχαήλ: Θα γελάσετε, αλλά αν μείνετε αρκετά σιωπηλοί, αργά ή γρήγορα όλοι θα νιώσουν άβολα και κάποιος θα κάνει μια ερώτηση. Ή μπορείτε να κάνετε μια απλή τεχνική ερώτηση με μια απάντηση ναι ή όχι για να προσδιορίσετε εάν οι άνθρωποι κατανοούν αυτό που μόλις ειπώθηκε. Για παράδειγμα, υπάρχει κούρσα δεδομένων στο παραπάνω παράδειγμα; Ποιος πιστεύει έτσι; Ποιος πιστεύει ότι όχι; Ποιος δεν καταλαβαίνει απολύτως τίποτα, γιατί συνολικά ανέβηκαν μόνο τα μισά χέρια;
Виталий: Και αν απάντησες λάθος, σε διώχνουν από την τάξη :)
Μιχαήλ: Εάν δεν έχετε απαντήσει σε τίποτα, τότε θα πρέπει να κάνετε μια ερώτηση. Πρέπει να καταλάβω τι ακριβώς πρέπει να γνωρίζει ο μαθητής για να απαντήσει στην ερώτηση που μόλις έθεσα. Χρειάζομαι να με βοηθήσουν να τους βοηθήσω. Είμαι έτοιμος να προσαρμοστώ σε αυτά για να καταλάβουν το πρόβλημα. Αλλά αν δεν ξέρω τι συμβαίνει στο κεφάλι τους, δεν μπορώ να το κάνω. Και αν δεν δίνετε στους μαθητές ησυχία για αρκετό καιρό, μερικές φορές στο τέλος κάνουν τις σωστές ερωτήσεις, δηλαδή αυτές που μου επιτρέπουν να δω τι ακριβώς συμβαίνει στα κεφάλια των μαθητών.
Αλεξέι: Αυτές οι ερωτήσεις οδηγούν μερικές φορές σε ιδέες που εσείς οι ίδιοι δεν είχατε σκεφτεί πριν; Είναι απροσδόκητα; Σας επιτρέπουν να δείτε ένα πρόβλημα με νέο πρίσμα;
Μιχαήλ: Υπάρχουν ερωτήσεις που ανοίγουν έναν νέο τρόπο παρουσίασης του υλικού. Υπάρχουν συχνά ερωτήσεις που οδηγούν σε ενδιαφέροντα προβλήματα για τα οποία δεν σχεδίαζα να μιλήσω. Οι μαθητές μου λένε συχνά ότι έχω την τάση να βγαίνω εκτός θέματος όταν συμβαίνει αυτό. Και, σύμφωνα με αυτούς, πολύ συχνά αυτό είναι το πιο ενδιαφέρον μέρος του μαθήματος. Πολύ σπάνια, λίγες μόνο φορές, οι μαθητές έκαναν ερωτήσεις που ώθησαν μια νέα κατεύθυνση στην έρευνα και μετατράπηκαν σε άρθρο. Αυτό συμβαίνει πολύ πιο συχνά σε συνομιλίες με μαθητές παρά κατά τη διάρκεια των μαθημάτων, αλλά περιστασιακά συνέβαινε κατά τη διάρκεια των μαθημάτων.
Αλεξέι: Δηλαδή οι μαθητές σας έκαναν ερωτήσεις βάσει των οποίων ήταν τότε δυνατή η δημοσίευση ενός άρθρου;
Μιχαήλ: Ναί.
Виталий: Πόσο συχνά κάνετε αυτές τις συζητήσεις με μαθητές; Πότε θέλουν να μάθουν περισσότερα από όσα καλύφθηκαν κατά τη διάρκεια του μαθήματος;
Μιχαήλ: Με τους μεταπτυχιακούς φοιτητές μου - όλη την ώρα. Έχω περίπου 5 ή 6 από αυτούς και συζητάμε κάτι μαζί τους όλη την ώρα. Και οι συζητήσεις αυτού του είδους με μαθητές που απλώς παρακολουθούν τα μαθήματά μου δεν είναι πολύ συνηθισμένες. Αν και μακάρι να γινόταν αυτό πιο συχνά. Υποψιάζομαι ότι απλά φοβούνται να έρθουν στη σχολή τις ώρες γραφείου. Κάθε εξάμηνο, μερικοί φοιτητές καταφέρνουν να ξεπεράσουν αυτό το ψυχολογικό εμπόδιο και είναι πάντα πολύ ενδιαφέρον να μιλήσουμε μαζί τους μετά το μάθημα. Είναι αλήθεια ότι αν όλοι οι μαθητές ήταν τόσο γενναίοι, απλά δεν θα είχα αρκετό χρόνο. Ίσως λοιπόν όλα να λειτουργούν όπως θα έπρεπε.
Виталий: Πώς καταφέρνεις να βρεις χρόνο για να επικοινωνήσεις με τους μαθητές; Από όσο γνωρίζω, στις ΗΠΑ οι δάσκαλοι έχουν πολλή δουλειά - αιτήσεις για υποτροφίες και άλλα παρόμοια.
Μιχαήλ: Ειλικρινά, η συνεργασία με φοιτητές είναι η πτυχή της δουλειάς μου που απολαμβάνω περισσότερο. Έχω λοιπόν αρκετά κίνητρα για αυτό. Ο περισσότερος χρόνος που περνάω στο γραφείο μου αφιερώνεται σε συναντήσεις κάθε είδους. Τώρα είναι καλοκαίρι, οπότε το πρόγραμμά μου είναι λιγότερο φορτωμένο, αλλά κατά τη διάρκεια της σχολικής χρονιάς, κάθε μέρα από τις 9 έως τις 17 τα έχω όλα μαζεμένα. Ερευνητικές εργασίες, κριτικές, επιχορηγήσεις - για όλα αυτά υπάρχουν μόνο βράδια και Σαββατοκύριακα.
Πώς να παρακολουθείτε την προετοιμασία νέων μαθημάτων και βιβλίων.
Αλεξέι: Αυτήν τη στιγμή συνεχίζετε να διδάσκετε κάποια μαθήματα που διδάσκετε εδώ και πολύ καιρό; Κάτι σαν εισαγωγή στην Επιστήμη των Υπολογιστών.
Μιχαήλ: Το πρώτο πράγμα που έρχεται στο μυαλό εδώ είναι ένα μάθημα στις γλώσσες προγραμματισμού.
Αλεξέι: Πόσο διαφορετική είναι η σημερινή έκδοση αυτού του μαθήματος από αυτή που ήταν πριν από 10, 20, 30 χρόνια; Ίσως αυτό που είναι πιο ενδιαφέρον εδώ δεν είναι οι λεπτομέρειες ενός συγκεκριμένου μαθήματος, αλλά οι γενικές τάσεις.
Μιχαήλ: Το μάθημά μου στις γλώσσες προγραμματισμού ήταν κάπως ασυνήθιστο τη στιγμή που το δημιούργησα. Άρχισα να το διαβάζω στα τέλη της δεκαετίας του 1980, αντικαθιστώντας τον συνάδελφό μου, Doug Baldwin (). Το θέμα του μαθήματος αφορούσε μόνο εφαπτομενικά την ειδικότητά μου, αλλά όταν έφυγε, ήμουν ο καλύτερος υποψήφιος για να διδάξω το μάθημα. Δεν μου άρεσε κανένα από τα σχολικά βιβλία που υπήρχαν τότε, οπότε κατέληξα να γράφω το εγχειρίδιο για αυτό το μάθημα μόνος μου. (Σημείωση του συντάκτη: μιλάμε για το βιβλίο) Πλέον χρησιμοποιείται σε περισσότερα από 200 πανεπιστήμια σε όλο τον κόσμο. Η προσέγγισή μου είναι ασυνήθιστη καθώς αναμιγνύει σκόπιμα τα προβλήματα του σχεδιασμού και της εφαρμογής της γλώσσας και δίνει μεγάλη προσοχή στην αλληλεπίδραση μεταξύ αυτών των πτυχών σε όλους τους πιθανούς τομείς. Η βασική προσέγγιση παρέμεινε αμετάβλητη, όπως και πολλές βασικές έννοιες: αφαιρέσεις, χώροι ονομάτων, αρθρωτότητα, τύποι. Αλλά το σύνολο των γλωσσών με τις οποίες αποδεικνύονται αυτές οι έννοιες έχει αλλάξει εντελώς. Όταν πρωτοδημιουργήθηκε το μάθημα, υπήρχαν πολλά παραδείγματα στο Pascal, αλλά σήμερα πολλοί από τους μαθητές μου δεν έχουν καν ακούσει για αυτήν τη γλώσσα. Αλλά ξέρουν τα Swift, Go, Rust, οπότε πρέπει να μιλήσω για τις γλώσσες που χρησιμοποιούνται σήμερα. Επίσης, οι μαθητές πλέον γνωρίζουν καλά τις γλώσσες σεναρίου, αλλά όταν άρχισα να διδάσκω αυτό το μάθημα, ήταν όλα σχετικά με τις μεταγλωττισμένες γλώσσες. Τώρα χρειαζόμαστε πολύ υλικό για την Python, τη Ruby, ακόμη και την Perl, γιατί αυτός είναι ο κώδικας που γράφεται αυτές τις μέρες, και υπάρχουν πολλά ενδιαφέροντα πράγματα που συμβαίνουν σε αυτές τις γλώσσες, συμπεριλαμβανομένου του τομέα του σχεδιασμού γλώσσας.
Виталий: Τότε η επόμενη ερώτησή μου θα σχετίζεται με την προηγούμενη. Πώς να συνεχίσετε σε αυτόν τον τομέα; Υποψιάζομαι ότι η ενημέρωση ενός μαθήματος όπως αυτό απαιτεί πολλή δουλειά - πρέπει να κατανοήσετε νέες γλώσσες, να κατανοήσετε τις κύριες ιδέες. Πώς το κάνεις αυτό;
Μιχαήλ: Δεν μπορώ να καυχηθώ ότι τα καταφέρνω πάντα 100%. Αλλά τις περισσότερες φορές κάνω ό,τι κάνουν όλοι οι άλλοι - διαβάζω το Διαδίκτυο. Αν θέλω να καταλάβω το Rust, το κάνω Google, πηγαίνω στη σελίδα του Mozilla και διαβάζω το εγχειρίδιο που έχει αναρτηθεί εκεί. Αυτό είναι μέρος των πραγμάτων που συμβαίνουν στην εμπορική ανάπτυξη. Αν μιλάμε για επιστήμη, τότε πρέπει να παρακολουθείτε τις εκθέσεις στα κύρια συνέδρια.
Σχέση μεταξύ επιχειρήσεων και ακαδημαϊκού κόσμου
Виталий: Ας μιλήσουμε για τη σύνδεση μεταξύ επιχειρήσεων και επιστημονικής έρευνας. Στη λίστα των έργων σας, βρήκα αρκετά άρθρα σχετικά με τη συνοχή της κρυφής μνήμης. Καταλαβαίνω ότι οι αλγόριθμοι συνέπειας της κρυφής μνήμης ήταν ασταθείς τη στιγμή που δημοσιεύτηκαν; Ή όχι αρκετά διαδεδομένο. Πόσο κοινές ήταν οι ιδέες σας στην πράξη;
Μιχαήλ: Δεν είμαι ακριβώς σίγουρος για ποιες εκδόσεις μιλάτε. Έχω κάνει αρκετή δουλειά με τους μαθητές μου Bill Bolosky () και ο Λεωνίδας Κοντοτανάσης () στις αρχές της δεκαετίας του 1990 σχετικά με τη διαχείριση της μνήμης των μηχανών Neumann. Εκείνη την εποχή, οι επιχειρήσεις δεν είχαν ακόμη κατανοήσει πώς να φτιάξουν σωστά ένα σύστημα πολλαπλών επεξεργαστών: αξίζει να δημιουργηθεί υποστήριξη για την πρόσβαση σε απομακρυσμένη μνήμη σε επίπεδο υλικού, αξίζει να γίνει η διανομή της μνήμης, είναι δυνατή η φόρτωση της κρυφής μνήμης από απομακρυσμένη μνήμη ή είναι απαραίτητο να μετακινήσετε σελίδες στο χειρουργείο; Ο Bill και ο Leonidas εργάστηκαν και οι δύο σε αυτόν τον τομέα και εξερεύνησαν προσεγγίσεις χωρίς απομακρυσμένη φόρτωση προσωρινής μνήμης. Αυτό δεν σχετιζόταν άμεσα με τη συνοχή της κρυφής μνήμης, αλλά εξακολουθούσε να δουλεύει για τη διαχείριση της μνήμης NUMA και, στη συνέχεια, οι σύγχρονες προσεγγίσεις για την τοποθέτηση σελίδων στα σύγχρονα λειτουργικά συστήματα αναπτύχθηκαν από αυτό. Συνολικά, ο Μπιλ και ο Λεωνίδας έκαναν σημαντική δουλειά, αν και όχι η μεγαλύτερη επιρροή σε αυτόν τον τομέα - υπήρχαν πολλοί άλλοι άνθρωποι που δούλευαν για το ίδιο πράγμα εκείνη την εποχή. Αργότερα, εργάστηκα σε ένα θέμα που σχετίζεται με τη συνοχή της κρυφής μνήμης στο πλαίσιο της συναλλακτικής μνήμης υλικού. Η ομάδα με την οποία συνεργάστηκα για αυτό το πρόβλημα κατέληξε να λάβει αρκετές πατέντες. Υπάρχουν μερικές αρκετά ενδιαφέρουσες ιδέες πίσω από αυτές, αλλά δεν νομίζω ότι θα καταλήξουν να εφαρμοστούν στην πράξη. Με τον ένα ή τον άλλο τρόπο, μου είναι δύσκολο να κρίνω την κερδοφορία τους.
Αλεξέι: Από αυτή την άποψη, μια πιο προσωπική ερώτηση: πόσο σημαντικό είναι για εσάς που οι ιδέες σας γίνονται πράξη; Ή δεν το σκέφτεσαι;
Μιχαήλ: Μου αρέσει να κάνω αυτή την ερώτηση σε συνεντεύξεις με άλλα άτομα, υποψήφιους ή υποψηφίους που θέλουν να ενταχθούν στη σχολή. Δεν νομίζω ότι υπάρχει σωστή απάντηση σε αυτή την ερώτηση. Οι άνθρωποι που κάνουν ωραία πράγματα μπορεί να έχουν πολύ διαφορετικά κίνητρα. Με ελκύουν τα προβλήματα γιατί προσωπικά τα βρίσκω ενδιαφέροντα, όχι λόγω των πρακτικών πλεονεκτημάτων τους. Αλλά από την άλλη, όταν κάποιο ενδιαφέρον πράγμα βρίσκει εφαρμογή, μου αρέσει πολύ. Οπότε δεν είναι εύκολο εδώ. Αλλά στην αρχή της δουλειάς μου, δεν με οδηγεί ακόμα η ιδέα μιας τελικής χρήσης στον κόσμο, αλλά από την αρμονία της ιδέας και την επιθυμία να την εξερευνήσω και να δω τι προκύπτει από αυτήν. Αν στο τέλος δώσει πρακτικά αποτελέσματα, υπέροχο.
Αλεξέι: Λόγω της εκπαίδευσης και της εμπειρίας σας, είστε σε καλύτερη θέση από τους περισσότερους να κρίνετε την αξία των ιδεών των άλλων ανθρώπων. Μπορείτε να τα συγκρίνετε και να προσδιορίσετε ποιο με ποιο λειτουργεί καλύτερα. Είμαι βέβαιος ότι έχετε άποψη για πράγματα που χρησιμοποιούνται επί του παρόντος στην πράξη από μεγάλους κατασκευαστές όπως η Intel. Κατά την άποψή σας, πόσο σωστή είναι η πορεία που ακολουθούν αυτές οι εταιρείες;
Μιχαήλ: Η εξάσκηση περιστρέφεται πάντα γύρω από αυτό που μπορεί να είναι εμπορικά επιτυχημένο, δηλαδή να δημιουργήσει κέρδος και καλύτερα να ρωτήσετε κάποιον άλλο για αυτό. Η δουλειά μου καταλήγει κυρίως σε δημοσιεύσεις και στον τομέα των λειτουργικών συστημάτων αξιολογούνται με βάση δείκτες απόδοσης: ταχύτητα, κατανάλωση ενέργειας, μέγεθος κώδικα. Αλλά πάντα μου φαινόταν ότι αυτά τα εμπειρικά αποτελέσματα προστίθενται στα άρθρα μόνο για να μπορούν να δημοσιευτούν και τα πραγματικά κίνητρα των ανθρώπων για δουλειά είναι αισθητικά. Οι ερευνητές αξιολογούν τις λύσεις από καλλιτεχνική προοπτική, ενδιαφέρονται για το πόσο κομψές είναι οι ιδέες και προσπαθούν να δημιουργήσουν κάτι καλύτερο από τις υπάρχουσες προσεγγίσεις. Οι ερευνητές οδηγούνται από προσωπικά, υποκειμενικά, αισθητικά κίνητρα. Αλλά δεν μπορείτε να γράψετε για αυτό στο ίδιο το άρθρο αυτά τα πράγματα δεν είναι επιχειρήματα για την επιτροπή προγράμματος. Ευτυχώς, οι κομψές λύσεις είναι συχνά επίσης γρήγορες και φθηνές. Μια ντουζίνα από τους συναδέλφους μου και εγώ συζητήσαμε αυτό το θέμα πριν από περίπου 15 χρόνια και καταλήξαμε να γράψουμε ένα άρθρο για αυτό. Νομίζω ότι μπορείτε ακόμα να το βρείτε τώρα, λέγεται ή κάτι τέτοιο, έχει πάνω από δώδεκα συγγραφείς. Αυτό είναι το μόνο άρθρο στο οποίο είμαι συγγραφέας μαζί , οπότε αν κάνετε μια αναζήτηση για το όνομά της στη λίστα με τις δημοσιεύσεις μου, θα βρείτε αυτό που χρειάζεστε. Μιλάει για την αξιολόγηση της έρευνας συστημάτων και πόσο σημαντική είναι η κομψότητα.
Αλεξέι: Άρα υπάρχει διαφορά ανάμεσα στο πρότυπο του τι θεωρείται καλό στην επιστήμη και στις επιχειρήσεις. Η επιστήμη αξιολογεί την απόδοση, την κατανάλωση ενέργειας, το TDP, την ευκολία υλοποίησης και πολλά άλλα. Έχετε την ευκαιρία να πραγματοποιήσετε αυτού του είδους την έρευνα στο πανεπιστήμιο; Έχετε ένα εργαστήριο με διαφορετικά μηχανήματα και διαφορετικές αρχιτεκτονικές στο οποίο θα μπορούσατε να κάνετε πειράματα;
Μιχαήλ: Ναι, το τμήμα μας έχει πολλά διαφορετικά ενδιαφέροντα μηχανήματα. Τις περισσότερες φορές είναι μικρά, έχουμε ένα μικρό σύμπλεγμα και πολλά συστήματα πολλαπλών επεξεργαστών με διαφορετικούς επιταχυντές. Επιπλέον, η πανεπιστημιούπολη διαθέτει ένα τεράστιο υπολογιστικό κέντρο που εξυπηρετεί επιστήμονες από πολλές δεκάδες διαφορετικούς κλάδους. Έχει περίπου χίλιους κόμβους και είκοσι χιλιάδες πυρήνες, όλα σε Linux. Εάν προκύψει ανάγκη, μπορείτε πάντα να αγοράσετε κάποιο AWS. Άρα δεν έχουμε σημαντικούς περιορισμούς με το υλικό.
Αλεξέι: Πώς ήταν πριν από τριάντα χρόνια; Υπήρχαν προβλήματα τότε;
Μιχαήλ: Τότε ήταν λίγο διαφορετικά. Στα μέσα έως τα τέλη της δεκαετίας του 1980, η επιστήμη θεωρήθηκε ότι είχε έλλειψη υπολογιστικών πόρων. Για να διορθώσει αυτή την κατάσταση, το Εθνικό Ίδρυμα Επιστημών ) δημιούργησε ένα πρόγραμμα συντονισμένης πειραματικής έρευνας (Coordinated Experimental Research, CER). Η αποστολή του προγράμματος ήταν να παρέχει υπολογιστική υποδομή για τμήματα Επιστήμης Υπολογιστών και έχει επιτύχει σημαντικές αλλαγές. Με τα χρήματα που έδωσε, εμείς στο Πανεπιστήμιο του Ρότσεστερ αγοράσαμε ένα BBN Butterfly 1984 κόμβων το 128, αυτό ήταν ένα χρόνο πριν φτάσω εκεί. Εκείνη την εποχή ήταν το μεγαλύτερο σύστημα πολλαπλών επεξεργαστών στον κόσμο με κοινή μνήμη. Είχε 128 επεξεργαστές, ο καθένας σε ξεχωριστή μητρική πλακέτα, και καταλάμβανε τέσσερα rack. Κάθε επεξεργαστής είχε ένα megabyte μνήμης, τα 128 megabyte RAM ήταν ασύλληπτη ποσότητα εκείνη την εποχή. Σε αυτό το μηχάνημα εφαρμόσαμε το κλείδωμα MCS για πρώτη φορά.
Αλεξέι: Λοιπόν, αν σας καταλαβαίνω καλά, τότε αυτή τη στιγμή το πρόβλημα με το υλικό έχει λυθεί;
Μιχαήλ: Γενικά, ναι. Υπάρχουν μερικές επιφυλάξεις: πρώτον, εάν κάνετε αρχιτεκτονική υπολογιστών σε επίπεδο τσιπ, είναι δύσκολο να το κάνετε σε ένα ακαδημαϊκό περιβάλλον, επειδή υπάρχουν πολύ καλύτερα εργαλεία για να το κάνετε στην επιχείρηση. Εάν χρειάζεστε κάτι μικρότερο από 10 νανόμετρα, θα πρέπει να το παραγγείλετε από κάποιον άλλο. Σε αυτόν τον τομέα είναι πολύ πιο εύκολο να είσαι ερευνητής στην Intel. Εάν εργάζεστε σε οπτικές επικοινωνίες σε τσιπ ή σε μνήμη στερεάς κατάστασης, θα βρείτε τεχνολογίες στις επιχειρήσεις που δεν είναι ακόμη στην επιστήμη, επομένως πρέπει να δημιουργήσετε συμμαχίες. Για παράδειγμα, ο Stephen Swanson () δημιουργήθηκε για νέες τεχνολογίες μνήμης. Αυτή η φόρμα δεν λειτουργεί πάντα, αλλά σε ορισμένες περιπτώσεις μπορεί να είναι αρκετά επιτυχημένη. Επιπλέον, στην επιστήμη η ανάπτυξη των πιο ισχυρών υπολογιστικών συστημάτων είναι πιο δύσκολη. Τα μεγαλύτερα έργα υπερυπολογιστών αυτή τη στιγμή στις ΗΠΑ, την Ιαπωνία και την Κίνα επικεντρώνονται όλα στις επιχειρήσεις.
Πρακτική υλοποίηση ιδεών. MCS, MS, CLH, JSR 166, σε συνεργασία με τον Doug Lee και άλλα.
Виталий: Έχετε ήδη μιλήσει για το πώς ξεκινήσατε να εργάζεστε στους αλγόριθμους συγχρονισμού. Έχετε δύο πολύ διάσημα άρθρα σχετικά и , τα οποία κατά μία έννοια υλοποιήθηκαν στην Java. (Σημείωση του συντάκτη: όλες οι δημοσιεύσεις μπορούν να προβληθούν ). Εκεί αυτό το μπλοκάρισμα εφαρμόστηκε με κάποιες αλλαγές και αποδείχτηκε , και η ουρά εφαρμόστηκε όπως προβλεπόταν. Όμως πέρασαν πολλά χρόνια από τη δημοσίευση των άρθρων σας και την πρακτική εφαρμογή τους.
Αλεξέι: Φαίνεται περίπου 10 χρόνια στην περίπτωση της ουράς.
Μιχαήλ: Πριν εμφανιστούν αυτές οι δυνατότητες στην τυπική βιβλιοθήκη Java;
Виталий: Ναί. Τι κάνατε για να συμβεί αυτό; Ή δεν έκαναν τίποτα;
Μιχαήλ: Μπορώ να σας πω πώς το MS Queue μπήκε στην Java 5. Λίγα χρόνια πριν βγει, δούλεψα με την ομάδα του Mark Moyers στη Sun Microsystems στο εργαστήριό τους κοντά στη Βοστώνη. Οργάνωσε ένα εργαστήριο για άτομα που γνώριζε που εργάζονταν σε ενδιαφέροντα προβλήματα στο multithreading επειδή ήθελε να βρει θέματα που θα μπορούσε να πουλήσει στην εταιρεία τους. Εκεί πρωτογνώρισα τον Doug Lea. Ο Νταγκ και εγώ και περίπου 25 άλλοι άνθρωποι από τη Sun συζητούσαμε μαζί για την παρουσίαση του Νταγκ , το οποίο αργότερα έγινε java.util.concurrent. Στην πορεία, ο Doug είπε ότι θα ήθελε να χρησιμοποιήσει την ουρά MS, αλλά για αυτό χρειαζόταν έναν μετρητή για τον αριθμό των στοιχείων στην ουρά για τη διεπαφή. Δηλαδή αυτό θα έπρεπε να είχε γίνει με ξεχωριστή μέθοδο, ατομική, ακριβή και γρήγορη. Πρότεινα απλώς να προσθέσουμε σειριακούς αριθμούς στους κόμβους, να πάρουμε τον αριθμό του πρώτου και του τελευταίου και να αφαιρέσουμε τον έναν από τον άλλο. Ο Νταγκ έξυσε το κεφάλι του, είπε «γιατί όχι» και κατέληξε να κάνει ακριβώς αυτό. Συζητήσαμε για την εφαρμογή αυτής της προσέγγισης στη βιβλιοθήκη, αλλά ο Νταγκ έκανε το μεγαλύτερο μέρος της δουλειάς μόνος του. Ως αποτέλεσμα, κατάφερε να δημιουργήσει εξαιρετική υποστήριξη πολλαπλών νημάτων στην Java.
Αλεξέι: Λοιπόν, αν καταλαβαίνω καλά, η μέθοδος .size() θα έπρεπε να ήταν μέρος της τυπικής διεπαφής ουράς και θα έπρεπε να είχε αλγοριθμική πολυπλοκότητα O(1);
Μιχαήλ: Ναι, και εκτός από αυτό, απαιτείται ξεχωριστός μετρητής.
Αλεξέι: Γιατί αν καλέσετε τη μέθοδο .size() στην Java, το αποτέλεσμα αναμένεται να είναι άμεσα διαθέσιμο και όχι με βάση το πραγματικό μέγεθος της συλλογής. Βλέπω, ευχαριστώ.
Μιχαήλ: Λίγα χρόνια αργότερα εργαζόμουν σε διπλές δομές δεδομένων με τον μαθητή μου Bill Scherer - στην πραγματικότητα, για αυτό θα μιλήσω . Ο Doug ήρθε σε εμάς και είπε ότι θα μπορούσε να τα χρησιμοποιήσει στο Java Executor Framework. Μαζί με τον Bill δημιούργησαν δύο υλοποιήσεις, τις λεγόμενες δίκαιες και άδικες ουρές. Τους συμβούλεψα για αυτό το έργο, αν και δεν συμμετείχα στη συγγραφή του πραγματικού κώδικα. Ως αποτέλεσμα, η ταχύτητα των εκτελεστών έχει αυξηθεί σημαντικά.
Βλαδίμηρος: Αντιμετωπίσατε λανθασμένες υλοποιήσεις των αλγορίθμων σας ή αιτήματα για προσθήκη νέων δυνατοτήτων; Γενικά, η πρακτική πρέπει να συμπίπτει με τη θεωρία, αλλά αρκετά συχνά διαφέρουν. Ας υποθέσουμε ότι γράψατε έναν αλγόριθμο και σε χαρτί λειτουργεί, αλλά τα άτομα που εμπλέκονται στην υλοποίηση άρχισαν να σας ζητούν περισσότερες δυνατότητες ή κάποιου είδους τροποποιήσεις του αλγόριθμου. Είχατε ποτέ τέτοιες καταστάσεις;
Μιχαήλ: Το μόνο παράδειγμα στο οποίο κάποιος ήρθε σε εμένα και με ρώτησε «πώς να το εφαρμόσω» ήταν η ερώτηση του Νταγκ, για την οποία μίλησα ήδη. Αλλά υπήρξαν μερικές περιπτώσεις όπου έγιναν ενδιαφέρουσες αλλαγές για να ταιριάζουν στις πρακτικές ανάγκες. Για παράδειγμα, η ομάδα K42 της IBM μετέτρεψε το κλείδωμα MCS και το έκανε μια τυπική διεπαφή, έτσι δεν χρειαζόταν να περάσει ο κόμβος ουράς μπρος-πίσω στις ρουτίνες απόκτησης και απελευθέρωσης. Χάρη σε αυτή την τυπική διεπαφή, μια ιδέα που ήταν όμορφη θεωρητικά άρχισε να λειτουργεί στην πράξη. Είναι περίεργο που δεν δημοσίευσαν ποτέ ένα άρθρο σχετικά με αυτό, και παρόλο που έλαβαν δίπλωμα ευρεσιτεχνίας, αργότερα το εγκατέλειψαν. Η ιδέα ήταν υπέροχη, και προσπαθώ να μιλήσω γι' αυτήν όποτε είναι δυνατόν.
Υπήρξαν και άλλες περιπτώσεις όπου οι άνθρωποι έκαναν βελτιώσεις στους αλγόριθμους που έχω δημοσιεύσει. Για παράδειγμα, η ουρά MS έχει έναν μηχανισμό εγκατάστασης δύο βημάτων, που σήμαινε ότι υπήρχαν δύο CAS στην κρίσιμη διαδρομή της ουράς. Σε παλαιότερα αυτοκίνητα, τα CAS ήταν αρκετά ακριβά. Η Intel και άλλοι κατασκευαστές τα έχουν βελτιστοποιήσει αρκετά καλά πρόσφατα, αλλά μια φορά κι έναν καιρό αυτές ήταν οδηγίες 30 κύκλων, επομένως το να υπάρχουν περισσότεροι από ένας στην κρίσιμη διαδρομή ήταν ανεπιθύμητο. Ως αποτέλεσμα, αναπτύχθηκε μια διαφορετική ουρά που ήταν παρόμοια με την ουρά MS, αλλά η οποία είχε μόνο μία ατομική λειτουργία στην κρίσιμη διαδρομή. Αυτό επιτεύχθηκε λόγω του γεγονότος ότι κατά τη διάρκεια μιας ορισμένης χρονικής περιόδου η λειτουργία μπορούσε να πάρει χρόνο O(n) αντί για O(1). Ήταν απίθανο, αλλά πιθανό. Αυτό συνέβη λόγω του γεγονότος ότι σε ορισμένες στιγμές ο αλγόριθμος διέσχιζε την ουρά από την αρχή μέχρι την τρέχουσα θέση σε αυτήν την ουρά. Σε γενικές γραμμές, ο αλγόριθμος αποδείχθηκε πολύ επιτυχημένος. Από όσο γνωρίζω, δεν χρησιμοποιείται πολύ ευρέως, εν μέρει επειδή οι ατομικές λειτουργίες απαιτούν σημαντικά λιγότερους πόρους από πριν. Αλλά η ιδέα ήταν υπέροχη. Επίσης μου αρέσει πολύ η δουλειά του Dave Dice από την Oracle. Ό,τι κάνει είναι πολύ πρακτικό και χρησιμοποιεί πολύ έξυπνα το σίδερο. Είχε ένα χέρι σε πολλούς από τους αλγόριθμους συγχρονισμού με επίγνωση του NUMA και τις δομές δεδομένων πολλαπλών νημάτων.
Βλαδίμηρος: Όταν γράφετε αλγόριθμους ή διδάσκετε μαθητές, το αποτέλεσμα της εργασίας σας δεν είναι άμεσα ορατό. Η κοινότητα χρειάζεται λίγο χρόνο για να εξοικειωθεί, ας πούμε, με ένα νέο άρθρο. Ο νέος αλγόριθμος δεν βρίσκει αμέσως εφαρμογή.
Μιχαήλ: Δεν είναι άμεσα σαφές εάν το άρθρο θα είναι σημαντικό ή όχι. Νομίζω ότι θα ήταν ενδιαφέρον να κάνουμε μια μελέτη εργασιών που έχουν βραβευτεί σε συνέδρια. Δηλαδή, κοιτάξτε τα άρθρα που κάποια στιγμή τα άτομα στις επιτροπές του προγράμματος θεωρούσαν τα καλύτερα. Πρέπει να προσπαθήσετε να υπολογίσετε με βάση τον αριθμό των συνδέσμων και τον αντίκτυπο στην επιχείρηση πόσο επιρροή αποδείχθηκαν πραγματικά αυτά τα άρθρα σε 10, 20, 25 χρόνια. Αμφιβάλλω ότι θα υπήρχε ισχυρή συσχέτιση μεταξύ των δύο. Δεν θα είναι μηδέν, αλλά πιθανότατα θα είναι πολύ πιο αδύναμο από όσο θα θέλαμε. Πολλές ιδέες παραμένουν αζήτητες για μεγάλο χρονικό διάστημα προτού διαδοθούν ευρέως. Για παράδειγμα, ας πάρουμε τη μνήμη συναλλαγών. Πέρασαν περισσότερα από 10 χρόνια από τη στιγμή που δημοσιεύτηκε το αρχικό άρθρο μέχρι τη στιγμή που οι άνθρωποι άρχισαν να κατασκευάζουν μηχανές με αυτό. Και πριν από την εμφάνιση αυτής της μνήμης σε εμπορικά προϊόντα - και όλα τα 20. Για πολύ μεγάλο χρονικό διάστημα κανείς δεν έδωσε προσοχή στο άρθρο και στη συνέχεια ο αριθμός των συνδέσμων σε αυτό αυξήθηκε απότομα. Θα ήταν δύσκολο να το προβλέψουμε εκ των προτέρων. Από την άλλη, μερικές φορές οι ιδέες βρίσκουν εφαρμογή αμέσως. Πριν από μερικά χρόνια, έγραψα μια εργασία με τον Joe Israelevitz για το DISC που πρότεινε έναν νέο επίσημο ορισμό της εγκυρότητας για επίμονες δομές δεδομένων που θα μπορούσαν να χρησιμοποιηθούν μετά τη συντριβή του υπολογιστή που τις εκτελούσε. Μου άρεσε το άρθρο από την αρχή, αλλά αποδείχθηκε πολύ πιο δημοφιλές από ό,τι περίμενα. Χρησιμοποιήθηκε από πολλές διαφορετικές ομάδες και τελικά έγινε ο τυπικός ορισμός των δομών εμμονής. Το οποίο, φυσικά, είναι ωραίο.
Βλαδίμηρος: Υπάρχουν τεχνικές που χρησιμοποιείτε για αξιολόγηση; Προσπαθείτε καν να αξιολογήσετε τα άρθρα σας και τους μαθητές σας; Όσον αφορά το αν το άτομο που διδάξατε πηγαίνει στη σωστή κατεύθυνση.
Μιχαήλ: Όπως όλοι, έτσι και εγώ προσέχω περισσότερο αυτό που κάνω αυτή τη στιγμή. Και πάλι, όπως όλοι οι άλλοι, περιστασιακά τσεκάρω τον Μελετητή Google για να δω αν αναφέρονται οι προηγούμενες εργασίες μου, αλλά αυτό είναι περισσότερο από περιέργεια. Κυρίως είμαι απορροφημένος σε αυτό που κάνουν οι μαθητές μου τώρα. Όταν πρόκειται για την αξιολόγηση της τρέχουσας δουλειάς, μέρος της είναι αισθητικές σκέψεις, τι είναι κομψό και τι όχι. Και σε καθημερινό επίπεδο, οι ανοιχτές ερωτήσεις παίζουν μεγάλο ρόλο. Για παράδειγμα, ένας μαθητής έρχεται σε μένα με ένα γράφημα ορισμένων αποτελεσμάτων και προσπαθούμε να καταλάβουμε από πού προήλθε κάποια περίεργη συμπεριφορά του γραφήματος. Γενικά, στη δουλειά μας προσπαθούμε συνεχώς να κατανοήσουμε πράγματα που δεν καταλαβαίνουμε ακόμη.
Συναλλακτική μνήμη
Виталий: Ίσως μπορούμε να μιλήσουμε λίγο για τη συναλλακτική μνήμη;
Μιχαήλ: Νομίζω ότι αξίζει να το πω έστω λίγο γιατί κατέβαλα μεγάλη προσπάθεια. Αυτό είναι ένα θέμα για το οποίο έχω περισσότερες δημοσιεύσεις από οποιοδήποτε άλλο. Αλλά την ίδια στιγμή, παραδόξως, ήμουν πάντα πολύ δύσπιστος σχετικά με τη συναλλακτική μνήμη. Κατά τη γνώμη μου, (M. Herlihy, J. E. B. Moss) εκδόθηκε πριν από την εποχή του. Στις αρχές της δεκαετίας του 1990, πρότειναν ότι η μνήμη συναλλαγών θα μπορούσε να βοηθήσει τους ταλαντούχους προγραμματιστές να εργαστούν σε δομές δεδομένων πολλαπλών νημάτων, έτσι ώστε αυτές οι δομές να μπορούν στη συνέχεια να χρησιμοποιηθούν ως βιβλιοθήκες από απλούς προγραμματιστές. Δηλαδή, θα βοηθούσε τον Doug Lee να κάνει το JSR 166 του. Αλλά η μνήμη συναλλαγών δεν είχε σκοπό να κάνει τον προγραμματισμό πολλαπλών νημάτων εύκολο. Αλλά έτσι ακριβώς άρχισε να γίνεται αντιληπτό στις αρχές της δεκαετίας του 2000, όταν και έγινε ευρέως διαδεδομένο. Διαφημίστηκε ως τρόπος επίλυσης του προβλήματος του παράλληλου προγραμματισμού. Αυτή η προσέγγιση μου φαινόταν πάντα απελπιστική. Η μνήμη συναλλαγών θα μπορούσε μόνο να διευκολύνει τη σύνταξη παράλληλων δομών δεδομένων. Αυτό, μου φαίνεται, είναι αυτό που πέτυχε.
Σχετικά με τη δυσκολία σύνταξης κώδικα πολλαπλών νημάτων
Αλεξέι: Πολύ ενδιαφέρον. Φαίνεται ότι υπάρχει ένα συγκεκριμένο εμπόδιο μεταξύ των κανονικών προγραμματιστών και εκείνων που μπορούν να γράψουν κώδικα πολλαπλών νημάτων. Πέρυσι, μίλησα αρκετές φορές με ανθρώπους που εφάρμοζαν κάποιο αλγοριθμικό πλαίσιο. Για παράδειγμα, με τον Martin Thomson, καθώς και με προγραμματιστές που εργάζονται σε βιβλιοθήκες πολλαπλών νημάτων. (Σημείωση του συντάκτη: Ο Martin Thompson είναι ένας πολύ διάσημος προγραμματιστής, έγραψε и . Και έχει επίσης στο συνέδριο Joker 2015, εγγραφή βίντεο . Είναι το ίδιο αυτό το συνέδριο επίσης διαθέσιμο). Η κύρια πρόκληση, λένε, είναι να γίνουν οι αλγόριθμοι γρήγοροι και εύχρηστοι. Δηλαδή, προσπαθούν να ξεπεράσουν αυτό το εμπόδιο και να προσελκύσουν όσο το δυνατόν περισσότερο κόσμο σε αυτή την περιοχή. Τι πιστεύετε για αυτό;
Μιχαήλ: Αυτό είναι το κύριο πρόβλημα του multithreading: πώς να επιτύχετε υψηλή απόδοση χωρίς να αυξήσετε την πολυπλοκότητα του συστήματος.
Αλεξέι: Γιατί όταν προσπαθούν να αποφύγουν την πολυπλοκότητα, ο αλγόριθμος γίνεται λιγότερο καθολικός.
Μιχαήλ: Το κλειδί εδώ είναι οι σωστά σχεδιασμένες αφαιρέσεις. Μου φαίνεται ότι αυτό είναι γενικά το κύριο πράγμα για τα συστήματα υπολογιστών ως πεδίο. Ο Μπάτλερ Λάμψον αρέσκεται να χρησιμοποιεί αυτόν τον όρο και μας αποκαλεί «έμπορους αφηρήσεων». Απλές τεχνολογίες δεν υπάρχουν σήμερα. Οι επεξεργαστές που χρησιμοποιούμε έχουν 10 δισεκατομμύρια τρανζίστορ—η απλότητα δεν συζητείται. Ταυτόχρονα, ο ISA είναι πολύ πιο απλός από τον επεξεργαστή, αφού δουλέψαμε πολύ καιρό για να του παρέχουμε υψηλή απόδοση και σχετικά απλή διεπαφή. Αλλά και μαζί της δεν είναι όλα ομαλά. Το ίδιο πρόβλημα είναι και με τους επιταχυντές που εμφανίζονται τώρα στην αγορά. Προκύπτουν ερωτήματα - πώς να φτιάξετε τη σωστή διεπαφή για τη GPU, έναν μηχανισμό κρυπτογράφησης, συμπίεση, μηχανισμό διακωδικοποίησης, μηχανισμό γραμμικής άλγεβρας ή ακόμα και πιο ευέλικτο FPGA. Πώς να δημιουργήσετε μια διεπαφή που κάνει το εργαλείο εύκολο στη χρήση και κρύβει την πολυπλοκότητα; Δεν θα το ξεφορτωθεί, αλλά μάλλον θα το κρύψει από έναν απλό προγραμματιστή.
Αλεξέι: Όπως καταλαβαίνω, έχουμε ακόμα ένα εμπόδιο στην κατανόηση των αφαιρέσεων. Ας πάρουμε το μοντέλο της μνήμης στο στάδιο της ανάπτυξης της επιστήμης και της τεχνολογίας, αυτό είναι ένα από τα κύρια στοιχεία. Χάρη σε αυτό, όλοι οι προγραμματιστές χωρίζονται σε δύο ομάδες: το μεγαλύτερο μέρος είναι εκείνοι που δεν το καταλαβαίνουν και το μικρότερο είναι εκείνοι που καταλαβαίνουν ή νομίζουν ότι καταλαβαίνουν.
Μιχαήλ: Αυτή είναι μια καλή ερώτηση - καταλαβαίνει κανείς πραγματικά το μοντέλο μνήμης;
Виталий: Ειδικά σε C++.
Μιχαήλ: Μίλα με τον Hans Boehm κάποια στιγμή. Είναι ένας από τους πιο έξυπνους ανθρώπους που γνωρίζω, κορυφαίος ειδικός στα μοντέλα μνήμης. Θα σας πει αμέσως ότι υπάρχουν πολλά που δεν καταλαβαίνει. Αλλά αν επιστρέψουμε στο θέμα των αφαιρέσεων, τότε, κατά τη γνώμη μου, εκφράστηκε η πιο σημαντική ιδέα στον τομέα των μοντέλων μνήμης τα τελευταία 30 χρόνια. . (Σημείωση του συντάκτη: είναι διαθέσιμη μια πλήρης λίστα δημοσιεύσεων ).
Αλεξέι: Η ερώτησή μου είναι: αυτό το εμπόδιο προέρχεται από την ίδια τη φύση της έννοιας;
Μιχαήλ: Οχι. Η Sarita κατέληξε στο συμπέρασμα ότι με τη σωστή προσέγγιση, μπορείτε να κρύψετε με επιτυχία όλη την πολυπλοκότητα, να αποκτήσετε υψηλή απόδοση και να δώσετε στον προγραμματιστή ένα απλό API. Και αν ακολουθήσετε αυτό το API, μπορείτε να επιτύχετε συνεπή συνέπεια. Νομίζω ότι αυτό είναι το σωστό μοντέλο. Γράψτε κώδικα χωρίς φυλές δεδομένων και αποκτήστε διαδοχική συνέπεια. Φυσικά, για να μειωθεί η πιθανότητα αγώνα χρειάζονται ειδικά εργαλεία, αλλά αυτό είναι άλλο θέμα.
Βλαδίμηρος: Υπήρξαν στιγμές στην καριέρα σας που ένα πρόβλημα που φαινόταν λυμένο μετατράπηκε ξαφνικά σε καταστροφή ή αποδείχτηκε ότι αυτό το πρόβλημα ήταν άλυτο; Για παράδειγμα, θεωρητικά μπορείτε να συνυπολογίσετε οποιονδήποτε αριθμό ή να προσδιορίσετε εάν οποιοσδήποτε αριθμός είναι πρώτος. Αλλά στην πράξη αυτό μπορεί να είναι δύσκολο να γίνει με το τρέχον υλικό είναι δύσκολο να συνυπολογιστούν οι αριθμοί. Σας έχει συμβεί κάτι παρόμοιο;
Μιχαήλ: Δεν θυμάμαι αμέσως κάτι τέτοιο. Υπήρξαν στιγμές που μου φάνηκε ότι δεν έμεινε τίποτα να κάνω σε μια συγκεκριμένη περιοχή, αλλά τότε κάτι νέο και ενδιαφέρον συνέβη εκεί. Για παράδειγμα, νόμιζα ότι η περιοχή της απεριόριστης ουράς είχε ήδη ωριμάσει. Μετά από αρκετές βελτιώσεις στην ουρά MNS, τίποτα δεν συνέβη πλέον. Και μετά ο Morrison (Adam Morrison) και ο Afek (Yehuda Afek) εφηύραν . Έγινε σαφές ότι ήταν δυνατή μια απεριόριστη ουρά πολλαπλών νημάτων, όπου τις περισσότερες φορές υπήρχε μόνο μια εντολή ανάκτησης και αύξησης στην κρίσιμη διαδρομή. Και αυτό κατέστησε δυνατή την επίτευξη μιας τάξης μεγέθους καλύτερη απόδοση. Δεν είναι ότι δεν ξέρουμε ότι το fetch-and-increment είναι πολύ χρήσιμο πράγμα. Ο Eric Freudenthal έγραψε για αυτό στη δουλειά του στον Υπερυπολογιστή με τον Allan Gottlieb στα τέλη της δεκαετίας του 1980, αλλά επρόκειτο για περιορισμένες ουρές. Ο Morrison και ο Afek μπόρεσαν να χρησιμοποιήσουν το fetch-and-increment σε μια απεριόριστη ουρά.
Νέες αρχιτεκτονικές. Είναι κοντά η νίκη της συναλλακτικής μνήμης;
Βλαδίμηρος: Ψάχνετε για νέες αρχιτεκτονικές λύσεις που θα μπορούσαν να είναι χρήσιμες για αλγόριθμους;
Μιχαήλ: Φυσικά, υπάρχουν πολλά πράγματα που θα ήθελα να δω να υλοποιούνται.
Βλαδίμηρος: Τι είδους, για παράδειγμα;
Μιχαήλ: Πρώτα απ 'όλα, μερικές απλές επεκτάσεις στη μνήμη συναλλαγών σε επίπεδο υλικού σε επεξεργαστές Intel και IBM. Συγκεκριμένα, θα ήθελα το μη συναλλακτικό φορτίο και το κατάστημα που μόλις προέκυψε να είναι άμεσα διαθέσιμα στις συναλλαγές. Οδηγούν αμέσως σε βρόχους στην ακολουθία που συμβαίνει πριν, οπότε μπορεί να είναι δύσκολα. Αλλά αν διατηρείτε επίπεδα αφαίρεσης, υπάρχουν πολλά πολύ ενδιαφέροντα πράγματα που μπορείτε να κάνετε εκτός της συναλλαγής ενώ αυτή συμβαίνει. Δεν ξέρω πόσο δύσκολο θα ήταν να εφαρμοστεί αυτό, αλλά θα ήταν πολύ χρήσιμο.
Ένα άλλο χρήσιμο πράγμα είναι η φόρτωση της προσωρινής μνήμης από την απομακρυσμένη μνήμη. Νομίζω ότι αργά ή γρήγορα αυτό θα γίνει. Αυτή η τεχνολογία θα επιτρέψει τη δημιουργία συστημάτων με διαχωρισμένη μνήμη. Θα ήταν δυνατό να διατηρηθούν, ας πούμε, 100 terabytes μη πτητικής μνήμης σε ένα rack και το ίδιο το λειτουργικό σύστημα θα αποφάσιζε δυναμικά ποια τμήματα αυτής της μνήμης πρέπει να αντιστοιχούν στον φυσικό χώρο διευθύνσεων των επεξεργαστών. Αυτό θα ήταν εξαιρετικά χρήσιμο για το cloud computing, καθώς θα επέτρεπε την παροχή μεγάλων ποσοτήτων μνήμης στις εργασίες που τη χρειάζονται. Νομίζω ότι κάποιος θα το κάνει.
Виталий: Για να ολοκληρώσω τη συζήτηση για τη μνήμη συναλλαγών, έχω μια ακόμη ερώτηση σχετικά με αυτό το θέμα. Η μνήμη συναλλαγών θα αντικαταστήσει τελικά τις τυπικές δομές δεδομένων πολλαπλών νημάτων;
Μιχαήλ: Οχι. Οι συναλλαγές είναι ένας κερδοσκοπικός μηχανισμός. Σε επίπεδο προγραμματισμού πρόκειται για ατομικές κλειδαριές, αλλά στο εσωτερικό είναι εικασίες. Μια τέτοια πρόβλεψη λειτουργεί εάν οι περισσότερες εικασίες είναι σωστές. Επομένως, η μνήμη συναλλαγών λειτουργεί καλά όταν τα νήματα δεν αλληλεπιδρούν σχεδόν καθόλου μεταξύ τους και πρέπει απλώς να βεβαιωθείτε ότι δεν υπάρχουν αλληλεπιδράσεις. Αλλά εάν ένα μήνυμα ξεκινά μεταξύ των νημάτων, οι συναλλαγές δεν έχουν μικρή χρησιμότητα. Επιτρέψτε μου να εξηγήσω, μιλάμε για την περίπτωση που οι συναλλαγές τυλίγονται γύρω από ολόκληρη την ατομική λειτουργία. Μπορούν ακόμα να χρησιμοποιηθούν με επιτυχία ως στοιχεία για δομές δεδομένων πολλαπλών νημάτων. Για παράδειγμα, εάν χρειάζεστε ένα CAS τριών λέξεων και πρέπει να κάνετε πολλαπλών νημάτων τρία μικρά πράγματα στη μέση ενός αλγορίθμου πραγματικά πολλαπλών νημάτων που λειτουργεί με είκοσι νήματα ταυτόχρονα. Γενικά, οι συναλλαγές μπορεί να είναι χρήσιμες, αλλά δεν θα εξαλείψουν την ανάγκη να σχεδιαστούν σωστά οι δομές δεδομένων πολλαπλών νημάτων.
Μη πτητική μνήμη, Optane DIMM, εξαιρετικά γρήγορες συσκευές.
Виталий: Το τελευταίο πράγμα για το οποίο θα ήθελα να μιλήσω είναι το θέμα της τρέχουσας έρευνάς σας: η μη πτητική μνήμη. Τι μπορούμε να περιμένουμε σε αυτόν τον τομέα στο εγγύς μέλλον; Ίσως γνωρίζετε κάποιες αποτελεσματικές εφαρμογές που υπάρχουν ήδη;
Μιχαήλ: Δεν είμαι ειδικός στο hardware, ξέρω μόνο τι διαβάζω στις ειδήσεις και τι μου λένε οι συνάδελφοί μου. Όλοι έχουν ήδη ακούσει ότι η Intel πουλάει , τα οποία έχουν περίπου 3 φορές την καθυστέρηση ανάγνωσης και 10 φορές την καθυστέρηση εγγραφής από τη δυναμική RAM. Σύντομα θα είναι διαθέσιμα σε εκδόσεις πολύ μεγάλου όγκου. Είναι αστείο να πιστεύουμε ότι θα μπορούσατε να έχετε έναν φορητό υπολογιστή με πολλά terabyte RAM με δυνατότητα διεύθυνσης byte. Είναι πιθανό σε 10 χρόνια να αποφασίσουμε να χρησιμοποιήσουμε αυτή τη νέα τεχνολογία, αφού χρησιμοποιούμε DRAM - απλώς αυξήστε την ένταση του ήχου. Αλλά χάρη στην ενεργειακή ανεξαρτησία, μας ανοίγονται εντελώς νέες ευκαιρίες. Μπορούμε να αλλάξουμε ουσιαστικά τη στοίβα αποθήκευσης έτσι ώστε να μην υπάρχει διαχωρισμός μεταξύ της μνήμης εργασίας με δυνατότητα διεύθυνσης byte και της μόνιμης μνήμης με δομή μπλοκ. Έτσι, δεν θα χρειαστεί να σειριοποιήσουμε όλα όσα χρειάζεται να μεταφερθούν από το ένα πρόγραμμα στο άλλο σε αρχεία με δομή μπλοκ. Από αυτό μπορούμε να αντλήσουμε πολλές σημαντικές αρχές που επηρεάζουν τα λειτουργικά συστήματα, τα περιβάλλοντα χρόνου εκτέλεσης και τους κατανεμημένους χώρους αποθήκευσης δεδομένων. Αυτή η περιοχή είναι πολύ ενδιαφέρουσα για εργασία. Προσωπικά, είναι δύσκολο για μένα να προβλέψω τι θα οδηγήσει όλο αυτό, αλλά τα προβλήματα εδώ είναι εξαιρετικά διασκεδαστικά. Μπορεί να υπάρξουν επαναστατικές αλλαγές εδώ, και αυτές απορρέουν πολύ φυσικά από την εργασία για το multithreading, αφού η αποκατάσταση αστοχίας είναι μια διαδικασία "πολλαπλών νημάτων" δίπλα στην κανονική λειτουργία του συστήματος.
Το δεύτερο κύριο θέμα στο οποίο εργάζομαι αυτή τη στιγμή είναι η διαχείριση εξαιρετικά γρήγορων συσκευών και η ασφαλής πρόσβαση σε συσκευές από τον χώρο χρηστών με συστημικό έλεγχο πολιτικής. Τα τελευταία χρόνια, υπάρχει μια τάση μετακίνησης της πρόσβασης στη συσκευή στον χώρο χρηστών. Αυτό γίνεται επειδή η στοίβα πυρήνα TCP-IP δεν μπορεί να λειτουργήσει πάνω από μια διεπαφή δικτύου που χρειάζεται ένα νέο πακέτο κάθε 5 μικροδευτερόλεπτα. Ως εκ τούτου, οι κατασκευαστές παρέχουν άμεση πρόσβαση στις συσκευές. Αυτό όμως σημαίνει ότι το λειτουργικό σύστημα χάνει τον έλεγχο της διαδικασίας και δεν μπορεί να παρέχει σωστή πρόσβαση στη συσκευή για ανταγωνιστικές εφαρμογές. Η ερευνητική μας ομάδα πιστεύει ότι αυτή η έλλειψη μπορεί να αποφευχθεί. Θα έχουμε ένα άρθρο σχετικά με αυτό στο USENIX ATC αυτόν τον μήνα. Σχετίζεται με την εργασία για την επιμονή, καθώς η μακρόχρονη μόνιμη μνήμη με δυνατότητα διευθυνσιοδότησης byte είναι, στην ουσία, μια συσκευή με εξαιρετικά γρήγορη I/O που πρέπει να έχει πρόσβαση στο χώρο χρηστών. Αυτή η έρευνα καθιστά δυνατές νέες προσεγγίσεις σε μικροπυρήνες, εξωπυρήνες και άλλες παραδοσιακές προσπάθειες για ασφαλή μεταφορά της λειτουργικότητας από τον πυρήνα του λειτουργικού συστήματος στον χώρο χρήστη.
Βλαδίμηρος: Η μνήμη με δυνατότητα διεύθυνσης byte είναι εξαιρετική, αλλά υπάρχει ένας φυσικός περιορισμός - η ταχύτητα του φωτός. Αυτό σημαίνει ότι αναπόφευκτα θα υπάρξει καθυστέρηση κατά την αλληλεπίδραση με τη συσκευή.
Μιχαήλ: Απόλυτο δίκιο.
Βλαδίμηρος: Θα υπάρχει αρκετή χωρητικότητα για να αντεπεξέλθουμε στα νέα φορτία;
Μιχαήλ: Αυτή είναι μια εξαιρετική ερώτηση, αλλά θα είναι δύσκολο να απαντήσω. Η ιδέα της επεξεργασίας στη μνήμη υπάρχει εδώ και αρκετό καιρό, είναι πολύ ενδιαφέρουσα, αλλά και πολύ περίπλοκη. Δεν έχω δουλέψει σε αυτόν τον τομέα, αλλά θα ήταν υπέροχο να γίνονταν κάποιες ανακαλύψεις εκεί. Φοβάμαι ότι δεν έχω τίποτα άλλο να προσθέσω.
Βλαδίμηρος: Υπάρχει ακόμα ένα πρόβλημα. Νέες, σημαντικά μεγαλύτερες ποσότητες RAM θα είναι αδύνατο να χωρέσουν στην CPU. Επομένως, λόγω φυσικών περιορισμών, αυτή η μνήμη RAM πρέπει να απομονωθεί.
Μιχαήλ: Όλα εξαρτώνται από τον αριθμό των ελαττωμάτων στην παραγωγή ολοκληρωμένων κυκλωμάτων. Εάν ήταν δυνατό να δημιουργηθούν πλακίδια ημιαγωγών εντελώς χωρίς ελαττώματα, τότε θα ήταν δυνατό να κατασκευαστεί ένα ολόκληρο μικροκύκλωμα από αυτό. Αλλά τώρα δεν ξέρουμε πώς να κάνουμε μικροκυκλώματα μεγαλύτερα από τα γραμματόσημα.
Βλαδίμηρος: Αλλά ακόμα μιλάμε για τεράστια μεγέθη, για εκατοστά. Αυτό αναπόφευκτα έχει αντίκτυπο στην καθυστέρηση.
Μιχαήλ: Ναί. Δεν μπορείτε να κάνετε τίποτα για την ταχύτητα του φωτός.
Βλαδίμηρος: Δυστυχώς.
Η επόμενη μεγάλη τάση. Διπλές δομές δεδομένων. Υδρα.
Виталий: Από όσο καταλαβαίνω πιάνεις πολύ γρήγορα τις νέες τάσεις. Ήσασταν από τους πρώτους που δούλεψαν στη μνήμη συναλλαγών και από τους πρώτους που δούλεψαν σε μη πτητική μνήμη. Ποια πιστεύετε ότι θα είναι η επόμενη μεγάλη τάση; Ή μήπως είναι μυστικό;
Μιχαήλ: Για να είμαι ειλικρινής, δεν ξέρω. Ελπίζω ότι θα μπορέσω να παρατηρήσω πότε θα εμφανιστεί κάτι νέο. Δεν είχα την τύχη να εφεύρω κανένα νέο τομέα μόνος μου, αλλά είχα λίγη τύχη και μπόρεσα να αρχίσω να εργάζομαι αρκετά νωρίς σε νέους τομείς που δημιουργήθηκαν από άλλους. Ελπίζω ότι θα μπορέσω να το κάνω αυτό στο μέλλον.
Αλεξέι: Η τελευταία ερώτηση σε αυτή τη συνέντευξη θα αφορά τις επιδόσεις σας στην Ύδρα και τις δραστηριότητές σας στο σχολείο. Αν καταλαβαίνω καλά, η αναφορά στο σχολείο θα αφορά αλγόριθμους χωρίς αποκλεισμούς και στο συνέδριο για διπλές δομές δεδομένων. Θα μπορούσατε να πείτε λίγα λόγια για αυτές τις αναφορές;
Μιχαήλ: Εν μέρει, έχουμε ήδη θίξει αυτά τα θέματα μαζί σας σε αυτή τη συνέντευξη. Αφορά τη δουλειά που έκανα με τον μαθητή μου Bill Scherer. Έγραψε μια διατριβή σε αυτό, και ο Doug Lee συνέβαλε επίσης σε αυτό, και τελικά έγινε μέρος των σύγχρονων ουρών πολλαπλών νημάτων στη βιβλιοθήκη Java. Ας υποθέσουμε ότι η δομή των δεδομένων διαβάζεται και γράφεται χωρίς αποκλεισμό, δηλαδή κάθε λειτουργία έχει περιορισμένο αριθμό εντολών στην κρίσιμη διαδρομή. Εάν προσπαθήσετε να αφαιρέσετε δεδομένα από ένα κενό κοντέινερ ή προσπαθήσετε να αφαιρέσετε ορισμένα δεδομένα που δεν υπάρχουν σε αυτό το κοντέινερ, ενημερώνεστε αμέσως ότι αυτό δεν μπορεί να γίνει. Αλλά αυτή η συμπεριφορά μπορεί να μην είναι αποδεκτή εάν το νήμα χρειάζεται πραγματικά αυτά τα δεδομένα. Τότε το πρώτο πράγμα που έρχεται στο μυαλό είναι να δημιουργήσετε έναν βρόχο που θα ρωτά συνεχώς αν έχουν εμφανιστεί τα απαραίτητα δεδομένα. Αλλά τότε υπάρχει παρέμβαση για όλους τους άλλους. Επιπλέον, με αυτήν την προσέγγιση, μπορείτε να περιμένετε 10 λεπτά και στη συνέχεια θα έρθει κάποιο άλλο νήμα και θα λάβει κατά λάθος πρώτα τα απαραίτητα δεδομένα. Οι διπλές δομές δεδομένων εξακολουθούν να μην έχουν κλειδώματα, αλλά επιτρέπουν στα νήματα να περιμένουν σωστά. Ο όρος "διπλό" σημαίνει ότι η δομή περιέχει είτε δεδομένα είτε αιτήματα για δεδομένα, ας τα ονομάσουμε αντι-δεδομένα. Επομένως, εάν προσπαθήσετε να ανακτήσετε κάτι από ένα άδειο κοντέινερ, θα τοποθετηθεί ένα αίτημα στο κοντέινερ. Τώρα το νήμα μπορεί να περιμένει για ένα αίτημα χωρίς να ενοχλεί κανέναν άλλο. Επιπλέον, η δομή δεδομένων εκχωρεί προτεραιότητες σε αιτήματα, ώστε όταν ληφθούν, να τις μεταβιβάσει στο σωστό άτομο. Το αποτέλεσμα είναι ένας μηχανισμός μη κλειδώματος που εξακολουθεί να έχει επίσημες προδιαγραφές και καλή απόδοση στην πράξη.
Αλεξέι: Ποιες είναι οι προσδοκίες σας από αυτήν τη δομή δεδομένων; Θα βελτιώσει την απόδοση σε όλες τις συνήθεις περιπτώσεις ή είναι καλύτερο για συγκεκριμένες καταστάσεις;
Μιχαήλ: Είναι χρήσιμο εάν, πρώτον, χρειάζεστε ένα κοντέινερ χωρίς κλείδωμα και, δεύτερον, πρέπει να περιμένετε σε μια κατάσταση όπου πρέπει να ανακτήσετε δεδομένα από το κοντέινερ που δεν βρίσκεται σε αυτό. Από όσο γνωρίζω, το πλαίσιο μας παρέχει βέλτιστη συμπεριφορά όταν πληρούνται αυτές οι δύο προϋποθέσεις. Επομένως, σε αυτές τις περιπτώσεις συνιστώ τη χρήση του. Το κύριο πλεονέκτημα των δομών δεδομένων χωρίς κλειδαριά είναι ότι αποφεύγουν προβλήματα απόδοσης. Και η αναμονή είναι πολύ σημαντική σε πολλούς αλγόριθμους εάν τα δεδομένα μεταφέρονται από το ένα νήμα στο άλλο.
Виталий: Να διευκρινίσω: θα μιλήσετε για το ίδιο πράγμα και στο σχολείο και στο συνέδριο;
Μιχαήλ: Στο σχολείο γενικά για τις δομές δεδομένων πολλαπλών νημάτων, με τις βασικές αρχές που περιγράφονται στην αρχή του μαθήματος. Υποθέτω ότι το κοινό γνωρίζει τι είναι τα νήματα και είναι εξοικειωμένο με τις κλειδαριές. Με βάση αυτές τις βασικές γνώσεις, θα μιλήσω για δομές δεδομένων χωρίς κλείδωμα. Θα δώσω μια επισκόπηση των πιο σημαντικών προβλημάτων σε αυτόν τον τομέα, θίγοντας θέματα όπως η διαχείριση μνήμης. Δεν νομίζω ότι θα υπάρξει κάτι πιο περίπλοκο από την ουρά MS.
Αλεξέι: Σκοπεύετε να διδάξετε για διπλές δομές δεδομένων στο τέλος της τάξης σας στο σχολείο;
Μιχαήλ: Θα τα αναφέρω, αλλά δεν θα αφιερώσω πολύ χρόνο σε αυτά. Η έκθεση Hydra θα είναι αφιερωμένη σε αυτούς. Θα καλύψει το έργο που τελικά έγινε Java, καθώς και θα συνεργαστεί με τον Joe Israelevich για τη δημιουργία μιας διπλής παραλλαγής της ουράς LCRQ και τη δημιουργία ενός σχεδόν καθολικού σχεδίου για διπλές δομές δεδομένων.
Αλεξέι: Άρα η διάλεξη στο σχολείο μπορεί να συνιστάται για αρχάριους και η διάλεξη για διπλές δομές δεδομένων για την Ύδρα - για άτομα που έχουν ήδη κάποια εμπειρία;
Μιχαήλ: Διορθώστε με αν κάνω λάθος, αλλά το κοινό στο Hydra θα είναι αρκετά διαφορετικό, συμπεριλαμβανομένων πολλών ειδικών της Java και γενικά ανθρώπων που δεν ασχολούνται ειδικά με τον προγραμματισμό πολλαπλών νημάτων.
Виталий: Ναι είναι αλήθεια.
Αλεξέι: Τουλάχιστον αυτό ελπίζουμε.
Μιχαήλ: Σε αυτήν την περίπτωση, θα βρεθώ αντιμέτωπος με το ίδιο πρόβλημα με το οποίο ξεκινήσαμε αυτή τη συνέντευξη: πώς να φτιάξουμε μια αναφορά τόσο αρκετά πλούσια σε τεχνικές λεπτομέρειες όσο και προσβάσιμη σε όλους τους ακροατές.
Виталий: Θα κάνετε έκθεση με τον ίδιο τρόπο που δίνετε διαλέξεις; Δηλαδή να μιλήσει με το κοινό και να προσαρμοστεί στην κατάσταση;
Μιχαήλ: Φοβάμαι ότι δεν θα βγει έτσι, γιατί η αναφορά θα έχει διαφάνειες. Οι διαφάνειες είναι σημαντικές όταν οι ακροατές μιλούν αρχικά διαφορετικές γλώσσες. Πολλοί άνθρωποι θα δυσκολευτούν να με καταλάβουν στα αγγλικά, ειδικά αν μιλάω πολύ γρήγορα. Επέλεξα αυτά τα θέματα γιατί μου ζήτησε να μιλήσω για δομές δεδομένων χωρίς κλείδωμα στο SPTDC School. και μετά χρειαζόμουν μια αναφορά για μια διάσκεψη ομάδας χρηστών Java και ήθελα να επιλέξω κάτι που θα ενδιέφερε ειδικά τους προγραμματιστές Java. Ο ευκολότερος τρόπος ήταν να μιλήσω για εκείνα τα πράγματα στη βιβλιοθήκη Java που είχα με τον ένα ή τον άλλο τρόπο.
Αλεξέι: Υποθέτουμε ότι το κοινό στην Ύδρα γνωρίζει ήδη κάτι για τον προγραμματισμό χωρίς κλειδαριά και ίσως έχει κάποια εμπειρία σε αυτόν τον τομέα. Αλλά αυτό είναι μόνο μια υπόθεση. Τέλος πάντων, ευχαριστώ για τον χρόνο σας. Είμαι σίγουρος ότι η συνέντευξη θα είναι πολύ ενδιαφέρουσα για τους αναγνώστες μας. Ευχαριστώ πολύ!
Виталий: Ευχαριστώ.
Μιχαήλ: Θα χαρώ να σας γνωρίσω στην Αγία Πετρούπολη.
Αλεξέι: Κι εμείς, έχουμε μια όμορφη πόλη. Εχεις έρθει ποτέ εδώ?
Μιχαήλ: Όχι, δεν έχω πάει ποτέ στη Ρωσία. Αλλά η Αγία Πετρούπολη ήταν πάντα στη λίστα με τα μέρη που δεν έχω πάει ακόμα, αλλά όπου θέλω πραγματικά να πάω, οπότε χάρηκα πολύ για την πρόσκληση.
Αλεξέι: Παρεμπιπτόντως, θα έχουμε πρόγραμμα εκδρομών για ομιλητές. Σας ευχαριστώ πολύ για τη συνέντευξη, και καλή σας μέρα!
Μπορείτε να συνεχίσετε τη συνομιλία σας με τον Μιχαήλ στο συνέδριο Hydra 2019, που θα διεξαχθεί στις 11-12 Ιουλίου 2019 στην Αγία Πετρούπολη. Θα έρθει με αναφορά . Μπορείτε να αγοράσετε εισιτήρια .
Πηγή: www.habr.com
