Úvodná » ako » Ako počúvajú nové žiadosti webové servery?

    Ako počúvajú nové žiadosti webové servery?

    Keď sa dozviete o webových serveroch a o tom, ako fungujú, môžete byť zvedaví, či neustále počúvajú žiadosti alebo čakajú, kým nedostanú žiadosť o akciu. S ohľadom na to má dnešný príspevok SuperUser Q & A odpovede na uspokojenie zvedavosti čitateľa.

    Dnešná relácia otázok a odpovedí sa k nám pridelí zdvorilosťou SuperUser - podskupiny Stack Exchange, zoskupenia webových stránok typu Q & A.

    Snímka s ukážkou xmodulo / Linux Screenshots (Flickr).

    Otázka

    Čítač SuperUser user2202911 chce vedieť, ako webové servery počúvajú nové požiadavky:

    Snažím sa pochopiť podrobnejšie informácie o tom, ako fungujú webové servery. Chcem vedieť, či napríklad server, napríklad Apache, neustále vyhľadáva nové žiadosti alebo ak funguje nejaký systém prerušenia. Ak je to prerušenie, čo vyvoláva prerušenie? Je to ovládač sieťovej karty?

    Ako webový server počúva nové požiadavky?

    Odpoveď

    Sponzor spoločnosti SuperUser Greg Bowser nám odpovedal:

    Krátka odpoveď je nejaký systém prerušenia. V podstate používajú blokovanie I / O, čo znamená, že spia (blokujú) pri čakaní na nové dáta.

    1. Server vytvorí počúvaciu soketu a potom blokuje pri čakaní na nové pripojenia. Počas tejto doby jadro dáva proces do jedného prerušiteľný spánok stav a vykonáva ďalšie procesy. Toto je dôležitý bod; neustále prebiehajúci procesný prieskum by spôsobil plytvanie zdrojmi CPU. Jadro je schopné efektívnejšie využívať systémové prostriedky tým, že zablokuje proces, kým to nebude robiť.
    2. Keď nové dáta prichádzajú do siete, sieťová karta vydáva prerušenie.
    3. Keďže je sieťová karta prerušená, jadro prostredníctvom ovládača sieťovej karty číta nové dáta zo sieťovej karty a uloží ich do pamäte. (Musí to byť vykonané rýchlo a vo vnútri manipulátora s prerušeniami sa spravidla spracováva.)
    4. Jadro spracováva novo prijímané údaje a priradí ich k zásuvke. Proces, ktorý blokuje túto zásuvku, bude označený ako spustiteľný, čo znamená, že je teraz možné spustiť. Nemusí to bežať ihneď (jadro sa môže rozhodnúť spustiť ďalšie procesy).
    5. Vo svojom voľnom čase sa jadro prebudí proces zablokovaného webového servera. (Keďže je teraz možné spustiť.)
    6. Proces webového servera pokračuje v vykonávaní, akoby neprebehol žiadny čas. Jeho blokovací systémový hovor sa vráti a spracováva nové dáta. Potom prejdite na krok 1.

    Máte niečo doplniť vysvetlenie? Znie to v komentároch. Chcete sa dozvedieť viac odpovedí od iných používateľov technickej úrovne Stack Exchange? Pozrite sa na celý diskusný príspevok tu.