Epoll

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 30. marraskuuta 2013 tarkistetusta versiosta . tarkastukset vaativat 13 muokkausta .

Epoll (tapahtumakysely) on multipleksoitu I/O-sovellusliittymä, jonka Linux tarjoaa sovelluksille. Sovellusliittymän avulla sovellukset voivat valvoa useita avoimia tiedostokuvauksia (jotka voivat olla tiedostoja, laitteita tai pistokkeita, mukaan lukien verkkopistokkeet) nähdäkseen, onko laite valmis jatkamaan syöttämistä (tulostusta). Epoll oli tarkoitettu POSIXin määrittämien select()ja kutsujen tehokkaammaksi korvaajaksi . Epoll voi tarjota tehokkaamman mekanismin sovelluksille, jotka käsittelevät suurta määrää samanaikaisesti avoimia yhteyksiä O(1)-monimutkaisuudella verrattuna tavalliseen O(n)-mekanismiin. Epoll on samanlainen kuin Kqueue- järjestelmäpoll()FreeBSD ja se on myös ydinobjekti, joka on tarkoitettu toimimaan käyttäjätilassa tiedostokuvaajan muodossa .

Analogisesti "epoll" kutsutaan usein muiksi samanlaisiksi ratkaisuiksi, jotka ovat metodologialtaan samanlaisia.

valitse/poll ongelma

Käyttääkseen valintaa tai kyselyä sovelluksen on välitettävä ytimelle täydellinen luettelo kaikista tiedostokuvauksista, joissa se odottaa tietojen näkyvän. ja ytimen tulee puolestaan ​​tarkistaa kunkin läpäisyn elementin kuvaajien tila ja muodostaa rakenne, joka kuvaa kunkin hyväksytyn kuvaajan tilaa. Tämä lähestymistapa ei aiheuta monia ongelmia kymmenien tai satojen kuvaajien suhteen. Suorituskyky suurissa verkoissa kuitenkin laskee huomattavasti.

Kuvaus epoll-sovellusliittymästä

Linux tarjoaa seuraavat API-kutsut:

Toimintojen prototyypit

int epoll_create(int size);
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);

Kuinka se toimii: Kun sovellus on lisännyt kuvaajia kelloon ja kutsunut epoll_wait(), kun mikä tahansa kuvaaja on valmis (tietojen ilmestyminen, puskurin tyhjennys jne.), ydin palauttaa sovelluksen osoitteesta epoll_wait luettelon tiedostokuvauksista, jotka ovat valmiita töihin. Jos jotkin kuvaajat ovat valmiita käytettäviksi ennen epoll_wait-kutsua, ne merkitään vastaavasti, ja seuraavan kerran epoll_wait-kutsussa ohjaus palautetaan sovellukselle välittömästi ja tiedostokuvaajat ovat valmiina.

Tapahtumat, joita voidaan seurata epollin avulla:

Toimintatavat

epollin avulla voit työskennellä kahdessa tilassa:

Jos sovellus luki vain osan luettavasta tiedosta tiedostokuvauksesta, niin seuraavassa kutsussa:

Hallinto

Vuodesta 2.6.28 lähtien /proc/sys/fs/epoll/max_user_watches määrittää tiedostokuvaajien enimmäismäärän, joita käyttäjä voi katsella.

Lähteet