29Jul
Kai mokate apie žiniatinklio serverius ir kaip jie veikia, jums gali būti smalsu, jei jie nuolat klauso užklausų arba laukia, kol jie gaus prašymą imtis veiksmų.Turint tai omenyje, šiandien "SuperUser Q &" įrašas turi atsakymus patenkinti skaitytojo smalsumą.
Šiandienos klausimas &Atsakymų sesija ateina pas mus iš "SuperUser" - "Stack Exchange", bendruomenės pagrįstos "Q & A" svetainių grupės pasidalijimo.
Screenshot mandagumo xmodulo / Linux ekrano nuotraukų( Flickr).
Klausimas
SuperUser skaitytuvas user2202911 nori sužinoti, kaip žiniatinklio serveriai klausia naujų užklausų:
Aš stengiuosi suprasti "geresnio lygio" informaciją apie tai, kaip veikia žiniatinklio serveriai. Noriu sužinoti, ar, pavyzdžiui, serveris, tarkim, "Apache", nuolat klausia naujų užklausų, arba jei jis veikia tam tikros pertraukimo sistemos. Jei tai yra pertrauka, kas sukelia pertraukimą?Ar tai tinklo plokštės tvarkyklė?
Kaip žiniatinklio serveris klauso naujų užklausų?
Atsakymas
SuperUser autorius Gregas Bowseris turi mums atsakymą:
Trumpas atsakymas yra tam tikros pertraukimo sistemos rūšis. Iš esmės jie naudoja blokuojamą įvesties / išvesties funkciją, taigi jie miega( blokuoja) laukdami naujų duomenų.
- Serveris sukuria klausymo lizdą ir blokuoja laukiant naujų ryšių.Per šį laiką branduolys perkelia procesą į pertraukiamą miego būseną ir vykdo kitus procesus. Tai yra svarbus dalykas;proceso apklausa nuolat išgelbėtų CPU išteklius. Branduolis sugeba efektyviau naudoti sistemos išteklius, blokuodamas procesą, kol to nepadarys.
- Kai į tinklą atvyksta nauji duomenys, tinklo plokštė ištrina.
- Iš tinklo kortelės nutrūkus, branduolys per tinklo plokštės tvarkyklę nuskaito naujus duomenis iš tinklo plokštės ir saugo atmintyje.(Tai turi būti padaryta greitai ir paprastai tvarkoma pertraukimo tvarkyklės viduje.)
- Branduolys apdoroja naujai atvykusius duomenis ir susieja jį su lizdu. Procesas, kuris blokuoja šį lizdą, bus pažymėtas kaip "neįvykdytas", todėl jis dabar gali būti paleistas. Tai nebūtinai prasideda iš karto( branduolys gali nuspręsti paleisti kitus procesus).
- Savo laisvalaikiu branduolys išsiplės blokuojamą žiniatinklio serverio procesą.(Kadangi dabar jis gali būti paleistas.)
- Tinklo serverio procesas tęsiasi taip, tarsi laikas praėjo. Jo blokavimo sistemos skambutis grąžina ir apdoroja visus naujus duomenis. Tada eikite į 1 veiksmą.
Ar turite ką nors įtraukti į paaiškinimą?Garsas išjungtas komentaruose. Norite skaityti daugiau atsakymų iš kitų "Tech-savvy Stack Exchange" vartotojų?Patikrinkite visą diskusijų temą čia.