in

Comment les serveurs Web écoutent-ils les nouvelles demandes?

Lorsque vous découvrez les serveurs Web et leur fonctionnement, vous pouvez être curieux de savoir s’ils sont constamment à l’écoute des demandes ou s’ils attendent de recevoir une demande pour passer à l’action. Dans cet esprit, l’article de questions-réponses sur les superutilisateurs d’aujourd’hui a les réponses pour satisfaire la curiosité d’un lecteur.

La question

Le lecteur SuperUser user2202911 veut savoir comment les serveurs Web écoutent les nouvelles demandes:

J’essaie de comprendre les détails «plus profonds» du fonctionnement des serveurs Web. Je veux savoir si un serveur, disons Apache, par exemple, interroge en permanence de nouvelles demandes ou s’il fonctionne par une sorte de système d’interruption. S’il s’agit d’une interruption, qu’est-ce qui déclenche l’interruption? Est-ce le pilote de la carte réseau?

Comment un serveur Web écoute-t-il les nouvelles demandes?

La réponse

Greg Bowser, contributeur SuperUser, a la réponse pour nous:

La réponse courte est une sorte de système d’interruption. Essentiellement, ils utilisent blocage des E / S, ce qui signifie qu’ils dorment (bloquent) en attendant de nouvelles données.

  1. Le serveur crée une socket d’écoute puis se bloque en attendant de nouvelles connexions. Pendant ce temps, le noyau met le processus dans un état et exécute d’autres processus. C’est un point important; avoir le processus d’interrogation en continu gaspillerait des ressources CPU. Le noyau est capable d’utiliser les ressources système plus efficacement en bloquant le processus jusqu’à ce qu’il y ait du travail à faire.
  2. Lorsque de nouvelles données arrivent sur le réseau, la carte réseau émet une interruption.
  3. Voyant qu’il y a une interruption de la carte réseau, le noyau, via le pilote de la carte réseau, lit les nouvelles données de la carte réseau et les stocke en mémoire. (Cela doit être fait rapidement et est généralement géré dans le gestionnaire d’interruption.)
  4. Le noyau traite les données nouvellement arrivées et les associe à une socket. Un processus qui bloque sur ce socket sera marqué comme exécutable, ce qui signifie qu’il est maintenant éligible pour s’exécuter. Il ne s’exécute pas nécessairement immédiatement (le noyau peut décider d’exécuter encore d’autres processus).
  5. À sa guise, le noyau réveillera le processus de serveur Web bloqué. (Puisqu’il est maintenant exécutable.)
  6. Le processus du serveur Web continue de s’exécuter comme si aucun temps ne s’était écoulé. Son appel système bloquant revient et il traite toutes les nouvelles données. Passez ensuite à l’étape 1.

Avez-vous quelque chose à ajouter à l’explication? Sonnez dans les commentaires. Vous voulez lire plus de réponses d’autres utilisateurs de Stack Exchange férus de technologie? Consultez le fil de discussion complet ici.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Comment empêcher les gens de savoir que vous lisez leur message dans Google Hangouts

Comment empêcher les gens de savoir que vous lisez leur message dans Google Hangouts

Jouets puissants pour XP

Jouets puissants pour XP