Miten Web-palvelimet kuuntelevat uusia pyyntöjä?
Kun opit web-palvelimista ja siitä, miten ne toimivat, saatat olla utelias, jos he kuuntelevat jatkuvasti pyyntöjä tai odottavat, kunnes he saavat pyynnön ryhtyä toimiin. Tässä mielessä tämän päivän SuperUser Q&A -postissa on vastaukset lukijan uteliaisuuden tyydyttämiseen.
Nykypäivän Kysymys- ja vastaus -istunto tulee meille suotuisasti SuperUserin - Stack Exchange -alueen, yhteisöpohjaisen Q & A-sivustojen ryhmittymän - kautta..
Kuvake kohteliaisuus xmodulo / Linux Screenshots (Flickr).
Kysymys
SuperUser-lukija user2202911 haluaa tietää, miten web-palvelimet kuuntelevat uusia pyyntöjä:
Yritän ymmärtää "syvempää" yksityiskohtia siitä, miten web-palvelimet toimivat. Haluan tietää, jos esimerkiksi palvelin, esimerkiksi Apache, kysyy jatkuvasti uusia pyyntöjä tai jos se toimii jonkinlaisen keskeytysjärjestelmän avulla. Jos kyseessä on keskeytys, mikä on kipinöintiä? Onko verkkokorttiohjain?
Miten web-palvelin kuuntelee uusia pyyntöjä?
Vastaus
SuperUserin avustaja Greg Bowserilla on vastaus meille:
Lyhyt vastaus on jonkinlainen keskeytysjärjestelmä. Pohjimmiltaan ne käyttävät esto I / O: ta, eli he nukkuvat (estää) odottaessaan uusia tietoja.
- Palvelin luo kuuntelupistokkeen ja sitten lohkot odottaessaan uusia yhteyksiä. Tänä aikana ydin asettaa prosessin keskeytettävä uni ja suorittaa muita prosesseja. Tämä on tärkeä asia; prosessi-kyselyn jatkaminen tuhoaisi keskusyksikön resursseja. Ydin pystyy käyttämään järjestelmäresursseja tehokkaammin estämällä prosessin, kunnes siihen on tehty työtä.
- Kun uusia tietoja saapuu verkkoon, verkkokortti antaa keskeytyksen.
- Kun verkkokortista on katkennut, lukee ytimen verkkokorttiohjaimen kautta uudet tiedot verkkokortilta ja tallentaa sen muistiin. (Tämä on tehtävä nopeasti ja sitä käsitellään yleensä keskeytyskäsittelijän sisällä.)
- Ydin käsittelee äskettäin saapuneet tiedot ja yhdistää sen pistorasiaan. Prosessi, joka estää kyseisen liitännän, on merkitty ajettavaksi, mikä tarkoittaa, että se on nyt oikeutettu suorittamaan. Se ei välttämättä toimi välittömästi (ydin voi päättää ajaa muita prosesseja vielä).
- Vapaa-aikanaan ydin herättää estetyn verkkopalvelimen prosessin. (Koska se on nyt ajettavissa.)
- Web-palvelinprosessi jatkaa suorittamista kuin jos aikaa ei ole kulunut. Sen estävän järjestelmän puhelu palaa ja käsittelee kaikki uudet tiedot. Siirry sitten vaiheeseen 1.
Onko jotain lisättävää selitykseen? Ääni pois kommenteista. Haluatko lukea lisää vastauksia muilta tech-savvy Stack Exchange -käyttäjiltä? Tutustu koko keskusteluketjuun täällä.