Kako spletni strežniki poslušajo za nove zahteve?
Ko spoznavate spletne strežnike in kako delujejo, boste morda radovedni, če nenehno poslušajo zahteve ali če čakajo, da prejmejo zahtevo za ukrepanje. S tem v mislih ima današnji SuperUser Q & A odgovor, ki zadovolji bralčevo radovednost.
Današnja seja vprašanj in odgovorov prihaja z namenom SuperUser-a, ki je del skupine Stack Exchange, ki temelji na skupnostih spletnih mest za vprašanja in odgovore.
Posnetek zaslona z zaslonom xmodulo / posnetki Linuxa (Flickr).
Vprašanje
Bralnik SuperUser user2202911 želi izvedeti, kako spletni strežniki poslušajo nove zahteve:
Poskušam razumeti podrobnosti o "globlji ravni", kako delujejo spletni strežniki. Želim vedeti, ali strežnik, na primer, Apache, na primer, stalno išče nove zahteve ali če deluje z nekakšnim prekinjevalnim sistemom. Če gre za prekinitev, kaj sprašuje prekinitev? Je to gonilnik omrežne kartice?
Kako spletni strežnik posluša nove zahteve?
Odgovor
Sodelavec SuperUser Greg Bowser nam je odgovoril:
Kratek odgovor je nekakšen prekinitveni sistem. V bistvu uporabljajo blokiranje V / I, kar pomeni, da med čakanjem na nove podatke spijo (blokira).
- Strežnik ustvari vtičnico za poslušanje in blokira med čakanjem na nove povezave. V tem času jedro postavi proces v prekinljivi spanec stanje in vodi druge procese. To je pomembna točka; če bi procesna anketa neprekinjeno izgubljala procesne vire. Jedro je sposobno učinkoviteje uporabljati sistemske vire, tako da blokira proces, dokler ga ne dela.
- Ko v omrežje prispejo novi podatki, omrežna kartica izda prekinitev.
- Ko je omrežna kartica prekinjena, jedro preko gonilnika omrežne kartice bere nove podatke iz omrežne kartice in jih shrani v pomnilnik. (To je treba storiti hitro in se na splošno obravnava v krmilniku prekinitev.)
- Jedro obdela novo prispele podatke in jih poveže z vtičnico. Postopek, ki blokira to vtičnico, bo označen kot izvedljiv, kar pomeni, da je zdaj upravičen do izvajanja. Ni nujno, da se zažene takoj (jedro se lahko odloči, da bo še vedno izvajalo druge procese).
- V svojem prostem času bo jedro zbudilo proces blokiranega spletnega strežnika. (Ker je zdaj izvedljiv.)
- Postopek spletnega strežnika se nadaljuje, kot da čas ni potekel. Njegov blokirni sistemski klic se vrne in obdela vse nove podatke. Nato pojdite na 1. korak.
Imate kaj dodati pojasnilu? Zvok v komentarjih. Želite prebrati več odgovorov drugih uporabnikov tehnologije Stack Exchange? Oglejte si celotno nit razprave tukaj.