Introduction à Windows NT 4.0 Eric Lapaille [email protected] Jean-Gabriel Debaille [email protected] pour le Centre Telecoms - Technothèque 1997 (c) 1 Table des matières Table des matières 2 Historique 4 Windows NT et sécurité 1) Les mécanismes de sécurité. 2) Les mesures d'assurance de sécurité 7 7 7 Compression au vol 10 Registry : la base de registres 11 I/O et File Systems 12 Multitâche préemptif, mémoire virtuelle et Multithread 13 OpenGL 14 Domaine Replication 15 15 Différences NT Server et Workstation 16 Permissions répertoires partagés 17 Permissions fichiers partagés 17 Attributs fichiers 17 Windows NT en réseau NetBIOS Universal Naming Conventions Protocole IPX/SPX Protocole NETBEUI SMB Browse Master SAP ODI NDIS - Network Driver Interface Specification (3.0) The Transport Driver Interface (TDI) Compatibilité réseau 18 18 18 18 19 19 20 20 20 21 22 22 Outils d’administration 23 Les grandes nouveautés dans Windows NT 3.5 Performance Compatibilité Taille OLE 2.01 Graphisme, multimédia Connectivité Remote Access Services 24 24 24 24 24 24 24 25 2 Stabilité 25 NT 4.O 26 Appendice A : MICROKERNEL 1) Les processus 2) Threads 3) Objets Mémoire 4) Ports 27 27 28 28 29 Appendice B : MIPS Error! Bookmark not defined. 3 Historique Dès la parution de la version 1.0 de OS/2, Microsoft s'est attelé à une nouvelle tâche ambitieuse: créer un système d'exploitation digne des années 90. Fin 1988, Bill Gates débauche chez Digital Equipment Corporation le fameux Dave Cutler, auteur remarqué du système VAX/VMS et de plusieurs compilateurs pour les stations DEC. Dave Cutler se voit confier les rênes d'un projet baptisé à l'époque 'NT OS/2', ou 'OS/2 3.0' ou encore 'Portable OS/2'. Ce n'est qu'en 1990, année de tous les succès pour Windows 3.0, que le projet acquiert son nom définitif de 'Microsoft Windows NT'. Le cahier de charges est revu la même année et met principalement l'accent sur les points suivants : Conception révolutionnaire NT est un système d'exploitation modulaire, conçu comme une série de couches indépendantes et inspiré du système Mach développé par la Carnegie-Mellon University. Entièrement écrit en C pour des raisons de portabilité, NT repose sur une architecture 32-bit. Ses 32 bits confèrent à NT un adressage mémoire linéaire de maximum 4 GB. Ses 3 millions de lignes de code sont le fruit d'un mariage, quelque peu hors nature, entre Windows, l'interface graphique hérité des ordinateurs personnels et des fonctionnalités originaires du monde des 'minis'. David Cutler dit de son système d'exploitation qu'il n'est pas vraiment un système micro-kernel mais plutôt un OS client/serveur. Ici, le terme de serveur est appliqué à tout sous-système qui fournit des services à d'autres sous-systèmes, celui de client est associé à tout programme faisant appel à un de ces services. NT a été conçu pour remédier aux limitations d'OS comme Dos ou Windows qui ne sont ni sûrs, ni portables. L'architecture client/serveur de Windows NT fait qu'aucune application n'a le droit d'accéder directement au hardware ou à des portions sensibles du système d'exploitation. Tous ces accès sont contrôlés par la couche executive de NT. Tous les systèmes d'exploitation disposent d'un noyau ou kernel comprenant un jeu de fonctions minimum qui doivent rester en mémoire. Dans le DOS par exemple, le kernel est constitué du BIOS ( Basic Input/Output System), du BDOS ( Basic Disk Operating System). Sous Windows NT, le noyau est en fait un microkernel qui comprend les seuls services qui doivent absolument rester en mémoire. Il a été désigné pour être aussi petit que possible. Le microkernel est même si petit que, dans le cas d'une machine multiprocesseurs, une copie du micronoyau est exécutée sur chaque CPU. C'est ce qui permet à Windows NT d'être un véritable OS à symmetric multiprocessing. Les seuls autres OS SMP sont le Mach de Carnegie-Mellon, le Dynix de Sequent et le Solaris de Sun. Portabilité Prévu pour les PC traditionnels à base de processeurs INTEL 80386 ou 80486, NT vise aussi le créneau des ordinateurs équipés de processeurs RISC R4000 de la firme MIPS. Ces processeurs à jeu réduit d'instructions ont été sélectionnés comme pièce maîtresse du nouveau standard ACE/ARC édicté par Microsoft, Compaq, Digital et consorts. Digital a aussi manifesté son attachement à Windows NT qui équipera en standard ses nouvelles stations de travail dotées du processeur RISC et 64-bit ALPHA. Le processeur Power PC est supporté depuis la version 3.51 de NT. Lors du portage vers un nouveau processeur, seul le noyau, ou 'micro-kernel', d'une cinquantaine de KB est à réécrire pour tirer parti des spécifités du nouvel environnement. Pour rendre NT disponible sur un nouveau type de machine, son concepteur doit simplement réécrire un HAL (Hardware Abstraction Layer) spécifique, disposer d'un compilateur C compatible avec celui de Microsoft, obtenir les sources de Microsoft et les recompiler pour cette 4 nouvelle architecture. Cette portabilité n'a pas que des avantages. Pour fonctionner sur différentes machines, une application doit être compilée plusieurs fois mais il n'est pas rare qu'une compagnie ne développe et maintienne qu'une seule version Intel de son programme. Ensuite, il y a une perte de performance importante lorsqu'on fait tourner des applications Dos ou Windows 16 bits sur d'autres processeurs que celui d'Intel. Enfin, il n'est pas possible avec cette philosophie portable d'optimiser certaines portions du code en assembleur, le langage C n'offrant pas une optimisation idéale pour certaines tâches intensives. Sécurité Les concepts de sécurité et de protection des données de Windows NT ont été largement inspirées des directives et recommandations émises par le National Computer Security System du Département Américain de la Défense. NT répond au niveau de sécurité C2. A ce niveau, un contrôle d'accès discrétionnaire est spécifié par le créateur d'un objet. Il y détermine quels sont les utilisateurs ou groupes d'utilisateurs qui ont l'autorisation d'utiliser cet objet. Un autre mécanisme de sécurité s'assure que les données résiduelles sont complètement effacées de la mémoire et des disques lorsqu'elles ne sont plus indispensables ou lorsqu'elles sont assignées à un nouvel utilisateur. Chaque démarrage d'une station de travail passe par une procédure d'identification de l'utilisateur qui garantit aux données leur confidentialité. Une nouvelle gestion des fichiers, appelée NTFS, fournit à NT un nombre impressionnant de mécanismes pour la tolérance de fautes : disques en miroir et/ou en duplex, système de récupération des données etc. Le modèle de sécurité de Windows NT est basé sur le concept d'objet. Un objet sécurité peut représenter n'importe quelle ressource système : un fichier, un périphérique, un programme, un utilisateur. Chaque objet transporte sa propre information sur ce qu'il lui est permis de faire ou non. Multi Processeurs NT a été conçu pour supporter plusieurs processeurs à la fois au sein d'une seule et unique machine. Il ne s'agit pas d'une rudimentaire gestion asymétrique des processeurs où un processeur graphique, par exemple, délivre le processeur central d'une série de tâches accessoires. Il s'agit ici d'une véritable gestion symétrique de processeurs identiques où chaque processeur gère une sous-tâche,ou 'thread', particulière. L'ajout d'un processeur débouche sur une augmentation linéaire des performances. NT peut gérer jusqu'à trente processeurs dans une seule machine. Compatibilité Au dessus de la couche responsable de l'interaction avec le hardware, Windows NT peut accueillir toute une série d'autres couches, appelées soussystèmes, d'autres personnalités qui assurent la compatibilité avec d'autres systèmes d'exploitation. Les applications Windows NT en mode 32-bit cotoient, sans le moindre heurt, des programmes MS-DOS, des programmes Windows 16-bit, des applications OS/2 1.3 en mode caractère et même des logiciels conformes aux normes POSIX. Pour reprendre l'expression consacrée par IBM, Windows NT est lui aussi un meilleur Windows que Windows puisque chaque programme dispose de son propre espace mémoire et est incapable de bloquer le système ou de corrompre les données provenant d'autres applications. Mieux encore, il est possible d'échanger des données entre ces programmes hétéroclites via le pressepapier, de simples pipes ou les mécanismes DDE et OLE. Seules les applications Dos, Windows et OS/2 1.x correctement écrites pourront tourner dans l'environnement NT. Ces applications ne pourront pas, par exemple, faire des accès de bas niveau au contrôleur du disque dur, écrire directement sur le port série, attaquer la mémoire de la carte graphique. Ce genre de comportement est régulièrement utilisé par les programmeurs MSDOS pour accélérer certaines tâches qui seraient trop lentes si elles étaient 5 gérées uniquement par l'API du BIOS. Les applications Windows 16 bits faisant appel à des fonctions non-documentées ou à des pilotes de périphérique propriétaires n'auront pas plus de chances de fonctionner sous NT. Réseau Tout simple mais efficace: NT permet le partage des imprimantes et des fichiers logés sur des disques durs locaux avec d'autres utilisateurs du réseau. Pour le travail en groupe, un système de courrier électronique est disponible en standard. Pour les utilisateurs plus exigeants, NT s'est plié au standard Distributed Computing Equipment ( DCE ) émis par l'Open Systems Foundation. Grâce au DCE, NT se connecte et interagit sans problèmes avec des serveurs Unix, VMS ou autres. Les supports NETBIOS et TCP/IP sont bien entendu présents. Microsoft collabore avec Digital, Novell et Banyan pour mettre sur pied un nouvelle norme, baptisée Windows Open Systems Architecture, qui s'efforce de standardiser les services réseaux tels que partage d'imprimante, courrier électronique, administration du système, accès aux bases de données, le tout dans un environnement multi-vendeurs. 6 Windows NT et sécurité Les concepts de sécurité et de protection des données de Windows NT ont été largement inspirées des directives et recommandations émises par le National Computer Security System du Département Américain de la Défense. Dans le document 'Trusted Computer System Evaluation Criteria' ( baptisé familièrement 'The Orange Book' ), le département distingue sept niveaux de confiance pouvant être attribués à un environnement informatique distribué: D1, C1, C2, B1, B2, B3 et A1. D1 correspond au degré zéro de sécurité tandis qu'A1 représente le niveau maximal. Le livre orange distingue deux composants: les mécanismes de sécurité et les mesures d'assurance de sécurité. 1) Les mécanismes de sécurité. Les mécanismes de sécurité sont relatifs aux niveaux C1, C2 et B1. Ils prennent la forme de contrôle d'accès aux objets et données pour chaque utilisateur et groupe d'utilisateurs. Aux niveaux C1 et C2, un contrôle d'accès discrétionnaire ( DAC pour Discretionary Access Control) est spécifié par le créateur d'un objet. Il y détermine quels sont les utilisateurs ou groupes qui ont l'autorisation d'utiliser cet objet. Ces informations sont stockées sous forme de listes de contrôle d'accès ( ACL pour Access Control List ). Le livre orange définit un second mécanisme de sécurité consacré à la gestion de numéros de compte. Typiquement, un numéro de compte permet d'identifier un utilisateur de manière univoque. Le numéro de compte est associé à un mot de passe ou à un objet physique tel qu'un badge. L'administrateur du réseau doit disposer d'une méthode rétrospective de vérification des comptes ou des tentatives d'accés au réseau. La réutilisation des objets est un autre mécanisme de sécurité s'assurant que les données résiduelles sont complètement effacées de la mémoire et des disques lorsqu'elles ne sont plus indispensables ou lorsqu'elles sont assignées à un nouvel utilisateur. DAC, gestion des comptes et réutilisation des objets sont requis pour obtenir les mentions C1 ou C2. Au niveau B1, il faut en plus disposer de labels de sécurité et de contrôle d'accès par mandat. Les labels de sécurité, gérés par le système pour chaque utilisateur et objet, représentent des niveaux hiérarchiques d'accès à l'information ( ex: top secret, secret, accessible à tous). Le contrôle d'accès par mandat ( MAC pour Mandatory Access Control) se fonde sur les labels de sécurité pour limiter l'accès aux objets et fichiers. Un utilisateur n'obtient l'accès à un objet que si son niveau de sécurité est supérieur ou égal au niveau requis. Un objet de niveau plus élevé lui est interdit même si un mécanisme de type ACL ou DAC en autorise expressément l'accès. Le MAC est prioritaire par rapport au DAC. De cette façon, un utilisateur disposant de privilèges élevés se voit empêcher de rendre un objet accessible pour des utilisateurs disposant de privilèges insuffisants. 2) Les mesures d'assurance de sécurité Les niveaux B2, B3 et A1 s'appuient sur le concept de mesures d'assurance de sécurité lui-même articulé sur trois critères: - l'architecture du système avec ses exigences de protection entre applications, - l'intégrité du système obtenue par validation du matériel et du code source, 7 - la mise à l'épreuve des mécanismes de sécurité garantissant une concordance avec les directives du Département de la Défense. Windows NT a d'ores et déjà reçu du gouvernement Américain un certificat de conformité au niveau C2 et pourrait dans de futures versions être agréé pour le niveau B. La gestion des processus, l'appel aux procédures locales et l'initialisation des threads sont tous soumis à l'approbation du système de sécurité de NT qui s'avère théoriquement inviolable. Le système d'exploitation assure la protection de tous les objets et ressources via des listes de contrôle d'accès. Ni les fichiers systèmes de NT, ni les fichiers critiques de configuration ne peuvent être détruits. Plusieurs processus de login peuvent être actifs à la fois, chacun se chargeant de surveiller un périphérique particulier: une combinaison de touches au clavier, un clic souris ou une connexion sur le réseau. Le processus de login, dès qu'il a intercepté une demande d'accès au système, passe l'information relative à l'utilisateur au sous-système chargé de la sécurité. Le sous-système compare l'information introduite par l'utilisateur avec celle qui figure dans sa base de données sécurité. En cas d'identification correcte, le sous-système génère un objet unique qui identifiera l'utilisateur pour toutes les transactions suivantes. L'objet, appelé jeton d'accès, signale à NT quelles ressources seront accessibles à l'utilisateur. Après la création du jeton d'accès, le sous-système de sécurité engendre un processus, lui attache le jeton d'accès et passe le processus au soussystème Win32 qui, en réponse, lance l'exécution de ProgMan, le gestionnaire de programmes. A partir de ce moment, le sous-système Win32 prend le contrôle de l'écran, du clavier, de la souris et de tout autre périphérique d'entrée. Même après la procédure de login, les utilisateurs n'ont accès qu'aux seuls objets pour lesquels ils ont un niveau de permission approprié. Cela permet à plusieurs utilisateurs disposant de privilèges différents de se succéder à une même station de travail en guarantissant une confidentialité totale à chaque utilisateur. Par la même occasion, un utilisateur retrouve son propre environnement de travail quelle que soit la machine où il se connecte. Lorsque NT utilise l'ancien système de gestion de fichiers FAT ( Table d'Allocation de Fichiers ) hérité du MS-DOS, la plupart des mécanismes de sécurité sont indisponibles puisqu'ils sont intimement liés au gestionnaire de fichiers NT ( NTFS ). Les permissions associées aux fichiers sont modifiables par l'intermédiaire du programme File 8 Manager. Dans le Menu Sécurité, l'option Permissions permet de sélectionner un utilisateur ou un un groupe et de lui associer un jeu de permissions. Grâce à l'option Propriété, l'administrateur du réseau peut parcourir le réseau et s'approprier des droits sur un fichier particulier de façon à contrôler son niveau de sécurité. La gestion des utilisateurs s'opère via le programme User Manager du groupe 'Outils Administratifs'. La boîte de dialogue 'Nouvel utilisateur' offre la possibilité d'introduire un pseudonyme unique, le nom complet de l'utilisateur, son mot de passe et une description accessoire. Le compte ainsi créé est unique et est stocké dans le système sous la forme d'un identificateur de sécurité ( SID pour Security identifier). Un SID est composé de deux parties: un préfixe unique sert à identifier la machine sur laquelle a lieu la connexion; le suffixe est défini par le numéro de compte de l'utilisateur. 9 Compression au vol Autre nouveauté intéressante dans Windows NT 3.51: l’apparition d’un moteur de compression pour les partitions de type HPFS. Il ne s’agit pas d’un outil à la “ Stacker ” ou “ DriveSpace ” comprimant au vol tout un disque mais d’un outil de compression agissant sur chaque fichier ou chaque répertoire séparément. Les risques sont donc moindres en cas de problèmes majeurs d’endommager tout un volume comprimé. L’autre atout de taille d’un tel système est que l’espace libre sur un disque dur est toujours annoncé correctement et n’est pas le résultat d’une estimation ou d’une projection. Pour compresser une série de fichiers, l’utilisateur les sélectionne dans le File Manager et choisit l’option Compress/Uncompress dans le menu déroulant. Pendant la compression, d’une durée plus qu’acceptable, le programme affiche la taille du fichier avant et après la procédure. Ensuite, les fichiers compressés sont affichés en bleu dans le FileManager et affublés d’un nouveau flag C pour Compressed. La taille affichée en regard des fichiers est toujours la taille réelle non compressée. Pour connaître la taille compressée, il faut aller dans le menu et choisir l’option “ Propriétés ” qui affiche le taux de compression moyen. On y repère un taux de compression moyen variant entre 30 à 50 % de la taille originelle. Notre meilleur résultat concernait un fichier graphique de type BMP qui est passé de 480 à 69 KB soit 14 %. Si la différence d’exécution entre fichiers compressés ou non est à peine perceptible, la restauration d’un fichier dans son état original demande un temps fort long. Le gain obtenu en accès disque compense la surchage de travail provoquée par l’algorithme de décompression. Il nous aura fallu moins de dix minutes pour convertir un volume de 100 MB et nous y avons gagné 25 MB. Cette opération s’avère très aisée et fortement appréciable pour des fichiers de type bitmap ou DBF. Pas de facteur estimé de compression, pas de modification de la taille des clusters, pas de réorganisation disque à chaque modification du volume compressé, tous les inconvénients liés à Stacker ou DriveSpace ont ici disparus. 10 Registry : la base de registres La base de données centrale où Windows NT stocke tous ses paramètres de configuration s’appelle le Registry. C’est une base de données hiérarchique stockée sous forme binaire qui évite à Windows de recourir comme par le passé à une myriade de fichiers INI. Les fichiers INI dans les précédentes versions de Windows étaient dispersés un peu partout sur le disque, très lent à l’accès et limités en taille à 64 KB. Via Remote Procedure Call, il est désormais possible à un administrateur réseau d’accéder à une base de données Registry à travers le réseau. La façon la plus simple d’accéder à cette information est d’utiliser le Registry Editor fourni par Microsoft. Il suffit en fait de lancer la commande Regedt32. Regedit affiche alors une arborescence composée de quatre branches principales. Hkey_Local_machine contient tous les paramètres spécifiques à un ordinateur ( configuration matérielle et logicielle ) et valables pour tous les utilisateurs se connectant sur cette machine. Hkey_Classes_Root énumère toutes les objets OLE, les associations et les raccourcis Windows NT Hkey_Users renferme pour chaque utilisateur qui se logge à un ordinateur une liste de préférences pour la configuration bureau, les applications etc. Hkey_Current_User pointe en fait sur la branche Hkey_Users correspondant à l’utilisateur connecté. 11 I/O et File Systems Windows NT fournit un modèle indépendant du hardware pour toutes ses Entrées/Sorties reposant sur le concept de multilayered device driver. Le DOS lui, ne dispose que de drivers monolithiques. NT peut utiliser une large variété de formats de fichiers. Aucun programme ne peut donc partir du principe qu'il va interagir avec un format de fichier particulier. Une application ne peut dialoguer directement avec un pilote de périphérique, elle doit plutôt négocier avec une portion de l'OS baptisée I/O Manager qui à son tour communique avec le device driver approprié. Sous NT, toutes les opérations d'entrée et sortie peuvent être asynchrones. Si une lecture doit être opérée dans un fichier, il n'est pas nécessaire d'attendre la fin de l'opération, il suffit de poster une demande de lecture, de faire autre chose en attendant et de traiter la notification qui sera adressée au programme par l'OS quand la lecture sera complète. NT est un système multitâches préemptif, c'est donc du gaspillage de passer son temps à attendre la fin d'une opération de lecture disque alors que quelque chose d'autre peut être réalisé pendant ce temps. Notons également que tous les drivers Windows NT ont été pensés pour résister au perte de courant. Windows NT supporte les File Allocation Table (FAT) traditionnelles du MS-DOS plus son propre NT File System baptisé NTFS incluant de nouveaux attributs de sécurité plus la tolérance de fautes. D'autres File System peuvent être chargés dynamiquement comme le CDFS ( CD-ROM File System), le HPFS (High Performance File System) de l'OS/2 et le file system du Macintosh. Enfin, n'importe quel service réseau est traité comme un file system sous Windows NT. NTFS fournit une fonctionnalité unique de data-logging qui lui permet de récupérer un fichier en cas de perte de courant ou d'erreurs disque. Un examen intensif d'un volume NTFS ou FAT a lieu à chaque démarrage de la machine. NTFS supporte les longs noms de fichiers jusqu'à 256 caractères. Ces longs noms sont automatiquement convertis au format 8.3 lorsqu'ils sont utilisés par un sous-système Windows 16 bits ou MS-DOS. Pour les programmeurs, Windows NT fournit une fonction intéressante : les memorymapped files. Elle fournit la possibilité d'ouvrir un fichier de n'importe quelle taille et de le traiter comme une simple zone mémoire continue même si la taille du fichier dépasse celle de la mémoire vive, le surplus étant paginé sur disque. Windows NT offre une fonction de mirroring qui permet de maintenir deux images d'un même disque sur deux partitions différentes couplées à un seul contrôleur. La première partition, appelée partition primaire, reçoit les informations disque comme à l'accoutumée. La seconde partition reçoit une copie de sauveagrde, NT se chargeant de vérifier la conformité des informations contenues sur les deux partitions. Un niveau supplémentaire de sécurité des données est le duplexing où deux disques physiques sont couplés à deux contrôleurs différents qui recoivent et traitent la même information. cela garantit une sécurité optimale avec simplement une légère pénalité au niveau des accès disque en écriture. Le fin du fin est la technologie RAID (Redundant Array of Inexpensive Disks). A chaque écriture, les données sont distribuées sur l'ensemble des disques secteur par secteur avec un contrôle de parité supplémentaire sur l'un des disques. En cas d'erreur sur un disque, les données sont reconstruites en fonction de cette information de parité. 12 Multitâche préemptif, mémoire virtuelle et Multithread Depuis l'apparition de l'Intel 386, l'utilisation simultanée de plusieurs tâches est devenue possible. Windows 3.x est un système multitâche mais de type coopératif. Cela signifie que toutes les applications se partagent une seule queue de messages et que chaque application a la responsabilité de passer la main aux autres tâches. Si une application ne prend pas soin de rendre la main aux autres, si elle se perd dans une boucle de longue durée ou contient un bug qui l'empêche de se comporter correctement, l'ensemble des autres tâches n'a plus accès au temps CPU. Dans un système multitâche préemptif, c'est le système d'exploitation lui-même qui, via le Task Scheduler, détermine quelle application prend le contrôle du processeur en fonction de niveaux de priorité. C'est ce même Task Scheduler qui distribue le temps CPU entre toutes les tâches. Cela signifie que, même en cas d'applications errantes ou buggées, les autres tâches peuvent reprendre le contrôle du CPU sans un fatal Ctrl-Alt-Del. L'application qui tourne en avant-plan a toujours une priorité un peu plus élevée et les Entrées/Sorties en temps réel ( la saisie au clavier par exemple) ont toujours une priorité maximale. Un thread est un processus qui peut être activé ou désactivé par le Task Scheduler sans la surcharge de travail causée par le démarrage et la terminaison d'une complète application. Un thread hérite des ressources de l'application parente. Si un programme de traitement de texte est découpé en threads, cela signifie qu'un correcteur orthographique peut être activé pendant qu'un autre thread se charge de l'impression en tâche de fond et un autre de la correction orthographique. Chaque programme a à sa disposition un espace mémoire adressable linéaire de 2 GB découpé en pages de 4 KB. Ces pages peuvent être chargées et déchargées de la mémoire, placées sur disque par le memory manager via une procédure appelée page fault. Chaque fois qu'une application tente d'accéder à une page qui n'est pas physiquement présente en mémoire, une page fault est générée. L'executive de NT se charge alors de la charger en mémoire en déchargeant éventuellement de la mémoire des pages qui n'ont plus été utilisées depuis longtemps pour faire de la place à la nouvelle application. Le memory manager fournit un mécanisme de protection de la mémoire empêchant une application de manipuler un espace mémoire qui appartient à une autre application. 13 OpenGL Pour entrer en compétition avec les stations de travail graphiques, Windows NT incorpore un API OpenGL qui fournit du rendu 3D rapide incluant ombrage, texture, positionnement de l'éclairage. OpenGL est implémenté au niveau du kernel ce qui lui donne des performances comparables aux meilleures stations Unix. Des cartes graphiques spéciales commencent à apparaître qui incorporent les fonctions OpenGL au niveau du hardware. 14 Domaine Un domaine est un groupe arbitraire de serveurs NT. Un de ces serveurs est désigné comme contrôleur primaire de domaine (PDC ou Primary Domain Controller) . C'est lui qui centralise une base de données utilisateurs valable pour tous les serveurs du domaine. Cela évite qu'un utilisateur ne doivent disposer d'un compte et d'un mot de passe différents sur chaque serveur qui complexifient la tâche de l'administrateur système. Dans un domaine, chaque utilisateur n'a besoin que d'un seul compte lui fournissant les privilèges requis sur chaque machine appartenant au domaine voire même sur plusieurs domaines. Les informations utilisateur sont centralisées sur le PDC qui se charge de toutes les authentifications. Replication Toutes les cinq minutes, le PDC examine sa base de données à la recherche de changements. S'ils existent, il les transmet à tous les serveurs NT du domaine. ce mécanisme d'account replication permet de survivre à des défaillances réseau. Une replication de szervice est également disponible qui permet de copier des informations entre serveurs comme des logon scripts par exemple ou des données d'utilisateurs. Ces informations spéciales sont conservées dans deux répertoires particuliers définis comme import et export. (\WINNT\SYSTEM32_REPL\EXPORT). 15 Différences NT Server et Workstation Plus de dix connexions simultanées à des fichers et ressources Compte utilisateur valable sur plusieurs serveurs Outil administratif de gestion des profils utilisateurs Réplication de répertoires Support disque à tolérance de pannes Support File System Macintosh Service d'accès distant multi-utilisateur Support TCP/IP étendu (DHCP, WINS etc...) Support Netware étendu ( GSNW, FPNW etc ...) Mise à jour à partir de Lan Manager 2.x 16 Permissions répertoires partagés No Access aucun accès au répertoire List affiche un répertoire de fichiers et permet de naviguer dans les sous-répertoires Read List + utilisateur peut connaître le propriétaire et les permissions d'un directory Add and Read Read + possibilité de créer des sous-répertoires, ajouter des fichiers dans un répertoire ou lui changer ses attributs. Change Add et Read + utilisateur peut supprimer le répertoire ou ses sous-répertoires Full Access Change + utilisateur peut changer les permissions Permissions fichiers partagés No acces aucun accès au fichier Read lire un fichier, voir ses attributs Change lire, exécuter un programme, changer attributs, afficher le propriétaire et les permissions Full Access changer ou ajouter des données Attributs fichiers D O P R W X Delete take Ownership change Permissions Read Write eXecute 17 Windows NT en réseau NetBIOS Les couches réseaux de NT sont conçues de manière modulaire, comme un empilement de briques LEGO. La couche supérieure est généralement gérée via NetBIOS utilisé par toutes les applications comme le NetDDE, le ClipBook, Chat ou le Messenger. NetBIOS n’est pas un protocole mais plus une interface software. Il peut exister au-dessus de IPX ou TCP/IP. S'il faut faire tourner des applications NetBIOS sur un réseau LAN complexe ou un WAN, les services NetBIOS doivent être reliés au protocole TCP/IP. C'est ce qu'on appelle NetBIOS-on-TCP/IP ou NBT. NetBIOS n'est pas routable, ne peut fonctionner que sur un seul segment de réseau mais devient partiellement routable lorsqu'il est utilisé audessus du TCP/IP. La conversion des noms NetBIOS vers des adresses IP s'opère via un fichier texte LMHOSTS. Pour tous les échanges d'information entre stations, NetBIOS recourt aux noms de machines afin d'identifier les membres d'un réseau. Tout se passe par une méthode de broadcasting où chaque nouvel arrivant sur le réseau diffuse le nom qui lui a été attribué. Si ce nom n'entre en conflit avec aucun autre nom du réseau, il conserve ce nom. Quand une machine veut communiquer avec une autre, elle a besoin de faire un autre broadcasting pour trouver le destinataire. NetBIOS n'est qu'un API, indépendant d'un protocole. NetBT utilise les ports TCP et UDP suivants: UDP port 137 (name services) UDP port 138 (datagram services) TCP port 139 (session services) Universal Naming Conventions Méthode universelle d’accès à une ressource réseau : \\machine\ressource Ex : net use d: \\client3\disquec\autoexec.bat Protocole IPX/SPX Il s’agit d’un protocole conçu par Novell pour son réseau NetWare. Il signifie Internetwork Packet Exchange/Sequential Packet Exchange. Il permet la détection automatique du type de frame ou des adresses réseaux. Il permet la connexion tant à des réseaux NetWare que NT Server 3.5. Il est routable et permet donc la connectivité de stations séparées par des bridges ou routeurs. Son désavantage le plus marquant est de générer beaucoup de trafic réseau (paquet broadcast, spoofing etc). 18 Là où un réseau NT utilise SMB (Server Message Block), Netware utilise NCP (Netware Core Protocol). Les paquets émanant d'une machine NT peuvent être reçus par un serveur Netware mais le format de paquet ne sera pas reconnu. Les segments IPX ne sont pas numérotés par défaut et le numéro de réseau doit rester 0 dans la plus grande majorité des cas. Si le numéro de réseau est à 0, NWLink envoit un paquet broadcast RIP (Routing Information Program) qui recevra une réponse de tous les serveurs locaux. Windows NT Server 3.51 Application Server Communications Server NetWare 2.x/3.x/4.x Remote client NCPs SMBs TCP/IP-based machine Protocole NETBEUI NetBEUI signifie NetBIOS Extended User Interface. Il s’agit d’un protocole inventé par IBM en 1985. A l’époque, l’idée était qu’un réseau LAN devait être segmenté en groupes de travail de 20 à 200 ordinateurs et que des passerelles devaient être utilisées pour connecter ces segments ou groupes entre eux. On retrouve le support NetBEUI dans Windows for Workgroups, Windows NT Server, Lan Manager et Windows 95 où il est surtout intéressant lorsqu’il est employé dans des LANs départementaux ou des segments de LAN. NETBEUI n’est pas routable car il n'a aucun moyen d'identifier un numéro de segment. C’était le gros problème de la première version de Windows for Workgroups qui empêchait deux stations de deux segments différents de communiquer entre elles. NetBEUI est le protocole de transport utilisé par défaut par Windows NT. Il est basé sur un protocole X/Open appelé SMB pour Server Message Block au-dessus d'un API NetBIOS. Il est très poerformant pour de petits réseau où des flux bruts d'informations voyagent très vite entre un client et un serveur via des circuits virtuels. SMB Le protocole SMB est utilisé par toutes les solutions réseau Microsoft depuis le début des années 80. L'ancêtre était le produit MS-Net revendu sous forme de licence à IBM pour 19 son IBM PC Lan ou 3Com pour son 3Plus. Ensuite en 87, IBM et Microsoft ont annoncé conjointement une solution réseau pour OS/2 compatible avec MS-Net. C'était l'OS/2 LAN Manager. Puis sont encore venus Windows for Workgroups, NT et Windows 95. Browse Master Plutôt que de couteux broadcast lors du login, Wfwg et NT utilisent un nouveau concept de browse master. Une station du réseau ( le PDC ou une machine élue) maintient une liste de tous les autres serveurs et stations d'un domaine ou d'un groupe de travail. Au démarrage, une station ne communique plus sa présence qu'à ce browse master, qui à son tour communique les coordonnées de la station à tous les autres serveurs sans passer par un paquet broadcast. Si le browse master n'est pas allumé ou connecté au réseau, une machine, généralement celle disposant des meilleures performances, sera élue comme nouveau browse master. SAP SAP est utilisé par les réseaux Netware depuis la version 2.15. Il s’agit de la méthode utilisée par un serveur pour annoncer sa présence dans un réseau. Il a une limite théorique de 7000 stations mais la limite pratique est à peu près de 1500 systèmes. ODI ODI est une solution créée par Novell avec la collaboration d’Apple en 1989. ODI signifie Open Datalink Interface et a pour but d’intégrer les couches transport, réseau et data-link du modèle OSI. ODI recoure à trois modules correspondant à ces trois couches pour obtenir les mêmes fonctionnalités que IPX.COM : LSL.COM, pour Link Support Layer, qui fournit la conversion entre le driver de la carte NIC (Network Ethernet Card) et la pile du protocole réseau. MLID ou Media Layer Interface Device qui se charge du contrôle de la carte NIC et régit la communication entre la carte NIC et le module LSL. MLID envoit des paquets à LSL qui se charge de les communiquer au bon protocole. Le module MLID se compose de deux parties : MSM, Media Support Module, et HSM, Hardware Specific Module. Novell fournit le code MSM mais le fabricant de carte doit développer son HSM : c’est par exemple le NE2000.COM de Novell, SMC8000.COM de Western Digital ou 3C509.COM de 3Com. IPXODI.COM est le composant qui contrôle le protocole IPX/SPX pour la communication avec le serveur Netware. Au-dessus, il faudra encore utiliser le shell netx.com pour la connexion à un serveur Netware. D’autres stacks supportant TCP/IP et/ou AppleTalk peuvent se substituer ou venir compléter IPXODI. Un fichier batch classique intégrant toutes ces couches ODI ressemble à ceci : Net Start cd \NWClient Lsl RplOdi Ne2000 -> ajouté par Windows -> optionnel, utilisé uniquement par les stations diskless -> ou tout autre driver fourni par le constructeur de cartes NIC IpxOdi 20 Odihlp netx F: login -> un patch appliqué par Windows La configuration des drivers ODI est concentrée dans un fichier NET.CFG dont voici un exemple : Link Support Max Boards 4 Buffers 8 1500 MemPool 4096 show dots=on #toutes les anciennes commandes acceptées par l’ancien shell.cfg file handles=70 Link Driver SMC8000 Frame Ethernet_802.3 Frame Ethernet_II Frame Ethernet_802.2 Frame Ethernet_SNAP PORT 280 #l’adresse I/O utilisée par la carte NIC INT 15 # IRQ utilisée par la carte NIC MEM c8000 # adresse de la RAM de la carte NDIS - Network Driver Interface Specification (3.0) NT communique avec les cartes réseau via la norme NDIS. NDIS permet à plusieurs protocoles réseau d’être connectés à une seule carte réseau ou, à l’inverse, à un protocole d’être lié à plusieurs cartes réseau.. NDIS ne gère que des paquets bruts, c’est le protocol stack qui est chargé de construire des frames, y compris les en-têtes Mac. Windows Sockets NetBIOS Support User Mode TDI Interface Kernel Mode NetBT TCP ICMP UDP IP IGMP ARP NDIS Interface Network Card Driver(s) Network Media 21 The Transport Driver Interface (TDI) Le Transport Driver Interface a été développé par Microsoft pour fournir une plus grande flexibilité que des interfaces comme NetBIOS. Il fournit un API de fonctions de base. Compatibilité réseau Windows NT Server est capable de collaborer avec: Novell NetWare Microsoft Windows for Workgroups AppleTalk DEC PATHWORKS™ IBM LAN Server IBM SNA networks Microsoft LAN Manager NFS networks Remote access services via ISDN, X.25, and standard phone lines TCP/IP networks, such as UNIX-based networks The Internet 22 Outils d’administration User Manager Server Manager Disk Administrator Performance Monitor Backup Event Viewer User Profile Editor Windows NT Diagnostics License Manager Network Client Administrator.. 23 Les grandes nouveautés dans Windows NT 3.5 Performance réécriture Kernel et GDI nouveaux drivers video réécriture du sous système 16 bits pour éviter un maximum de thunks vers le 32 bits. réécriture des LPC et de la communication InterProCess performance réseau exigences mémoire réduites monde Compatibilité support étendu bus PCI support de lecteurs CD-ROM non SCSI comme les Mitsumi, Sony ou Panasonic compatibilité binaire avec Windows 95 support de multiples VDM (Virtual Dos Machine) pour accroôite la compatibilité Dos et Windows 16 bits chaque application Windows 16 bits peut disposer de son espace adressable séparé supporte les LFN (Long File Name) sur des partitions FAT Taille objets headers réduits de 64 octets par objet chargement dynamique des services réduction du nombre de threads du système l’essentiel des couches “ executive ” est paginé OLE 2.01 intégration et partage d’informations entre application 16 et 32 bits Graphisme, multimédia librairie OpenGL Inclut Video pour Windows 1.1 et des drivers vidéo 32 bits Connectivité Netware Client Software Netware Compatible Gateway (NT AS) S.A.P. Outils de migration Lan Manager et Netware (NT Server seulement) Réseau Remote Boot Prom Nouveaux stacks TCP/IP 32 bits Nouveaux clients 32 bits Windows for Workgroups 24 TCP/IP printing Support WinSockets API 1.1 Dynamic Host Configuration Protocol Windows Naming Services Remote Access Services Support SLIP et PPP dial in pour IP et IPX Stabilité inclusion d’un symbolic Kernel debugger outil Dump outil Recovery en cas de plantage 25 NT 4.O Windows NT 4.0 se doit avant tout d'apporter à Windows NT le même environnement graphique, le même shell que Windows 95. Les nouveautés ne s'arrêtent pourtant pas là. La plus importante amélioration est invisible pour l'utilisateur mais lui garantit des performances bien plus élevées : le transfert du GDI (Graphical Device Interface) de la couche user vers la couche kernel. Cela donne des mouvements graphiques plus rapides puisque le processeur n'est plus obligé de réaliser deux "context switches" entre chaque opération comme par le passé. Du coup, certaines améliorations ont été apportées aussi à OpenGL notamment en matière de texture mapping. NT 4.0 Workstation voit l'apparition de l'Internet Explorer, de DirectX, de profils matériels permettant la sélection de plusieurs configurations hardware au démarrage comme dans Windows 95, d'une fonction AutoDial dans les services d'accès distants (RAS). Une nouvelle task list, plus complète, dresse la liste de la totalité des services et processes tournant en tache de fond et non plus uniquement la liste des applications en avant plan. Côté NT server, on remarquera surtout l'apparition de l'Internet Information server, du Multi Protocol Routing (MPR) et d'un serveur DNS (Domain Name Server). Ce DNS prendra de plus en plus d'importance dans l'avenir puisqu'il sera la base de la gestion des Directory Services. Le DNS supporte tant la résolution de noms par URL, que l'Universal Naming Convention. Si le serveur DNS n'arrive pas à résoudre une coorespondance adresse IP - nom de domaine, il passe la main à WINS, le Windows Naming Service, qui dynamiquement transfère l'information au DNS. Côté réseau, notons encore, l'apparition du Point to Point Tunneling Protocol autorisant la création sur Internet de réseau privé d'entreprises sécurisé par mot de passe, du distributed COM version 1, des couches TAPI et Unimodem ou du CryptoAPI. Enfin, RAS multilink est une nouvelle extension des Remote Access Services qui permet de multiplexer la bande passante de plusieurs appareils hétéroclites et d'en faire un canal unique à la disposition d'une connexion entre un client et le serveur. 26 Appendice A : MICROKERNEL L'ancêtre des systèmes d'exploitation portables est indiscutablement MACH. Windows NT en a largement adopté la philosophie. Dès 1979, Richard Rashid, de la Carnegie-Mellon University, s'est attaqué à la conception d'un système d'exploitation modulaire, conçu comme une collection de processus communiquant entre eux au sein d'un réseau par l'échange de messages. En 1984, il décide d'apporter à Mach la compatibilité UNIX lui offrant ainsi un grand volume d'applications disponibles. Mach contient déjà des threads, un mécanisme de communication inter-processus, un support multi-processeurs et un système original de mémoire virtuelle. DARPA, l'Agence pour les Projets de Recherche Avancés du Département Américain de la Défense, s'intéresse bientôt à Mach et finance la fusion de Mach et du Berkeley Unix 4.2BSD en un seul et unique noyau. Cette première mouture de Mach débouche en 1986 sur une version dédiée au VAX 11/784, un système composé de quatre processeurs. Suivent rapidement des versions pour l'IBM PC/RT, Sun 3, Encore et Sequent. A cette époque, l'Open Software Foundation, un consortium de fabriquants d'ordinateurs réunis autour d'IBM, DEC et Hewlett Packard tente de briser l'hégémonie d'AT&T, concepteur d'Unix, sur son produit. L'OSF choisit Mach 2.5 comme base de son premier système d'exploitation, OSF/1. En 1988, la version 3.0 est allégée du code Berkeley Unix encore présent dans son noyau et devient réellement le premier système d'exploitation doté d'un microkernel. Le microkernel de Mach a été pensé comme une plate-forme susceptible d'accueillir d'autres systèmes d'exploitation: Unix 4.3 BSD, Unix System V, HP/UX et MS-DOS. L'émulation des systèmes d'exploitation hôtes est prise en charge par une couche logicielle tournant en dehors du noyau, dans l'espace utilisateur ( USER SPACE ). Le noyau est responsable de la gestion de différents niveaux d'abstraction: 1) Les processus Pour Mach, un processus consiste en un espace mémoire adressable contenant le texte et les données d'un programme et dans lequel s'exécutent un ou plusieurs threads. Mach offre un nombre limité de primitives pour la gestion des processus. Ces primitives opèrent par l'envoi de messages au noyau central. Les principales sont: Create Création d'un nouveau processus Terminate Suppression d'un processus Suspend Incrémentation du compteur d'interruption Resume Décrémentation du compteur d'interruption avec débloquage du processus lorsque le compteur est à zéro. Priority Attribution d'un niveau de priorité à un thread présent ou à venir. Assign Assigne un thread à un processeur spécifique. Info Renvoie une série d'informations sur l'utilisation de la mémoire, la durée d'exécution du programme etc.. Threads Renvoie une liste des threads rattachés au processus courant. 27 Pour pouvoir recevoir des messages, un processus doit demander au noyau de créer pour lui une sorte de boîte aux lettres appelée un port. Le port est stocké au sein du noyau et gère une queue de messages. 2) Threads Un thread est la plus petite entité exécutable. Il appartient à un et un seul processus et dispose d'une série de registres qui lui sont associés. Tous les threads relevant d'un même processus partagent le même espace mémoire et ont accès à la totalité des ressources du processus. Sur un système à processeur unique, les threads se partagent le temps d'accès au CPU en s'exécutant tour à tour. Sur un système doté de plusieurs processeurs, plusieurs threads peuvent être actifs au même moment. La création et la destruction des threads sont gérées par le microkernel qui s'occupent également de leur synchronisation ou de leur exclusion mutuelle. Six fonctions spécifiques sont dédicacées à la gestion des threads: Fork Création d'un nouveau thread Exit Destruction d'un thread Join Suspension d'un thread jusqu'à la terminaison complète d'un thread 'fils'. Detach Annonce qu'un thread peut s'exécuter indépendamment sans que le thread initial n'attende sa fin. Yield Permet de passer la main à un autre thread lorsque qu'un thread donné attend un évènement précis et monopolise inutilement le temps CPU. Self Renvoie des informations sur l'identité du thread appelant. 3) Objets Mémoire L'objet mémoire est un concept propre à Mach qui désigne une structure de données localisée dans l'espace adressable d'un processus. Il peut s'agir de simples données mais aussi d'un fichier. Chaque objet mémoire occupe une ou plusieurs pages mémoire. Les objets mémoire sont les plus petites unités constitutives du système de mémoire virtuelle de Mach. Lorsqu'un fichier est placé dans l'espace mémoire virtuel, il est traité comme un simple objet mémoire et les opérations de lecture et d'écriture s'effectuent au moyen d'instructions normales d'accès à la mémoire. Lorsque le processus prend fin, les modifications apportées au fichier dans la mémoire vive sont automatiquement reportées sur le fichier stocké sur disque. C'est le procédé baptisé 'mapped files' par les AngloSaxons. L'utilisation des objets mémoire est particulièrement intéressante sur des systèmes équipés de plusieurs processeurs. Un objet, un fichier par exemple, peut n'occuper qu'une seule région physique de la mémoire mais être néanmoins partagé entre plusieurs processus qui n'en verront qu'une représentation dans leur propre espace mémoire virtuel. La manipulation de l'espace mémoire virtuel s'effectue au moyen de quelques appels au système : Allocate Deallocate Map Copy Crée une région dans la mémoire utilisable par un objet. Libération de la mémoire allouée à un objet. Place un objet mémoire dansla mémoire virtuelle Copie d'une région dans une autre portion de la mémoire 28 Inherit 4) Ports Le port, une structure de données propre au noyau, est le fondement du système de communication de Mach. Il s'agit d'une boîte aux lettres protégée. Lorsqu'un thread désire entrer en communication avec un thread rattaché à un autre processus, il émet un message en direction d'un port. Le thread destinataire y relève le message à condition d'en disposer du droit. En effet, seuls les processus explicitement autorisés peuvent poster ou recevoir des messages relatifs à un port. Un peu comme les pipes Unix, les ports ne sont qu'unidirectionnels. Deux ports sont nécessaires pour établir une réelle communication bidirectionnelle entre un client et un serveur. Les messages ne sont pas stockés dans le port lui-même mais dans une autre structure du noyau, la queue de messages. Le port ne contient qu'un pointeur vers cette queue plus un compteur de messages. Chaque processus dispose d'un port particulier baptisé port processus par lequel il interagit avec le noyau. Les appels par un processus à des fonctions systèmes du noyau se réalisent par l'envoi d'un message transitant par le port processus. De la même manière, chaque thread dispose de son port personnel utilisé pour l'appel de fonctions de bas niveau. Pour chaque processus, le kernel maintient dans son propre espace mémoire une liste des ports auquel il a accès. Cette liste est appelée liste de capacité. A la création d'un port, le processus se voit attribuer un des droits suivants: EMISSION, RECEPTION, EMISSION UNIQUE. 29 30