Función Epoll 7 C

Función Epoll 7 C
El lenguaje C es un lenguaje muy vasto cuando se trata del uso de diferentes tecnologías o API. También es muy útil cuando queremos usar la programación de socket. Solo así, se le ocurre las funciones de Epoll 7. Encuesta (2) y la API EPOLLS observan los diversos descriptores de documentos para determinar si la E/S es factible en cada uno de ellos. La API de EPOLL se extiende muy bien con los grandes números de descriptores de documentos monitoreados y puede usarse como una puerta de enlace promutida por nivel.

La entidad Epoll, un modelo de información en el kernel que se puede ver desde el espacio de usuario como envoltorio para dos conjuntos, sirve como la idea fundamental de la API EPOLLL. Dentro de esta guía, discutiremos el uso de la función Epoll en el idioma C.

  • Lista de intereses: El grupo de intereses, también conocido como la colección Epoll, es la colección de descriptores de documentos que el procedimiento ha indicado que está interesado en realizar un seguimiento de. La colección de descriptores de documentos que parecen estar "listos" para la E/S se conoce como la cola All-Set.
  • Lista lista: La colección de identificadores de documentos que están "preparados" para E/S se conoce como la "Lista de listas."Los identificadores de documentos en la lista de intereses son un subgrupo de (o, más correctamente, una colección de punteros para) la lista lista. El núcleo utiliza operaciones de E/S en dichos descriptores de documentos para completar periódicamente la lista lista.

Las siguientes funciones del sistema están disponibles para construir y administrar un objeto Epoll:

  • EPOLL_CREATE (2): la función Epoll Create (2) inicia una nueva instancia del servicio EPOLL y devuelve un descriptor de archivo. (El Epoll más moderno Create1 (2) se expande en Epoll Create (2) (Capacidad).)
  • EPOLL_CTL (2): contribuye con las cosas a la lista de intereses del objeto Epoll y luego se usa para inscribir el interés en descriptores de documentos específicos.
  • Epoll_wait (2): si no hay actividades de E/S presentes en este momento, Epoll Wait (2) bloquea el hilo que lo llamó. (Esta llamada del sistema puede verse como recopilar cosas de la lista de listos del objeto Epoll.)

Desencadenado por nivel y activado por el borde

Los comportamientos activados por el borde (ET) y activados por nivel (LT) son posibles para la interfaz de circulación incidente de Epoll (LT). Las diferencias de los dos métodos se pueden resumir de la siguiente manera. Supongamos que los siguientes pasos:

  1. El lado de lectura del descriptor de documentos de una tubería (RFD) está inscrito en el objeto Epoll.
  2. Un total de 2 kb de contenido escribiendo en la pared de escritura del contenedor por un autor de tuberías.
  3. Se realiza una solicitud para Epoll Wait (2), y RFD, se devuelve un mango de archivo preparado,.
  4. Del RFD, el lector de tuberías leerá 1 kilobyte de contenido.
  5. Se realiza una llamada de función epoll_wait (2).

La solicitud a EPOLL_WAIT (2) realizada en el Paso 5 probablemente se detendrá si el mango del documento RFD se ha asignado al Protocolo EPOLL con la señal EPOLLET (activada por el borde). Mientras tanto, el socio remoto podría anticipar una reacción dependiendo del contenido que ya suministró. Esto se debe a que la opción activada por el borde solo envía señales cada vez que el descriptor del documento observado experimenta modificaciones.

Por lo tanto, la función de la persona que llama puede tener que suspenderse para una determinada información que ya está en la memoria caché del búfer en la fase 5. En el ejemplo mencionado anteriormente, la escritura en 2 puede desencadenar una actividad que se creará en el RFD, y el incidente se recibirá en 3. La llamada a epoll_wait (2) en el paso 5 puede quedarse atascada porque la actividad de lectura en el paso 4 no utilizó toda la información del búfer.

Para evitar que una lectura o escritura de estancamiento se agote un trabajo que está administrando los diversos descriptores de archivos, un programa que utiliza la opción Epollet debe ser utilizar los descriptores de documentos que no son bloqueados. El siguiente es un procedimiento recomendado para usar la interfaz Epoll como una interfaz activada por el borde (EPOLLET):

  • Descriptores de documentos que no son bloqueados y
  • Justo después de leer (2) o escribir (2), entregue a Eagain yendo a esperar una acción.

Epoll, por otro lado, es solo una versión más rápida de la encuesta (2) y puede usarse en todas partes, la encuesta (2) se usa ya que tiene la lógica idéntica cada vez que se considera un protocolo activado por el nivel (el estándar siempre que Epollet sea no dado). La función de llamadas tiene la opción de suministrar la señal de EpolloneShot para instruir al EPOLL que cierre el descriptor de archivo vinculado al recibir una ocurrencia con EPOLL_WAIT. Mientras tanto, incluso con Epoll activado por el borde, se pueden crear muchas acciones al recepción de los diversos conjuntos de información (2). La persona que llama debe redistribuir el descriptor del documento con el EPOLL_CTL (2) y EPOLL_CTL_MOD siempre que se proporcione el indicador de EpOlLOnShot.

Ejemplo:

Aunque la lógica de Epoll cuando se usa como API de umbral es idéntica a las de la encuesta (2), el uso de comportamiento activado por el borde requiere una mayor explicación para evitar los retrasos en la cola de eventos del programa. El oyente en esta ilustración es un zócalo sin bloqueo sobre el cual se invoca la función de escucha (2). Antes de que Eagain sea administrada por la función Read (2) o Write (), el método usa la función fd () para mantener el nuevo descriptor de archivo listo (2). Una aplicación de máquina de estado basada en eventos también podría guardar su estado actual después de recibir Eagain para que pueda reanudar la lectura o la escritura en el punto anterior cuando se llama a FD () nuevamente. Mira el código fijo aquí:

Para mejorar la eficiencia, el descriptor del archivo solo se puede agregar una vez dentro de la interfaz EPOLL (EPOLL CTL ADD) designando (Epollin | Epollout) como una interfaz activada por el borde. Al ejecutar el Epoll CTL (2) con Epoll CTL MOD, puede evitar el cambio constante entre Epollin y Epollout. El código restante para esta ilustración se adjunta en la siguiente imagen:

Conclusión:

Se trata del uso de la función Epoll 7 C en el Ubuntu 20.04 Sistema operativo Linux para realizar la programación de socket. Discutimos cómo se puede usar una función Epoll () 7 C para verificar la viabilidad de los diversos descriptores de archivos para determinar si la entrada y la salida que contienen son viables o no, tanto del lado del servidor como del cliente.