Hjemmeside » hvordan » Hvordan lytter webservere etter nye henvendelser?

    Hvordan lytter webservere etter nye henvendelser?

    Når du lærer om webservere og hvordan de fungerer, kan du være nysgjerrig hvis de stadig lytter etter forespørsler, eller hvis de venter til de mottar en forespørsel om å gå i gang. Med det i bakhodet har dagens SuperUser Q & A-post svarene for å tilfredsstille en lesers nysgjerrighet.

    Dagens Spørsmål & Svar-sesjon kommer til oss med høflighet av SuperUser-en underavdeling av Stack Exchange, en fellesskapsdrevet gruppering av Q & A-nettsteder.

    Skjermbilde høflighet av xmodulo / Linux Skjermbilder (Flickr).

    Spørsmålet

    SuperUser leser user2202911 ønsker å vite hvordan webservere lytter etter nye forespørsler:

    Jeg prøver å forstå detaljene i "dypere nivå" av hvordan webservere fungerer. Jeg vil vite om en server, for eksempel Apache, kontinuerlig poller for nye forespørsler, eller hvis det virker av en slags avbruddssystem. Hvis det er en avbrudd, hva er gnist avbrudd? Er det nettverkskortdriveren?

    Hvordan lytter en webserver til nye forespørsler?

    Svaret

    SuperUser-bidragsyter Greg Bowser har svaret for oss:

    Det korte svaret er en slags avbruddssystem. I hovedsak bruker de blokkering av I / O, noe som betyr at de sover (blokk) mens de venter på nye data.

    1. Serveren lager en lytteuttak og blokkerer da mens du venter på nye tilkoblinger. I løpet av denne tiden setter kjernen prosessen inn i en avbrytbar søvn angi og kjører andre prosesser. Dette er et viktig poeng; Å ha prosessundersøkelsen vil kontinuerlig kaste bort CPU-ressurser. Kjernen er i stand til å bruke systemressursene mer effektivt ved å blokkere prosessen til det er arbeid for det å gjøre.
    2. Når nye data kommer inn på nettverket, utløser nettverkskortet et avbrudd.
    3. Ser at det er en avbrudd fra nettverkskortet, leser kjernen, via nettverkskortdriveren, de nye dataene fra nettverkskortet og lagrer det i minnet. (Dette må gjøres raskt og håndteres vanligvis inne i avbruddshandleren.)
    4. Kjernen behandler de nylig ankomne dataene og forbinder den med en stikkontakt. En prosess som blokkerer på sokkelen vil bli merket runnable, noe som betyr at den nå er kvalifisert til å kjøre. Det kjører ikke nødvendigvis umiddelbart (kjernen kan bestemme seg for å kjøre andre prosesser fremdeles).
    5. På fritiden vil kjernen våkne opp den blokkerte webserverprosessen. (Siden det er nå runnable.)
    6. Webserverprosessen fortsetter å utføre som om ingen tid er gått. Den blokkerende systemanropet returnerer og det behandler nye data. Deretter går du til trinn 1.

    Har du noe å legge til forklaringen? Lyder av i kommentarene. Vil du lese flere svar fra andre tech-savvy Stack Exchange-brukere? Sjekk ut hele diskusjonstråden her.