
Il tire son nom de "protégé" de ses nombreuses fonctions de protection. Le terme protection signifie ici "protection contre les bugs ou les programmes malveillants". Eh oui, en mode protégé, les programmes sont soumis à des règles très strictes, qui ne sont pas réelement astreignante pour des programmeurs normaux, mais qui sont terribles dès que le programme tente de sortir de l'espace qui lui est reservé. Pourquoi donc ? Le mode protégé à été conçu pour permettre l'exstence de systèmes multi-tâches stables. Imaginons qu'une des tâches commette une "erreur de protection", le système d'exploitation la ferme, et le système de plante pas - du moins en théorie...
Par exemple, il est n'est pas possible à une tâche de faire des E/S sur certains ports, donc de modifier anarchiquement l'état du materiel, ce qui pourrait entrainer un plantage - seul le système d'exploitation est autorisé à le faire, mais il a pour mission de contrôler scrupuleusement le processus... (et là, on voit que Windows 95 a été fait légèrement à la va-vite...). Il n'est pas non plus possible de lire des portions de mémoires reservés à d'autres programmes ou au système d'exploitation, question de confidentialité et de sécurité.
Ce qui est très appréciable, c'est que toutes les erreurs qui pourraient survenir déclenchent ce que l'on nomme une Exception, c'est à dire une interruption déclenchée par le processeur, interceptée par le système d'exploitation, qui prend les mesures nécessaires (fermer l'application en question). Conséquence immédiate : les plantages, c'est du passé !
A partir du 286, le processeur dispose d'instructions pour la commutation de tâche, cette opération devient dès lors très simple à programmer et, de plus, fiable. Ces processeurs comportent aussi une gestion automatique de la mémoire virtuelle, pas très interessante sur 286, mais relativement performante sur 386 (les détails en seront explicités dans la page dédiée à la mémoire virtuelle - des qu'elle sera réalisée...). Le processeur à aussi la capacité de simuler autant de processeurs en mode réel que l'on souhaite, avec chacun leur 1er Mo de mémoire. (c'est ce qui se passe lorsqu'on lance un programme dans une boite DOS sous Windows. Les programmes executés ont l'impression de s'executer sur un processeur indépendant, avec une mémoire indépendante).
Une solution possible est de commuter en mode réel à chaque fois que l'on souhaitait appeller le BIOS ou le DOS. Sur 286, c'était très lent :2000 à 3000 commutation réel-protégé par seconde au maximum, et de plus, pour des raisons obscures, les ingénieurs d'Intel n'avaient pas prévu la fonction permettant de quitter le mode protégé pour revenir au mode réel (!)... On pouvait cependant y parvenir par un petit bricolage assez périlleux.
Par contre, ce manque cruel a été comblé sur les 386. La commutation devient dès lors très simple et bien plus rapide, ce qui a rendu cette solution acceptable (c'est le principe des DOS-Extenders, très utilisés pour disposer de beaucoup de RAM sous DOS. Plusieurs pages leur sont consacrées dans ce guide, et nous en réaliserons un).
Un autre inconvenient réside dans le fait que les routines du BIOS ne sont pas multi-tâches, c'est à dire que le BIOS attend que le disque ait finit de lire ou d'écrire avant de redonner le contrôle au programme qui l'a appelé. L'interêt du multi-tâche est que, pendant ce temps où le processeur attend que le disque-dur ou n'importe quel autre périphérique lui fournisse des données, d'autres programmes puissent s'executer. On réduit ainsi la perte de temps dûe à la lenteur des stockages de masse, on augmente le rendement des processeurs, et on diminue l'attente des utilisateurs. Les routines du BIOS ne permettent pas cette économie, ce qui exclut la possibilité de les appeler dans un système multi-tâches. La seule solution pour obtenir un véritable multi-tâche est d'écrire soi-même des pilotes en mode protégé pour acceder aux disques durs, et aux autres périphériques. (Ce qui n'est pas une mince affaire.)
OS2 / WARP et les premières versions de Windows sont nés dans le contexte. Pourtant, le DOS ne supporte ni le mode protégé, ni le multi-tâches, ce qui freina considérablement le développement d'applications tirant partie de ces fonctionnalités. Tous les programmeurs n'avaient cependant pas besoin d'une plate-forme multi-tâche complète, mais beaucoup désiraient pouvoir utiliser plus de 1 Mo de mémoire sous DOS. Pour tous ceux-là, on développa les DOS-extenders. Ce sont des programmes qui ont pour mission d'en executer d'autres, mais en mode protégé, et qui s'occupent de toutes les tâches de gestion de la mémoire, de la mémoire virtuelle, et de servir d'interface entre le BIOS et le programme étendu. Ils furent très employés jusqu'à ce que des systèmes d'exploitation complètement multi-tâche et en mode protégé (par exemple, Windows à partir de la version 95 ou Linux) les supplantent.
