[go: nahoru, domu]

Aller au contenu

« Multitâche préemptif » : différence entre les versions

Un article de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
→‎Historique : faute d'orthographe
mot en trop
Ligne 23 : Ligne 23 :
Les premiers systèmes d'exploitation Windows de [[Microsoft]] ([[Microsoft Windows 3.x|Windows 3.1]]) étaient des systèmes collaboratifs. [[Microsoft Windows 95|Windows 95]], [[Microsoft Windows 98|Windows 98]] et [[Microsoft Windows Me|Windows Me]], s'ils adoptent le noyau [[Windows API|Win32]] qui pourrait les classer parmi les systèmes préemptifs, conservent néanmoins, pour raison de compatibilité ascendante avec Windows 3.1, un mode coopératif dans lequel ils basculent dès qu'une application 16 bits est exécutée. Ce mode de fonctionnement rend ces systèmes d'exploitation peu fiables, le système ne pouvant pas interrompre une tâche fautive.
Les premiers systèmes d'exploitation Windows de [[Microsoft]] ([[Microsoft Windows 3.x|Windows 3.1]]) étaient des systèmes collaboratifs. [[Microsoft Windows 95|Windows 95]], [[Microsoft Windows 98|Windows 98]] et [[Microsoft Windows Me|Windows Me]], s'ils adoptent le noyau [[Windows API|Win32]] qui pourrait les classer parmi les systèmes préemptifs, conservent néanmoins, pour raison de compatibilité ascendante avec Windows 3.1, un mode coopératif dans lequel ils basculent dès qu'une application 16 bits est exécutée. Ce mode de fonctionnement rend ces systèmes d'exploitation peu fiables, le système ne pouvant pas interrompre une tâche fautive.


Tous les systèmes d'exploitation modernes (Notamment que [[Mac OS X]] et [[Linux]], [[AmigaOS]] et tous les Windows NT depuis le 3.1 et suivants, 4, [[Microsoft Windows 2000|2000]], [[Microsoft Windows XP|XP]], [[Microsoft Windows Vista|Vista]] et [[Windows 7|7]]) sont des systèmes préemptifs.
Tous les systèmes d'exploitation modernes (Notamment [[Mac OS X]] et [[Linux]], [[AmigaOS]] et tous les Windows NT depuis le 3.1 et suivants, 4, [[Microsoft Windows 2000|2000]], [[Microsoft Windows XP|XP]], [[Microsoft Windows Vista|Vista]] et [[Windows 7|7]]) sont des systèmes préemptifs.


== Voir aussi ==
== Voir aussi ==

Version du 18 octobre 2016 à 15:17

En informatique, la préemption est la capacité d'un système d'exploitation multitâche à exécuter ou stopper une tâche planifiée en cours.

Un ordonnanceur préemptif présente l'avantage d'une meilleure réactivité du système et de son évolution, mais l'inconvénient vient des situations de compétition (lorsque le processus d'exécution accède à la même ressource avant qu'un autre processus (préempté) ait terminé son utilisation).

Principe de fonctionnement

L'ordonnanceur distribue le temps du processeur entre les différents processus. Dans un système préemptif, à l'inverse d'un système collaboratif, l'ordonnanceur peut interrompre à tout moment une tâche en cours d'exécution pour permettre à une autre tâche de s'exécuter.

Dans un système d'exploitation multitâche préemptif, les processus ne sont pas autorisés à prendre un temps non-défini pour s'exécuter dans le processeur. Une quantité de temps définie est attribuée à chaque processus ; si la tâche n'est pas accomplie avant la limite fixée, le processus est renvoyé dans la pile pour laisser place au processus suivant dans la file d'attente, qui est alors exécuté par le processeur. Ce droit de préemption peut tout aussi bien survenir avec des interruptions matérielles.

Certaines tâches peuvent être affectées d'une priorité ; une tâche pouvant être spécifiée comme « préemptible » ou « non préemptible ». Une tâche préemptible peut être suspendue (mise à l'état « ready ») au profit d'une tâche de priorité plus élevée ou d'une interruption. Une tâche non préemptible ne peut être suspendue qu'au profit d'une interruption. Le temps qui lui est accordé est plus long, et l'attente dans la file d'attente plus courte.

Au fur et à mesure de l'évolution des systèmes d'exploitation, les concepteurs ont quitté la logique binaire « préemptible / non préemptible » au profit de systèmes plus fins de priorités multiples. Le principe est conservé, mais les priorités des programmes sont échelonnées.

Pendant la préemption, l'état du processus (drapeaux, registres et pointeur d'instruction) est sauvé dans la mémoire. Il doit être rechargé dans le processeur pour que le code soit exécuté de nouveau : c'est la commutation de contexte.

Un système d'exploitation préemptif conserve en permanence la haute main sur les tâches exécutées par le processeur, contrairement à un système d'exploitation non préemptif, ou collaboratif, dans lequel c'est le processus en cours d'exécution qui prend la main et est seul juge du moment où il la rend. L'avantage le plus évident d'un système préemptif est qu'il peut en permanence décider d'interrompre un processus, principalement si celui-ci échoue et provoque l'instabilité du système.

Historique

Les premiers systèmes préemptifs naissent dans les années 1960 avec les travaux autours de multics. Le premier système préemptif largement diffusé est Unix durant les années 1970, ainsi que toutes les familles de systèmes qui en sont inspirés.

Les premiers systèmes d'exploitation Windows de Microsoft (Windows 3.1) étaient des systèmes collaboratifs. Windows 95, Windows 98 et Windows Me, s'ils adoptent le noyau Win32 qui pourrait les classer parmi les systèmes préemptifs, conservent néanmoins, pour raison de compatibilité ascendante avec Windows 3.1, un mode coopératif dans lequel ils basculent dès qu'une application 16 bits est exécutée. Ce mode de fonctionnement rend ces systèmes d'exploitation peu fiables, le système ne pouvant pas interrompre une tâche fautive.

Tous les systèmes d'exploitation modernes (Notamment Mac OS X et Linux, AmigaOS et tous les Windows NT depuis le 3.1 et suivants, 4, 2000, XP, Vista et 7) sont des systèmes préemptifs.

Voir aussi