Hogyan hallgatnak a webkiszolgálók új kérésekre?
Ha a webszerverekről és azok működéséről tanul, akkor kíváncsi lehet arra, hogy folyamatosan hallgatnak-e a kérésekre, vagy várnak, amíg megkapják a kérést, hogy cselekedjenek. Ezt szem előtt tartva, a mai SuperUser Q&A postai válaszai az olvasó kíváncsiságának.
A mai Kérdések és válaszok munkamenet a Jóvagyon - a Stack Exchange alosztályának, a közösség által vezérelt Q&A webhelyek csoportjának köszönhetően..
Az xmodulo / Linux képernyőképek (Flickr) jóvoltából.
A kérdés
A SuperUser olvasó user2202911 azt szeretné tudni, hogy a webszerverek hogyan hallgatnak új kéréseket:
Megpróbálom megérteni a webszerverek működésének részletesebb részleteit. Szeretném tudni, hogy egy szerver, például az Apache, folyamatosan lekérdezi az új kéréseket, vagy ha valamilyen megszakítási rendszerrel működik. Ha ez egy megszakítás, mi a szikrázó? Ez a hálózati kártya meghajtó?
Hogyan hallgat egy webkiszolgáló új kéréseket?
A válasz
A SuperUser közreműködő, Greg Bowser válaszol nekünk:
A rövid válasz egyfajta megszakítási rendszer. Lényegében blokkoló I / O-t használnak, ami azt jelenti, hogy új adatokat várva alszik (blokkol).
- A szerver hallgató aljzatot hoz létre, majd blokkolja az új kapcsolatok várakozását. Ez idő alatt a rendszermag a folyamatot egy megszakítható alvás állapítsa meg és futtatja más folyamatokat. Ez fontos pont; A folyamatfelvétel folyamatos lefolytatása a CPU erőforrásait pazarolná. A rendszermag hatékonyabban tudja használni a rendszer erőforrásait a folyamat blokkolásával, amíg meg nem történik a munka.
- Amikor új adatok érkeznek a hálózatra, a hálózati kártya megszakad.
- Látva, hogy van egy megszakítás a hálózati kártyáról, a kernel a hálózati kártya meghajtón keresztül elolvassa az új adatokat a hálózati kártyáról és tárolja a memóriában. (Ezt gyorsan meg kell tenni, és általában a megszakításkezelőn belül kell kezelni.)
- A rendszermag feldolgozza az újonnan érkezett adatokat, és egy aljzattal társítja. Egy olyan folyamat, amely blokkolja az adott aljzatot, runnable lesz, ami azt jelenti, hogy most már jogosult a futtatásra. Ez nem feltétlenül fut azonnal (a kernel dönthet más folyamatok futtatásáról).
- Szabadidejében a kernel felébreszti a blokkolt webszerver folyamatát. (Mivel most már futható.)
- A webkiszolgáló folyamat folytatódik, mintha nincs idő. A blokkoló rendszer hívása visszatér, és feldolgozza az új adatokat. Ezután ugorjon az 1. lépésre.
Van valami, amit hozzá kell adni a magyarázathoz? Kikapcsolja a megjegyzéseket. Szeretne további válaszokat olvasni más tech-savvy Stack Exchange felhasználóktól? Nézze meg a teljes beszélgetés szálát itt.