Le système Windows
Transcription
Le système Windows
Introduction Le système Windows Yves Denneulin Introduction Linux : 91 Développé par L. Torvalds Bénéficie des travaux de Stallman (GNU+GPL) • Windows a 25 ans –Au début basé sur MS/DOS –Multi-tâches coopératifs –Pas de réelle protection entre applications –Famille 1.0 -> 386 -> 95 -> 98 -> Me • Version « moderne » de Windows –Issu du noyau NT (New Technology) –Premier OS pour entreprises et serveurs de Microsoft –Multi-tâches préemptifs, protection entre application –NT -> 2000 (et serveur) -> XP -> Vista -> 7 • Windows a 25 ans –Au début basé sur MS/DOS –Multi-tâches coopératifs –Pas de réelle protection entre applications –Famille 1.0 -> 386 -> 95 -> 98 -> Me • Version « moderne » de Windows –Issu du noyau NT (New Technology) –Premier OS pour entreprises et serveurs de Microsoft –Multi-tâches préemptifs, protection entre application –NT -> 2000 (et serveur) -> XP -> Vista Plan • Schéma général • Gestion des processus et ordonnancement • Gestion mémoire Schéma général • OS structuré en couches 1.Support du matériel 2.Noyau 3.Utilisateur • Fonctions 1.Fournir des abstraction de plus haut niveau que les ressources physiques, 2.Répartir les ressources entre les processus et les utilisateurs, 3.Sécurité : séparation entre applications et utilisateurs, notions de rôle Support matériel : HAL • Hardware Abstraction Layer (Assembleur et C) • Rôle –Abstraire le matériel pour le noyau –Simple appel de fonctions • Exemple d’éléments –Ports d’entrée/sortie –Gestion des interruptions –Outils de synchronisation –Verrous matériels • Une version par configuration matériel • Une partie connue : DirectX Noyau du système • Drivers de périphériques – Source d’instabilité – Maintenant doivent être signés • Ordonnancement des processus – Partage du temps, gestion des priorités • Gestion des objets • Gestion de la configuration (base de registres) • Gestion de la mémoire – Partage – Gestion des caches • Sécurité (niveau C2 du orange book) – Contrôle des accès • Aux ressources • Aux données Espace utilisateur • Interface avec le système –NTDLL.DLL : la libc de Windows • Environnements de programmation et d’exécution –Posix, WPF –Win32 –OS/2 –.NET • Environnement graphique –Gestion des fenêtres et des interactions –Rentre en noyau pour XP (pas 2000!) • En ressort pour Vista Processus et ordonnancement Arborescence des processus • Les fibres sont des threads users • Les threads sont ordonnancés par le noyau –Une pile user + une pile noyau • Et contenus dans des processus • Regroupés en jobs –Unité pour fixer des limitations par applications –Rarement utilisé • Ordonnanceur appelé par un thread lorsque –Blocage –Fin d’un quantum –Fin d’entrée/sortie ou timeout Ordonnancement (2) Linux Une liste de processus prêts Triée par priorité Quantum : 20ms • Augmentation de la priorité –Si retour d’I/O (+2) ou de synchronisation –Perte bonus lors de la consommation de tout un quantum • Risque de famine ? –Bidouille : si inactif longtemps, 2 quantums avec priorité = 15 • Valeur du quantum –120ms sur serveurs, 20ms sur les autres • Conclusion –Algorithme traditionnel, les ajustements sont issus de l’expérience Ordonnancement • Choix du prochain thread dépend –Classe de priorité du processus –Priorité du thread • Structure de données : tableau de FIFOs –Processus temps réel : 31-16 –Processus utilisateur : 15-1 –Nettoyeur de pages : 0 –-1 : idle • Thread de plus haute priorité toujours exécutés –Risque de famine –Mais existence de pénalité Ordonnancement (3) • Windows server –Une liste par processeur –Meillleur efficacité • Windows 7 –Ajout du User Mode Scheduler (UMS) • Permet à une application d’ordonnancer ses threads Principes de base Gestion mémoire • Basé sur l’architecture x86 –2 niveaux de table des pages • Toujours des pages disponible –Le but du système est d’assurer cela –Maintient différentes listes de pages utilisables http://support.microsoft.com/kb/888732 Répartition entre processus • Principe du « working set » –Nombre de pages du processus effectivement mappées sur des pages physiques • Bornes –Taille minimum et maximum –Réglable par l’administrateur –Lorsque working set < minimum ajout de pages physiques –Lorsque > maximum suppression de pages –Ajustement possible (dernières 512 pages toujours libres) Répartition entre processus (2) • Thread balanced set manager –Réveillé chaque seconde –Vérifie qu’il y a assez de pages disponible –Sinon active le working set manager • Working set manager –Si < min ou si le processus swappe beaucoup ne change pas son working set –Sinon lui enlève des pages • En mono-processeur : utilisation du bit de référence et algo de la deuxième chance • En multi-processeur : choisit les plus anciennes Répartition entre processus (3) • Stratégie locale –Le thread regarde la quantité de pages pour chaque processus –Décision prise seulement par rapport aux bornes min et max • Mais dimension globale –Ajustement des bornes max et min –L’administrateur a son mot à dire Gestion des pages disponible (2) • Lorsqu’une page est libérée –Si elle a été modifiée (dirty) va dans modified –Sinon dans standby –Elle reste associée au processus • Si ce dernier gagne des pages on récupère directement celles-là • Si un processus se termine –Toutes ses pages physiques sont libérées –Elles sont dans libre • Aucune chance que le processus les ré-utilise Gestion des pages disponibles • Que deviennent les pages libérées ? • Existence de 4 listes de pages –Modifié Peuvent encore être rendues au processus –Standy –Libre Définitivement séparées d’un processus –zéro } } Gestion des pages disponible (3) • Transitions –Modifié->standy : lorsqu’elle a été écrite • Un thread de vidange est activé toutes les 4 sec. –Standby -> libre : terminaison du processus –Sinon dans standby –Elle reste associée au processus • Si ce dernier gagne des pages on récupère directement celles-là • Si un processus se termine –Toutes ses pages physiques sont libérées –Elles sont dans libre ou zéro • Aucune chance que le processus les ré-utilise Gestion des pages disponible (4) • Transitions • Libre -> zéro : thread de mise à zéro • Rôle de la liste zéro –Empêcher la ré-utilisation de données –Extension de la mémoire d’un processus • Rôle de la liste libre –Pages dont le contenu sera écrasé • Sortie de swap • création d’un processus Conclusion sur Windows • Vieux noyau toujours d’actualité –Dans Vista et 7 • Concepts et structures traditionnels –Tout accès se fait par des objets • Différents sous-systèmes pour la compatibilité –16 bits : msdos, win16 –Posix, Win32, OS/2 • Algorithmes traditionnels –Mais subtilité dans gestion mémoire –Ordonnancement customizé suivant les versions Liens avec les entrées/sorties • Utilisation de mémoire cache –Priorité par rapport à l’espace mémoire des processus ? • Le cache est lié au fichier –Pas au niveau habituel des périphériques • Chaque fichier est mappé en mémoire –Tout accès se fait par la mémoire –C’est la gestion de mémoire virtuelle qui fait les accès Vista/7 • Améliorations de sécurité –DEP (Data Execution Protection) –UAC (User Access Control) –Adress Space Layout Randomization • Modifications du noyau de base –Dans les réglages mais pas dans les algorithmes • Nouvelles interfaces de programmation –WPF remplace win32 –.NET unifie les communications entre les éléments