29Jul

Hvordan lytter webservere til nye anmodninger?

click fraud protection

Når du lærer om webservere og hvordan de virker, kan du være nysgerrig, hvis de konstant lytter efter anmodninger, eller hvis de venter, indtil de modtager en anmodning om at gå i aktion. Med det for øje har dagens SuperUser Q & A-indlæg svarene for at tilfredsstille en læsers nysgerrighed.

Dagens Spørgsmål &Svar session kommer til os høflighed af SuperUser-en underafdeling af Stack Exchange, en community-drevet gruppe af Q & A-websteder.

Skærmbillede høflighed af xmodulo / Linux Screenshots( Flickr).

Spørgsmål

SuperUser-læseren user2202911 ønsker at vide, hvordan webservere lytter efter nye anmodninger:

Jeg forsøger at forstå de dybere niveauoplysninger om, hvordan webservere fungerer. Jeg vil gerne vide, om en server, f.eks. Apache, vedvarende poller for nye anmodninger, eller hvis det virker ved en slags afbrydelsessystem. Hvis det er en afbrydelse, hvad gnister forstyrrelsen? Er det netværkskortdriveren?

Hvordan lytter en webserver til nye anmodninger?

instagram viewer

Svaret

SuperUser bidragyder Greg Bowser har svaret for os:

Det korte svar er en form for afbrydelsessystem. I det væsentlige bruger de blokering af I / O, hvilket betyder at de sover( blok), mens de venter på nye data.

  1. Serveren opretter et lytteudtag og blokerer derefter, mens de venter på nye forbindelser. I løbet af denne tid sætter kernen processen i en afbrydelig søvn tilstand og kører andre processer. Dette er et vigtigt punkt;At have procesundersøgelsen løbende vil spilde CPU-ressourcer. Kernen er i stand til at bruge systemressourcerne mere effektivt ved at blokere processen, indtil der er arbejde for det at gøre.
  2. Når der opstår nye data på netværket, udløser netværkskortet en afbrydelse.
  3. Da der ses en afbrydelse fra netværkskortet, læser kernen via netværkskortdriveren de nye data fra netværkskortet og gemmer det i hukommelsen.(Dette skal ske hurtigt og håndteres generelt inde i afbryderhåndtereren.)
  4. Kernen behandler de nyligt ankomne data og forbinder det med en stikkontakt. En proces, der blokerer på stikkontakten, markeres løbende, hvilket betyder, at det nu er berettiget til at køre. Det kører ikke nødvendigvis øjeblikkeligt( kernen kan beslutte at køre andre processer endnu).
  5. I sin fritid vil kernen vække den blokerede webserverproces.(Da det nu kan løbes.)
  6. Webserverprocessen fortsætter med at køre som om der ikke er tid. Dens blokering af systemopkald vender tilbage, og det behandler nye data. Så gå til trin 1.

Har du noget at tilføje til forklaringen? Lyde af i kommentarerne. Vil du læse flere svar fra andre tech-savvy Stack Exchange brugere? Tjek den fulde diskussionstråd her.