If-Koubou

Kako web poslužitelji slušaju nove zahtjeve?

Kako web poslužitelji slušaju nove zahtjeve? (Kako da)

Kada saznate o web poslužiteljima i kako rade, možda ćete biti znatiželjni ako stalno slušaju zahtjeve ili ako pričekaju dok ne primi zahtjev za pokretanje postupka. Imajući to na umu, današnji SuperUser Q & A post ima odgovore koji zadovoljavaju čitateljeve znatiželje.

Današnja pitanja i odgovori nam se javljaju zahvaljujući SuperUseru - podjele Stack Exchange-a, zajednice-driven grupiranja Q & A web stranica.

Snimak zaslona zahvaljujući xmodulo / Linux Snimak zaslona (Flickr).

Pitanje

Čitač SuperUser user2202911 želi znati kako web poslužitelji slušaju nove zahtjeve:

Pokušavam razumjeti detalje o tome kako web poslužitelji rade. Želim znati je li poslužitelj, recimo, Apache, na primjer, kontinuirano glasuje za nove zahtjeve ili funkcionira nekim sustavom prekida. Ako je prekid, što izaziva prekid? Je li vozač mrežne kartice?

Kako web poslužitelj sluša nove zahtjeve?

Odgovor

Uskladitelj SuperUser Greg Bowser ima odgovor za nas:

Kratak odgovor je neka vrsta prekida sustava. U osnovi, oni koriste blokiranje I / O, što znači da spavaju (blokiraju) dok čekaju nove podatke.

  1. Poslužitelj stvara utičnicu za slušanje, a zatim blokira dok čeka nove veze. Tijekom tog vremena, kernel stavlja proces u prekidni san drži i pokreće druge procese. Ovo je važna točka; nakon što procesna anketa kontinuirano otpada CPU resursa. Kernel je u stanju učinkovitije koristiti resurse sustava blokiranjem procesa sve dok ne bude posla za to.
  2. Kad novi podaci stignu na mrežu, mrežna kartica izdaje prekid.
  3. Budući da postoji prekid s mrežne kartice, kernel, putem upravljačkog programa mrežne kartice, čita nove podatke iz mrežne kartice i pohranjuje u memoriju. (Ovo mora biti brzo i općenito se obrađuje unutar rukovatelja prekida.)
  4. Kernel obrađuje novootkrivene podatke i povezuje ih s utičnicom. Postupak koji blokiraju tu utičnicu bit će označen pokretljivim, što znači da sada ispunjava uvjete za pokretanje. To ne mora nužno pokrenuti odmah (kernel može odlučiti pokrenuti ostale procese).
  5. U slobodno vrijeme, kernel će probuditi blokirani proces web poslužitelja. (Budući da je sada runnable.)
  6. Proces web poslužitelja nastavlja se izvršavati kao da nema vremena. Njegov blokirajući sustav naziva vraća i obrađuje sve nove podatke. Zatim idite na korak 1.

Imate li nešto za objašnjenje? Zvuči u komentarima. Želite li pročitati više odgovora od drugih tehnoloških korisnika Stack Exchangea? Pogledajte ovdje cijelu raspravu.