how-do-web-servers-listen-for-new-request-00

Όταν μαθαίνετε για διακομιστές ιστού και πώς λειτουργούν, μπορεί να είστε περίεργοι εάν ακούνε συνεχώς αιτήματα ή αν περιμένουν έως ότου λάβουν ένα αίτημα για δράση. Έχοντας αυτό υπόψη, η σημερινή ανάρτηση Q & A SuperUser έχει τις απαντήσεις για να ικανοποιήσει την περιέργεια του αναγνώστη.

Η σημερινή συνεδρία «Ερώτηση και απάντηση» μας προσφέρει ευγενική προσφορά του SuperUser - μια υποδιαίρεση του Stack Exchange, μιας ομάδας ιστότοπων Q&A που βασίζεται στην κοινότητα.

Το στιγμιότυπο οθόνης είναι ευγενική προσφορά των xmodulo / Linux Screenshots (Flickr).

Το ερώτημα

Ο χρήστης του SuperUser reader user2202911 θέλει να μάθει πώς οι διακομιστές web ακούνε νέα αιτήματα:

Προσπαθώ να κατανοήσω τις λεπτομέρειες του «βαθύτερου επιπέδου» του τρόπου λειτουργίας των διακομιστών ιστού. Θέλω να μάθω αν ένας διακομιστής, για παράδειγμα, ο Apache, ψάχνει συνεχώς για νέα αιτήματα ή εάν λειτουργεί με κάποιο σύστημα διακοπής. Εάν πρόκειται για διακοπή, τι προκαλεί τη διακοπή; Είναι το πρόγραμμα οδήγησης κάρτας δικτύου;

Πώς ένας διακομιστής ιστού ακούει νέα αιτήματα;

Η απάντηση

Ο συνεργάτης του SuperUser Greg Bowser έχει την απάντηση για εμάς:

Η σύντομη απάντηση είναι ένα είδος συστήματος διακοπής. Ουσιαστικά, χρησιμοποιούν αποκλεισμό I / O, που σημαίνει ότι κοιμούνται (μπλοκ) περιμένοντας νέα δεδομένα. Ο διακομιστής δημιουργεί μια υποδοχή ακρόασης και στη συνέχεια μπλοκάρει ενώ περιμένει νέες συνδέσεις. Κατά τη διάρκεια αυτής της περιόδου, ο πυρήνας θέτει τη διαδικασία σε κατάσταση διακοπής ύπνου και εκτελεί άλλες διαδικασίες. Αυτό είναι ένα σημαντικό σημείο. Η συνεχής δημοσκόπηση της διαδικασίας θα σπαταλούσε πόρους CPU. Ο πυρήνας μπορεί να χρησιμοποιήσει τους πόρους του συστήματος πιο αποτελεσματικά αποκλείοντας τη διαδικασία έως ότου υπάρξει δουλειά για να γίνει. Όταν φτάνουν νέα δεδομένα στο δίκτυο, η κάρτα δικτύου εκδίδει διακοπή. Βλέποντας ότι υπάρχει διακοπή από την κάρτα δικτύου, ο πυρήνας, μέσω του προγράμματος οδήγησης κάρτας δικτύου, διαβάζει τα νέα δεδομένα από την κάρτα δικτύου και τα αποθηκεύει στη μνήμη. (Αυτό πρέπει να γίνει γρήγορα και γενικά αντιμετωπίζεται εντός του χειριστή διακοπής.) Ο πυρήνας επεξεργάζεται τα νεοαποκτηθέντα δεδομένα και τα συσχετίζει με μια υποδοχή. Μια διαδικασία που αποκλείει σε αυτήν την υποδοχή θα επισημανθεί με δυνατότητα εκτέλεσης, που σημαίνει ότι είναι πλέον κατάλληλη για εκτέλεση. Δεν εκτελείται απαραίτητα αμέσως (ο πυρήνας μπορεί να αποφασίσει να εκτελέσει ακόμα άλλες διαδικασίες). Στον ελεύθερο χρόνο του, ο πυρήνας θα ξυπνήσει τη διαδικασία του αποκλεισμένου διακομιστή ιστού. (Δεδομένου ότι τώρα μπορεί να εκτελεστεί.) Η διαδικασία του διακομιστή ιστού συνεχίζει να εκτελείται σαν να μην έχει περάσει χρόνος. Επιστρέφει την κλήση του συστήματος αποκλεισμού και επεξεργάζεται νέα δεδομένα. Στη συνέχεια, μεταβείτε στο βήμα 1.

Έχετε κάτι να προσθέσετε στην εξήγηση; Ήχος στα σχόλια. Θέλετε να διαβάσετε περισσότερες απαντήσεις από άλλους χρήστες τεχνολογίας Stack Exchange; Δείτε ολόκληρο το νήμα συζήτησης εδώ.