Introduction Le système Windows Yves Denneulin 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 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 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 Noyau du système 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 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 Ordonnancement 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 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 (2) Linux Une liste de processus prêts Triée par priorité Quantum : 20ms Ordonnancement (3) 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 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 Répartition entre processus (2) 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) 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) Gestion des pages disponibles 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 Que deviennent les pages libérées? Existence de 4 listes de pages Modifié Standy Libre zéro } } Définitivement Peuvent encore être rendues au processus séparées d un processus 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 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) Liens avec les entrées/sorties 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 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 Conclusion sur Windows Vista/7 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 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