¿Están bloqueando todas las llamadas del sistema?

13

Estaba leyendo un artículo que describe el cambio entre el espacio de usuario y el espacio de kernel que ocurre en una llamada al sistema. El artículo dice

Una aplicación espera la finalización de la llamada del sistema antes de reanudar la ejecución en modo de usuario.

Ahora, hasta ahora estaba asumiendo que algunas llamadas al sistema son blocking, mientras que otras lo son non-blocking. Con el comentario anterior, ahora estoy confundido. ¿Significa esto que todas las llamadas al sistema están bloqueando o no he entendido bien un concepto?

Ankit
fuente
@Ankit Explique por qué retiró la edición. Tenga en cuenta que editar para mejorar los detalles de una publicación es una política estándar en SE y no implica una crítica implícita.
Raphael
@Raphael Lo siento hermano! Estaba jugando y empujé la reversión por error y luego no pude encontrar la versión anterior. De hecho, me gustó mucho tu edición. : P
Ankit
@Raphael Lo recuperé. En realidad, fui engañado por el sistema de revisión (no reconocí que 'artículo' era un enlace). Gracias por las ediciones.
Ankit
@Ankit: ¡Me alegro de poder ayudar!
Raphael

Respuestas:

15

Parece que estás sobrecargando el término 'bloqueo'.

Cualquier cambio de contexto que realice al kernel, debe esperar a que vuelva al modo de usuario antes de que su aplicación pueda continuar. Esto no es lo que generalmente se llama 'bloqueo'.

En el diseño actual del kernel, las llamadas de bloqueo son llamadas en las que el kernel regresa solo cuando la solicitud está completa (o ocurre un error). Estas llamadas generalmente demoran más tiempo y generalmente hacen que su proceso se programe. Por ejemplo, muchas llamadas IO están bloqueando.

Hay llamadas al sistema que proporcionan E / S asíncronas y no son de bloqueo. Tenga en cuenta que todavía hay un cambio de contexto que ocurre aquí, solo la aplicación tiene que ocuparse de la naturaleza asincrónica de la llamada.

El documento parece apuntar a eliminar este cambio de contexto de un lado a otro (llamadas al sistema sin excepción) e intentar hacer que todas las llamadas sean asíncronas.

Aryabhata
fuente
En realidad es un trabajo de investigación. Aquí está la URL: eecg.toronto.edu/~livio/papers/flexsc-osdi10.pdf
Ankit
2
@Ankit: edite la pregunta e inclúyala allí.
Aryabhata