29Jul

Cum ascultă Serverele Web pentru noile solicitări?

click fraud protection

Atunci când învățați despre serverele web și cum funcționează acestea, puteți fi curios dacă ascultă în mod constant solicitările sau dacă așteaptă până când primesc o cerere de acțiune.În acest sens, postul de astăzi SuperUser Q & A are răspunsurile pentru a satisface curiozitatea cititorului.

Întrebarea de astăzi &Sesiunea de răspuns vine de la amabilitatea SuperUser - o subdiviziune a Stack Exchange, o grupare bazată pe comunitate a site-urilor web Q & A.

Captură de ecran prin amabilitatea screenshoturilor xmodulo / Linux( Flickr).

Întrebare Întrebarea

SuperUser reader user2202911 vrea să știe cum serverele web ascultă pentru noi cereri:

Încerc să înțeleg detaliile "nivelului mai profund" a modului în care funcționează serverele web. Vreau să știu dacă un server, să zicem că Apache, de exemplu, interoghează continuu cererile noi sau dacă funcționează printr-un sistem de întrerupere. Dacă este o întrerupere, ceea ce sporește întreruperea? Este driverul cardului de rețea?

instagram viewer

Cum poate un server web să asculte cereri noi?

Răspunsul

Contribuitor SuperUser Greg Bowser are răspunsul pentru noi:

Răspunsul scurt este un fel de sistem de întrerupere.În esență, folosesc I / O de blocare, adică ei dorm( blochează) în timp ce așteaptă date noi.

  1. Serverul creează un soclu de ascultare și apoi blochează în timp ce așteaptă conexiuni noi.În acest timp, kernelul pune procesul într-o stare de întrerupere și execută alte procese. Acesta este un punct important;având procesul de sondaj continuu ar risipi resursele CPU.Kernelul este capabil să utilizeze resursele de sistem mai eficient prin blocarea procesului până când nu este nevoie de lucru pentru a face acest lucru.
  2. Când apar noi date în rețea, cardul de rețea emite o întrerupere.
  3. Văzând că există o întrerupere de pe placa de rețea, kernel-ul, prin intermediul driverului cardului de rețea, citește noile date de pe cardul de rețea și le stochează în memorie.(Acest lucru trebuie făcut rapid și este, în general, manipulat în interiorul dispozitivului de tratare a întreruperilor.)
  4. Kernelul procesează datele nou sosite și le asociază cu un soclu. Un proces care blochează acel soclu va fi marcat ca alertă, ceea ce înseamnă că acesta este acum eligibil pentru a rula. Nu rulează neapărat imediat( kernelul poate decide să ruleze încă alte procese).
  5. În timpul liber, kernel-ul va trezi procesul serverului blocat.(Deoarece se poate rula acum.)
  6. Procesul de server web continuă executând ca și cum nu ar fi trecut nici un timp. Apelul său de blocare se întoarce și procesează orice date noi. Apoi mergeți la pasul 1.

Aveți ceva de adăugat la explicație? Sunați în comentarii. Doriți să citiți mai multe răspunsuri de la alți utilizatori de tehnologie Stack Exchange? Check out discuția completă aici.