58 votes

Qu'est-ce que la préemption / Qu'est-ce qu'un noyau pré-possible? À quoi ça sert?

Expliqué dans vos propres mots, qu'est-ce que la préemption et que signifie-t-elle pour un noyau (linux)?

Quels sont les avantages et les inconvénients d’avoir un noyau préemptible?

66voto

shoosh Points 34322

Le multitâche préemptif - l'Exécution de plusieurs processus/threads sur un seul processeur, créant l'illusion qu'elles s'exécutent simultanément alors qu'en réalité, chacun est alloué petit multiplexé tranches de temps à s'exécuter dans les. Un processus est "préempté" où il est prévu de l'exécution et attend la prochaine tranche de temps à s'exécuter dans les.

Un noyau préemptif est celui qui peut être interrompu au milieu d'une exécution de code - par exemple, en réponse à un appel système - pour faire d'autres choses et exécuter d'autres threads, possibles qui ne sont pas dans le noyau.
Le principal avantage dans un noyau préemptif, c'est que sys-appels ne pas bloquer l'ensemble du système. si un sys-appel prend beaucoup de temps pour finir alors qu'il ne veut pas dire que le noyau peut rien faire d'autre en ce moment.
Le principal inconvénient est que cela introduit plus de complexité pour le code du noyau, d'avoir à gérer de plus de cas, effectuer plus fine de verrouillage ou de l'utilisation de lock-moins de structures et algorithmes.

15voto

BobbyShaftoe Points 19925

Vous devriez vraiment utiliser le terme de "préemption." Il existe différents types de préemption. Essentiellement, il est très simple et vous avez probablement comprendre ce par un autre nom. Préventive système d'exploitation peut changer de contexte entre le mode utilisateur threads sans aucune programmation spéciale à la préemption de l'application. Cela permet pour le multitâche. Un OS peut passer et de revenir à un processus et cette commutation est essentiellement trasnparent. Il y a aussi une chose telle que le noyau préemptif, qui permet en mode noyau fils préemption (la plupart des systèmes d'exploitation ne permettent pas de cela, mais il est nécessaire pour certaines applications telles que les systèmes temps réels). Remarque, c'est une explication simplifiée.

7voto

MarkR Points 37178

D'autres ont suffisamment expliqué ce qu'est un preemptible kernel est.

Qu'est-ce que cela?

Pour la plupart les avantages sont les suivants:

  • La faible latence sur la non-systèmes SMP - généralement utilisé en temps réel des systèmes ou pour d'autres choses où la latence est importante (audio, vidéo, applications, peut-être)
  • L'enseignement des développeurs du noyau qui n'ont pas les systèmes SMP comment écrire du code correct pour SMP

Avec un non-preemptible kernel, sur un seul processeur, il est possible pour les développeurs du noyau pour être paresseux et de sortir sans verrouillage, la plupart du temps - bien sûr, c'est un gros FAIL sur les systèmes SMP. Preemptible noyaux leur permettre d'obtenir cette douleur sans plus de cœurs.

4voto

Jeff Points 1316

La préemption signifie que le système d'exploitation prend en charge plusieurs tâches (un élément de code distinct et autonome) et qu'il bascule d'une tâche à une autre. Lorsqu'une tâche est interrompue, on parle de "préemptage". Les systèmes d’exploitation modernes supportent cela - mais ce n’est pas nécessaire pour les systèmes embarqués simples, par exemple. La surcharge de la commutation de tâches ne vaut pas toujours la peine.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X