29Jul
Amikor megismerkednek a webkiszolgálókkal és hogyan működnek, lehet, hogy kíváncsi vagy, ha folyamatosan hallgatják a kéréseket, vagy ha várakoznak, amíg megkapják a cselekvésre irányuló kérelmet. Ennek szem előtt tartásával a mai SuperUser Q & A poszt válaszai kielégítik az olvasó kíváncsiságát.
A mai kérdés &A válaszüzenet a SuperUser - a Stack Exchange megosztottságának köszönhetően - a Q & A webhelyek közösségi szintű csoportosítása.
Pillanatkép xmodulo / Linux képekkel( Flickr).
Kérdés
SuperUser olvasó user2202911 szeretné tudni, hogy a webszerverek hogyan hallgatják meg az új kéréseket:
Megpróbálom megérteni a "mélyebb szint" részleteit, hogy a webszerverek hogyan működnek. Azt akarom tudni, hogy egy kiszolgáló például azt mondja-e Apache, hogy folyamatosan kérdezősködik az új kérelmekért, vagy ha valamilyen megszakítási rendszer működik. Ha megszakítás, mi okozza a megszakítást? Ez a hálózati kártya meghajtó?
Hogyan kezeli a webszerver az új kéréseket?
A válasz
A SuperUser beszállítója, Greg Bowser válaszol számunkra:
A rövid válasz valamilyen megszakítási rendszer. Lényegében blokkoló I / O blokkot használnak, azaz alvás( blokk), miközben új adatokat várnak.
- A kiszolgáló létrehoz egy hallgatócsatlakozót, majd blokkolja az új kapcsolatok várakozásait. Ez alatt az idő alatt a kernel megszakítható alvás állapotba kerül, és más folyamatokat futtat. Ez egy fontos pont;mivel a folyamatfelmérés folyamatosan a CPU erőforrásait veszíti. A rendszermag hatékonyabban tudja használni a rendszer erőforrásait azáltal, hogy blokkolja a folyamatot addig, amíg nincs munkája.
- Amikor új adatok érkeznek a hálózathoz, a hálózati kártya megszakítást bocsát ki.
- Mivel a hálózati kártya megszakad, a rendszermag a hálózati kártya meghajtó segítségével olvassa le az új adatokat a hálózati kártyáról, és tárolja a memóriában.(Ezt gyorsan kell elvégezni, és általában a megszakításkezelőben kell kezelni.)
- A rendszermag az újonnan érkezett adatokat feldolgozza és egy aljzathoz csatlakozik. Az a rendszer, amely blokkolja az adott aljzatot, runnable lesz kijelölve, ami azt jelenti, hogy most jogosult futtatni. Nem feltétlenül fut el azonnal( a rendszermag eldöntheti, hogy más folyamatokat is futtat).
- A rendszermag felszabadítja a blokkolt webszerver folyamatot.(Mivel most már futható.)
- A webszerver folyamat továbbra is végrehajtja, mintha nincs idő telt el. A blokkoló rendszer hívja vissza és feldolgozza az új adatokat. Ezután folytassa az 1. lépést.
Van valami, amit hozzá lehet adni a magyarázathoz? Hangzik ki a megjegyzésekben. Szeretne többet válaszolni a többi technikus-tudós Stack Exchange felhasználóiról? Nézze meg a teljes vitafonalat itt.