Homepage » hogyan kell » Hogyan hallgatnak a webkiszolgálók új kérésekre?

    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).

    1. 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.
    2. Amikor új adatok érkeznek a hálózatra, a hálózati kártya megszakad.
    3. 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.)
    4. 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).
    5. Szabadidejében a kernel felébreszti a blokkolt webszerver folyamatát. (Mivel most már futható.)
    6. 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.