Αρχική σελίδα » πως να » Πώς οι διακομιστές Web ακούν για νέα αιτήματα;

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

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

    Η σημερινή συνάντηση ερωτήσεων και απαντήσεων έρχεται σε επαφή με το SuperUser - μια υποδιαίρεση του Stack Exchange, μια κοινότητα που κατευθύνεται από τους ιστότοπους ερωτήσεων & απαντήσεων.

    Στιγμιότυπο οθόνης από xmodulo / Linux Screenshots (Flickr).

    Το ερώτημα

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

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

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

    Η απάντηση

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

    Η σύντομη απάντηση είναι κάποιο είδος συστήματος διακοπής. Ουσιαστικά χρησιμοποιούν μπλοκάρισμα εισόδου / εξόδου, που σημαίνει ότι κοιμούνται (μπλοκ) ενώ περιμένουν νέα δεδομένα.

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

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