> Tech > Windows NT et VMS

Windows NT et VMS

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

La plupart des concepteurs de base de NT avaient travaillé sur et avec VMS chez Digital ; certains directement avec David Cutler d'ailleurs.
Comment, dans ces conditions, auraient-ils pu empêcher leur choix de conception de VMS d'influencer la conception et la mise en oeuvre de NT ?
Beaucoup d'utilisateurs estiment

Windows NT et VMS

que les développeurs de l’OS ont appliqué des
concepts de VMS à  NT, mais la plupart ne soupçonnent pas la ressemblance des deux
systèmes au niveau du kernel (malgré la blague qui circule dans les groupes Usenet
disant qu’en prenant les lettres de l’alphabet suivant chaque lettre du sigle
VMS, on obtient WNT pour Windows NT, tout comme le HAL de 2001 Odyssée de l’espace
reprenait les lettres précédent IBM).Comme UNIX et la plupart des OS du marché,
Windows NT a deux modes d’exécution, comme le montre la Figure 2.
En mode utilisateur, les applications s’exécutent, et OS/2, DOS et POSIX s’exécutent
et exportent des API pour permettre leur utilisation par les applications. Ces
composants ne sont pas privilégiés, car NT les contrôle, tout comme le matériel
sur lequel ils tournent. Sans la permission de NT, ils ne peuvent accéder directement
au matériel.

En outre, les composants et le matériel ne peuvent pas accéder à  leurs espaces
mémoire réciproques, ni à  la mémoire associée au kernel de NT. Les composants
du mode utilisateur doivent demander au kernel l’accès au matériel ou l’allocation
des ressources physiques ou logiques.

Le kernel s’exécute en mode privilégié : il peut directement accéder à  la mémoire
et au matériel. Il consiste en plusieurs sous-systèmes de l’Executive, responsables
de la gestion des ressources, notamment le Gestionnaire des processus, le Gestionnaire
des E/S, le Gestionnaire de mémoire virtuelle, l’Analyseur des références de sécurité
et un microkernel qui traite l’ordonnancement et les interruptions. Le système
charge dynamiquement les pilotes de périphériques, qui sont des composants du
kernel permettant d’interfacer NT avec les différents périphériques. La couche
d’abstraction matérielle (HAL) cache à  NT les complexités propres à  une CPU ou
à  une carte mère spécifique. L’API native de NT est l’API utilisée par les applications
du mode utilisateur pour s’adresser au kernel.
Elle n’est guère documentée, car les applications sont supposées parler Win32,
DOS, OS/2, POSIX ou Win16 et les environnements de ces OS respectifs interagissent
avec le kernel sur le comportement de l’application.VMS ne possède pas différentes
personnalités d’OS, comme c’est le cas de Windows NT, mais le kernel et les sous-systèmes
de son Executive sont à  l’évidence des précurseurs de NT. Les développeurs de
Digital ont écrit le kernel de VMS presque entièrement en langage assembleur VAX.
Pour être portable entre différentes architectures de CPU, le kernel de Windows
NT a été presque entièrement écrit en C par les développeurs de Microsoft. Lors
du développement de NT, ces concepteurs ont, en fait, réécrit VMS en C, en le
nettoyant, le peaufinant, l’optimisant et en ajoutant au fur et à  mesure plus
de fonctionnalité et de nouvelles fonctions.
Cela dit, il ne faudrait pas sous-estimer les efforts accomplis : il ne faut pas
oublier que les concepteurs de NT ont créé une nouvelle API (c’est-à -dire Win32),
un nouveau système de fichier (NTFS), un nouveau sous-système d’interface graphique
et un nouvel environnement d’administration, tout en maintenant la compatibilité
amont avec DOS, OS/2, POSIX et Win16. Néanmoins, la migration des fondements essentiels
de VMS à  Windows NT a été si précise que quelques semaines après la sortie de
Windows NT, les ingénieurs de Digital ont remarqué des similitudes frappantes.

Ces similitudes suffiraient à  remplir un livre. On peut même, en lisant des parties
de VAX/VMS Internals and Data Structures (Digital Press), trouver une description
précise de la structure interne de Windows NT en remplaçant le nom VMS par NT.
Le Tableau 1 énumère quelques termes VMS et leurs traductions NT. Sans entrer
dans les détails, je vais parler de certaines similitudes et différences majeures
entre Windows NT 3.1 et VMS 5.0, la dernière version de VMS que David Cutler et
son équipe pourraient avoir influencée.

Les processus de NT sont pratiquement les mêmes que ceux de VMS (Le Tableau 2
montre une comparaison des processus VMS et NT). Dans Windows NT, tout comme dans
VMS, l’ordonnanceur de processus met en oeuvre 32 niveaux de priorité. C’est toujours
le processus ayant le niveau de priorité le plus élevé qui s’exécute, tandis que
ceux qui ont une priorité équivalente sont programmés dans un modèle d’exécution
à  tour de rôle. Le système considère les 16 niveaux de priorité élevée comme des
priorités en temps réel ou fixes, parce que l’ordonnanceur des processus ne manipule
pas la priorité dans les processus affectés à  cette plage par le système.
Les 16 niveaux de faible priorité (sauf 0, réservé par le système au thread inactif,
qui s’exécute quand rien d’autre ne peut s’exécuter) sont dynamiques, parce que
l’ordonnanceur, souvent sous l’impulsion de drivers de périphériques, augmente
les priorités par réaction à  diverses conditions, comme lorsque le processus reçoit
une entrée provenant d’un périphérique. Cette procédure d’amplification est baptisée
 » boosting « . L’un des aspects déterminants des ordonnanceurs Windows NT et VMS
est de ne jamais abaisser la priorité d’un processus en dessous du niveau de priorité
programmé par l’application.
Pour éviter le problème d’une monopolisation de la CPU, qui se produit lorsqu’un
processus brûle des cycles de CPU sans tenir compte des autres processus du système,
l’ordonnanceur augmente la priorité des processus en manque de ressources, qui
ne se s’exécutent pas depuis une période définie. Les ordonnanceurs de VMS 5.0
et de NT 3.1 supportent tous deux le SMP (symmetric multiprocessing), qui leur
permet d’exécuter des processus simultanément sur différents processeurs afin
d’augmenter les performances des applications.La gestion des processus de Windows
NT et celle de VMS diffèrent fondamentalement en ce sens que les processus NT
contiennent un ou plusieurs threads d’exécution et que l’ordonnanceur de Windows
NT donne du temps CPU aux threads, et non aux processus. Digital n’a introduit
les threads du kernel dans VMS qu’à  partir de la version 7.0 en 1995. Cet ajout
est l’une des nombreuses améliorations apportées par Digital à  VMS depuis la sortie
de Windows NT, qui ressemble beaucoup à  une reprise des capacités de NT.
A son tour Microsoft a ajouté le support des threads en mode utilisateur ultra
léger à  NT 4.0 en 1996, en s’inspirant de l’implémentation, réalisée par VMS,
des threads.Les gestionnaires de mémoire de Windows NT et VMS sont également très
semblables. Les deux OS mettent en oeuvre une cartographie d’adresses virtuelles
répartie par le système entre l’application en cours d’exécution et le kernel.
Windows NT et VMS comptent tous deux fortement sur le mapping des fichiers en
mémoire, surtout pour mapper le code servant à  exécuter les applications et pour
implémenter la fonctionnalité  » copy-on-write  » (pour des raisons de limitations
matérielles des VAX, VMS fournit une fonctionnalité de copie à  la demande moins
efficace). La gestion de la mémoire physique, tant dans NT que dans VMS, repose
sur la mémoire virtuelle paginée à  la demande.
Le gestionnaire de mémoire de VMS attribue à  chaque processus des limites supérieures
et inférieures (baptisées working sets, ou espaces de travail), pour la quantité
de mémoire physique qui leur est attribuable par le système. Cette fonction compartimente
les applications de sorte qu’une application nécessitant beaucoup de mémoire n’affecte
pas trop les autres processus. Le gestionnaire de mémoire de Windows NT comporte
des working sets, ainsi que de nombreux algorithmes subtils d’optimisation des
working sets issus de VMS.

Les gestionnaires de mémoire de Windows NT et de VMS présentent des différences
notables. Le Balance Set Manager de VMS déplace en dehors de la mémoire des espaces
occupés par des processus entiers vers des fichiers de pagination et les retourne
en mémoire, afin de répondre aux besoins globaux de mémoire du système. Microsoft
n’a pas mis ce mécanisme, connu sous le nom de swapping (bascule), dans le Balance
Set Manager de Windows NT, bien que certaines responsabilités secondaires du Balance
Set Manager soient identiques dans les deux OS.

Le Gestionnaire des E/S de Windows NT est étroitement calqué sur celui de VMS.
Dans les deux cas il supporte un modèle de drivers en couches pour les différents
types de périphériques, met en oeuvre des commandes d’E/S basées sur les paquets
asynchrones, et ses drivers de périphériques se chargent et se déchargent dynamiquement.
Les périphériques empilables et chargeables dynamiquement rendent NT et VMS très
évolutifs. Les deux OS peuvent diviser une fonctionnalité entre plusieurs drivers
de périphériques mettant en oeuvre chacun un niveau d’abstraction différent.

Par exemple, le système peut insérer un programme de gestion de disque à  tolérance
de panne entre un driver de file system et un driver de disque. Cette configuration
permet au driver de disque à  tolérance de panne de recevoir une requête envoyée
par le système à  une unité logique (c’est-à -dire l’unité C), puis d’envoyer la
requête à  plusieurs unités physiques pour mettre en oeuvre le mirroring ou le striping.
Les E/S asynchrones permettent aux applications et aux sous-systèmes du kernel
de lancer des requêtes aux périphériques et de continuer à  fonctionner pendant
que celles-ci sont en cours de traitement, au lieu d’attendre, inactifs, qu’elles
s’achèvent. L’architecture des drivers de périphériques et le système de priorité
des requêtes d’interruption de Windows NT sont basés sur VMS.
Les descriptions de ces aspects du Gestionnaire des E/S sont applicables aux deux
OS à  très peu de choses près.Comme on peut le voir en comparant les Figures 2
et 3, les sous-systèmes de l’Executive présentent des ressemblances très significatives
entre VMS et Windows NT. Pourtant, il existe de nombreuses similitudes mineures,
montrant clairement que Microsoft a emprunté les fonctions de NT à  VMS.

Par exemple, Windows NT et VMS considèrent tous les deux les ressources comme
des objets gérés par le système grâce à  un Gestionnaire des objets, qui gère de
façon uniforme les références. Le Gestionnaire des objets réglemente l’allocation
des ressources et appelle les fonctions des sous-systèmes de l’Executive, qui
demandent la notification de certaines opérations sur les objets. La gestion des
objets de VMS n’est pas formalisée, comme dans NT, et son Gestionnaire des objets
est une simple connexion lâche de fonctions. Microsoft a étendu le Gestionnaire
des objets de Windows NT pour qu’il gère un modèle de nom uniforme pour toutes
les ressources du kernel.Le sous-système de sécurité de Windows NT est basé sur
des objets dotés de listes de contrôle d’accès préférentiel (DACL pour Discretionary
Access Control List). Les DACL déterminent les utilisateurs autorisés à  effectuer
diverses opérations sur les objets.
Digital a amélioré les DACL du modèle de sécurité de VMS dans la version 4.0 en
1984. C’est pourquoi l’implémentation de la sécurité de VMS a précédé celle de
NT. Microsoft a même inclus dans NT des outils systèmes identiques à  ceux de VMS,
notamment l’Analyseur de performances, qui est basé sur MONITOR, celui de VMS.
VMS comportait en outre un utilitaire baptisé BACKUP bien avant que Microsoft
ne développe celui de Windows NT. » Pourquoi la puce la plus rapide du monde n’a
pas gagné la partie « , titrait Business Week en avril 1997. Selon cet article,
lorsqu’ils ont constaté les similitudes entre VMS et NT, les ingénieurs de Digital
ont fait part de leurs observations à  leur direction.

Mais, au lieu d’intenter un procès, Digital a préféré conclure un marché avec
Microsoft. Durant l’été 1995, Digital a annoncé la sortie de Affinity for OpenVMS,
un programme qui obligeait Microsoft à  : contribuer à  la formation de techniciens
Windows NT chez Digital ; promouvoir NT et OpenVMS comme deux éléments d’une solution
de mise en réseau client-serveur à  trois niveaux ; et faire en sorte que Windows
NT continue de supporter le processeur Alpha. Microsoft a également versé à  Digital
entre 65 et 100 millions de dollars.

Téléchargez cette ressource

Guide inmac wstore pour l’équipement IT de l’entreprise

Guide inmac wstore pour l’équipement IT de l’entreprise

Découvrez toutes nos actualités à travers des interviews, avis d'experts et témoignages clients et ainsi, retrouvez les dernières tendances et solutions IT autour de nos 4 univers produits : Poste de travail, Affichage et collaboration, Impression et capture et Infrastructure.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010