Epoll (original) (raw)
epoll是Linux核心的可擴展I/O事件通知機制。於Linux 2.5.44首度登場,它設計目的旨在取代既有POSIX select(2)與poll(2)系統函式,讓需要大量操作檔案描述子的程式得以發揮更優異的性能(舉例來說:舊有的系統函式所花費的時間複雜度為O(n),epoll的時間複雜度O(log n))。epoll 实现的功能与 poll 类似,都是监听多个文件描述符上的事件。 epoll與FreeBSD的kqueue類似,底層都是由可組態的作業系統核心物件建構而成,並以檔案描述符(file descriptor)的形式呈現於使用者空間。epoll 通過使用紅黑樹(RB-tree)搜索被監視的檔案描述符(file descriptor)。 在 epoll 实例上注册事件时,epoll 会将该事件添加到 epoll 实例的红黑树上并注册一个回调函数,当事件发生时会将事件添加到就绪链表中。
Property | Value |
---|---|
dbo:abstract | epoll is a Linux kernel system call for a scalable I/O event notification mechanism, first introduced in version 2.5.44 of the Linux kernel. Its function is to monitor multiple file descriptors to see whether I/O is possible on any of them. It is meant to replace the older POSIX select(2) and poll(2) system calls, to achieve better performance in more demanding applications, where the number of watched file descriptors is large (unlike the older system calls, which operate in O(n) time, epoll operates in O(1) time). epoll is similar to FreeBSD's kqueue, in that it consists of a set of user-space functions, each taking a file descriptor argument denoting the configurable kernel object, against which they cooperatively operate. epoll uses a red–black tree (RB-tree) data structure to keep track of all file descriptors that are currently being monitored. (en) Epoll (event poll) — API мультиплексированного ввода-вывода, предоставляемого Linux для приложений. API позволяет приложениям осуществлять мониторинг нескольких открытых файловых дескрипторов (которые могут быть файлами, устройствами или сокетами, в том числе сетевыми), для того, чтобы узнать, готово ли устройство для продолжения ввода (вывода). Epoll планировался как более эффективная замена вызовам select и poll, определёнными в POSIX. Epoll может предоставить более эффективный механизм для приложений, обрабатывающих большое количество одновременно открытых соединений — со сложностью O(1) в отличие от стандартного механизма, обладающего сложностью O(n). Epoll аналогичен системе Kqueue из FreeBSD и также представляет собой объект ядра, предоставляемый для работы в пространстве пользователя в виде файлового дескриптора. По аналогии "epoll" часто называют другие подобные решения, схожие по методике. (ru) epoll是Linux核心的可擴展I/O事件通知機制。於Linux 2.5.44首度登場,它設計目的旨在取代既有POSIX select(2)與poll(2)系統函式,讓需要大量操作檔案描述子的程式得以發揮更優異的性能(舉例來說:舊有的系統函式所花費的時間複雜度為O(n),epoll的時間複雜度O(log n))。epoll 实现的功能与 poll 类似,都是监听多个文件描述符上的事件。 epoll與FreeBSD的kqueue類似,底層都是由可組態的作業系統核心物件建構而成,並以檔案描述符(file descriptor)的形式呈現於使用者空間。epoll 通過使用紅黑樹(RB-tree)搜索被監視的檔案描述符(file descriptor)。 在 epoll 实例上注册事件时,epoll 会将该事件添加到 epoll 实例的红黑树上并注册一个回调函数,当事件发生时会将事件添加到就绪链表中。 (zh) |
dbo:wikiPageExternalLink | http://www.xmailserver.org/linux-patches/nio-improve.html http://man7.org/linux/man-pages/man7/epoll.7.html |
dbo:wikiPageID | 28379436 (xsd:integer) |
dbo:wikiPageLength | 5538 (xsd:nonNegativeInteger) |
dbo:wikiPageRevisionID | 1080673708 (xsd:integer) |
dbo:wikiPageWikiLink | dbr:Anonymous_pipe dbc:Events_(computing) dbr:Input/output_completion_port dbr:FreeBSD dbr:Libevent dbr:Linux_kernel dbr:Kqueue dbr:POSIX dbr:Interrupt dbc:Linux_kernel_features dbr:Big_O_notation dbr:Red–black_tree dbr:File_descriptor dbr:Bryan_Cantrill dbr:System_call dbr:Select_(Unix) dbr:User-space dbr:Event_port |
dbp:wikiPageUsesTemplate | dbt:Lowercase_title dbt:Portal dbt:Reflist dbt:Short_description dbt:Linux_kernel |
dct:subject | dbc:Events_(computing) dbc:Linux_kernel_features |
gold:hypernym | dbr:Call |
rdf:type | dbo:Work yago:WikicatLinuxKernelFeatures yago:Abstraction100002137 yago:Cognition100023271 yago:Concept105835747 yago:Content105809192 yago:Feature105849789 yago:Idea105833840 yago:Property105849040 yago:PsychologicalFeature100023100 |
rdfs:comment | epoll是Linux核心的可擴展I/O事件通知機制。於Linux 2.5.44首度登場,它設計目的旨在取代既有POSIX select(2)與poll(2)系統函式,讓需要大量操作檔案描述子的程式得以發揮更優異的性能(舉例來說:舊有的系統函式所花費的時間複雜度為O(n),epoll的時間複雜度O(log n))。epoll 实现的功能与 poll 类似,都是监听多个文件描述符上的事件。 epoll與FreeBSD的kqueue類似,底層都是由可組態的作業系統核心物件建構而成,並以檔案描述符(file descriptor)的形式呈現於使用者空間。epoll 通過使用紅黑樹(RB-tree)搜索被監視的檔案描述符(file descriptor)。 在 epoll 实例上注册事件时,epoll 会将该事件添加到 epoll 实例的红黑树上并注册一个回调函数,当事件发生时会将事件添加到就绪链表中。 (zh) epoll is a Linux kernel system call for a scalable I/O event notification mechanism, first introduced in version 2.5.44 of the Linux kernel. Its function is to monitor multiple file descriptors to see whether I/O is possible on any of them. It is meant to replace the older POSIX select(2) and poll(2) system calls, to achieve better performance in more demanding applications, where the number of watched file descriptors is large (unlike the older system calls, which operate in O(n) time, epoll operates in O(1) time). (en) Epoll (event poll) — API мультиплексированного ввода-вывода, предоставляемого Linux для приложений. API позволяет приложениям осуществлять мониторинг нескольких открытых файловых дескрипторов (которые могут быть файлами, устройствами или сокетами, в том числе сетевыми), для того, чтобы узнать, готово ли устройство для продолжения ввода (вывода). Epoll планировался как более эффективная замена вызовам select и poll, определёнными в POSIX. Epoll может предоставить более эффективный механизм для приложений, обрабатывающих большое количество одно (ru) |
rdfs:label | Epoll (en) Epoll (ru) Epoll (zh) |
owl:sameAs | freebase:Epoll yago-res:Epoll wikidata:Epoll dbpedia-ru:Epoll dbpedia-zh:Epoll https://global.dbpedia.org/id/2rGGq |
prov:wasDerivedFrom | wikipedia-en:Epoll?oldid=1080673708&ns=0 |
foaf:isPrimaryTopicOf | wikipedia-en:Epoll |
is dbo:wikiPageWikiLink of | dbr:Input/output_completion_port dbr:Comparison_of_WebSocket_implementations dbr:Observer_pattern dbr:Libevent dbr:Libuv dbr:Kqueue dbr:Poll_(Unix) dbr:AiScaler dbr:Red–black_tree dbr:File_descriptor dbr:Knot_DNS dbr:Select_(Unix) dbr:IRCd |
is foaf:primaryTopic of | wikipedia-en:Epoll |