Kaip interneto serveriai klausosi naujų užklausų?
Susipažinę su žiniatinklio serveriais ir apie tai, kaip jie dirba, gali būti įdomu, jei jie nuolat klausosi prašymų ar laukia, kol gaus prašymą imtis veiksmų. Turint tai omenyje, šiandieninio „SuperUser“ atsakymų ir atsakymų atsakymai atitinka skaitytojo smalsumą.
Šiandienos „Klausimų ir atsakymų“ sesija mums suteikiama pagal „SuperUser“ - „Stack Exchange“ padalinį, bendruomenės sukurtą „Q&A“ svetainių grupavimą.
„Xmodulo“ / „Linux“ ekrano nuotraukų („Flickr“) įkvėpimas.
Klausimas
„SuperUser“ skaitytuvas user2202911 nori sužinoti, kaip interneto serveriai klausosi naujų užklausų:
Bandau suprasti „gilesnio lygio“ informaciją apie tai, kaip veikia interneto serveriai. Noriu žinoti, ar, pavyzdžiui, serveris, sako „Apache“, nuolat apklausa naujus prašymus arba jei tai veikia tam tikra nutraukimo sistema. Jei tai yra pertrauka, kas sukelia pertrauką? Ar tai tinklo plokštės tvarkyklė?
Kaip žiniatinklio serveris klausosi naujų užklausų?
Atsakymas
„SuperUser“ dalyvis „Greg Bowser“ turi atsakymą:
Trumpas atsakymas yra tam tikra nutraukimo sistema. Iš esmės jie naudoja blokavimo I / O, o tai reiškia, kad jie laukia naujų duomenų.
- Serveris sukuria klausymo lizdą, o tada blokuoja laukdamas naujų jungčių. Per šį laiką branduolys procesą perkelia į pertraukiamo miego nustatyti ir vykdyti kitus procesus. Tai svarbus klausimas; Proceso apklausa nuolat būtų taupyti procesoriaus išteklius. Branduolys gali efektyviau naudoti sistemos išteklius, blokuodamas procesą, kol bus atliktas darbas.
- Kai į tinklą atvyksta nauji duomenys, tinklo plokštė išjungia.
- Matydamas, kad iš tinklo plokštės yra pertrauka, branduolys per tinklo plokštės tvarkyklę skaito naujus duomenis iš tinklo plokštės ir saugo ją atmintyje. (Tai turi būti padaryta greitai ir paprastai tvarkoma per pertraukos tvarkyklę.)
- Branduolys apdoroja naujai gautus duomenis ir susieja juos su lizdu. Procesas, kuris blokuoja tą lizdą, bus pažymėtas paleistinu, o tai reiškia, kad jis dabar gali veikti. Jis nebūtinai iš karto veikia (branduolys gali nuspręsti paleisti kitus procesus).
- Savo laisvalaikio metu branduolys pažadins užblokuotą žiniatinklio serverio procesą. (Kadangi dabar jis yra paleistas.)
- Žiniatinklio serverio procesas tęsiasi taip, tarsi nėra laiko. Jo blokavimo sistemos skambutis grąžina ir apdoroja visus naujus duomenis. Tada pereikite prie 1 veiksmo.
Ar ką nors papildyti paaiškinimu? Garsas išjungtas komentaruose. Norite perskaityti daugiau atsakymų iš kitų „tech-savvy Stack Exchange“ vartotojų? Čia rasite visą diskusijų temą.