29Jul

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

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

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

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

Η ερώτηση

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

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

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

Ο συνεργάτης απάντησης

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

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

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

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