Tous les appels système bloquent-ils?


13

Je lisais un article qui décrit le basculement entre l'espace utilisateur et l'espace noyau qui se produit lors d'un appel système. L'article dit

Une application attend la fin de l'appel système avant de reprendre l'exécution en mode utilisateur.

Maintenant, jusqu'à présent, je supposais que certains appels système le sont blocking, tandis que d'autres le sont non-blocking. Avec le commentaire ci-dessus, je suis maintenant confus. Est-ce à dire que tous les appels système bloquent ou ai-je mal compris un concept?


@Ankit Veuillez expliquer pourquoi vous avez annulé la modification. Notez que l'édition pour améliorer les détails d'un article est une politique standard sur SE et n'implique pas une critique implicite.
Raphael

@Raphael Désolé frère! Je jouais juste et j'ai poussé le retour par erreur et je n'ai pas pu trouver la version précédente. En fait, j'ai vraiment aimé votre montage. : P
Ankit

@Raphael Je l'ai récupéré. En fait, j'ai été dupé par le système de révision (je n'ai pas reconnu que «l'article» était un lien). Merci pour les modifications.
Ankit

@Ankit: Heureux d'avoir pu aider!
Raphael

Réponses:


15

Vous semblez surcharger le terme «blocage».

Tout changement de contexte que vous effectuez vers le noyau, vous devez attendre qu'il revienne au mode utilisateur avant que votre application puisse continuer. Ce n'est pas ce qu'on appelle généralement le «blocage».

Dans la conception actuelle du noyau, les appels de blocage sont des appels où le noyau ne renvoie que lorsque la demande est terminée (ou qu'une erreur se produit). Ces appels prennent généralement plus de temps et conduisent généralement à la planification de votre processus. Par exemple, de nombreux appels IO bloquent.

Il existe des appels système qui fournissent des E / S asynchrones et ils ne sont pas bloquants. Notez qu'il y a toujours un changement de contexte qui se produit ici, seule l'application doit prendre en charge la nature asynchrone de l'appel.

Le document semble vouloir supprimer ce changement de contexte (appels système sans exception) et essayer de rendre tous les appels asynchrones.


C'est en fait un document de recherche. Voici l'URL: eecg.toronto.edu/~livio/papers/flexsc-osdi10.pdf
Ankit

2
@Ankit: veuillez modifier la question et l'inclure ici.
Aryabhata
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.