Windows NT/2000/XP Enjeux et contraintes techniques Deuxième partie Le noyau NT C. Casteyde Document diffusé sous licence GNU FDL.

Slides:



Advertisements
Présentations similaires
Informatique en L2-L3 Thèmes du niveau « Expert » G.
Advertisements

Mondialiser la solidarité Une stratégie de participation sur Internet.
Windows NT/2000/XP Enjeux et contraintes techniques Troisième partie La GDI C. Casteyde Document diffusé sous licence GNU FDL.
Présentation LabPlus v3. Solution novatrice en Technologies de l’information Solution novatrice en Technologies de l’information Application pour la Gestion.
1 Programmation Orientée Objet ● Qu'est-ce qu'un objet ● Collaboration des objets ● Les classes ● Relations entre les classes – “Utilise”, “Contient”,
RMLL 2008 Isis-FISH/Gesi Benjamin Poussin Code Lutin
Stéphane Frénot, Frédéric Laforet, Frédéric Le-Mouël, Tarak Chaari IJA - TD 9 Simulation d’un réseau de senseurs.
Made with OpenOffice.org 1 Travailler en réseau intranet à l'école Un réseau : pourquoi ? Architecture du réseau Partager un dossier Enregistrer en réseau.
Windows NT/2000/XP Enjeux et contraintes techniques Douzième partie La sécurité C. Casteyde Document diffusé sous licence GNU FDL.
Développement d'applications Web avec le framework PHP Symfony 2 Mathieu Peltier (Mercator Océan - CNRS) (UMS 831, Observatoire Midi-Pyrénées)
Logiciel Assistant Gestion d’Événement Rémi Papillie (Chef d’équipe) Maxime Brodeur Xavier Pajani Gabriel Rolland David St-Jean.
Initiation à QuickPlace, janvier Initiation à QuickPlace n Nature de l'outil n Fonctions de base (lecture, création) n Fonctions de gestionnaire.
1 Créer un extension OpenOffice.org avec Eclipse Créer une extension OpenOffice.org avec Eclipse.
La mise en réseau des ordinateurs à l'école Sources : Educnet christian.caleca.free.fr.
1 Programmation en C++ Cycle de vie ● La vie d'un objet ● Destructeur ● Gestion de mémoire dynamique.
Refonte du portail eaufrance Présentation du cadre de référence pour avis GCIB – 14/10/2014 – Anne Macaire.
Module 14 : Installation et configuration des services Terminal Server.
MINISTERE DE L’ENSEIGNEMENT SUPERIEUR ET DE LA RECHERCHE SCIENTIFIQUE Université d’Adrar Diagramme d’états-transitions Présenté par Sbai Omar Benothman.
Système d’exploitation: Principe IFT6800 – E 2008 Pierre Poulin.
ARCHITECTURE MULTITENANT CONTAINER DATABASE ET PLUGGABLE DATABASES Pr. A. MESRAR
Windows NT/2000/XP Enjeux et contraintes techniques
Acquisition Rapide Multivoies
Les commandes externes
La technologie des mémoires
JAVA.
Micro Informatique au Cellier
Thèmes du niveau « Expert »
DropBox Projet App’Ifa.
Formation Utiliser l'outil ownCloud
Séminaire EOLE Dijon octobre 2010
Les Bases de données Définition Architecture d’un SGBD
Grégory WALLERICH Professeur référent REP+ WOIPPY.
MOT Éditeur de modèles de connaissances par objets typés
Collecte de données CAPI
FENIX Aperçu GLOBALE DU Système
SECURITE DU SYSTEME D’INFORMATION (SSI)
Processus et threads.
Principes de programmation (suite)
Réalisation d'agents de surveillance Zephir
Présentation J GUIRANDE.
Master Réseaux et Systèmes Distribués (RSD) Algorithmique des systèmes
Windev.
3 MOIS DE FORMATION 1 MOIS DE STAGE EN ENTREPRISE prÉsentation …
Présentation des EJB Enterprise Java Beans.
Notion De Gestion De Bases De Données
Institut Universitaire Virtuel de Formation des Maîtres
Programmation Android Bases De Données, SQL-lite
Exploiter le Web Etape 2.
Développement d’applications interactives
Integrated Business intelligence
Diagrammes UML 420-KE2-LG.
Programmation Android Première application Android
Programmation Android Composantes d’une application
Serveurs d’applications
Webaffiligue-Association
SYSTÈME D’EXPLOITATION I
Catherine Cyrot - bibliothèques numériques - Cours 5
EPITECH 2009 UML EPITECH 2009
Un Mécanisme d‘Adaptation Guidé par le Contexte en Utilisant une Représentation par Objets Manuele Kirsch Pinheiro Laboratoire LSR – IMAG, Équipe SIGMA.
Module 5 : Gestion de l'accès aux ressources à l'aide de groupes
Elles contiennent des informations autre que géométriques
Design, innovation et créativité
ManageEngine ADManager Plus 6
Service d ’Annuaire Netware pour Windows NT SABATIER Antoine IR5
Enseignement de Spécialité (EdS) classes de Première et Terminale
Backup des Postes de Travail
UC : Diagramme des cas d’utilisation Req : Diagramme d’exigence
Contenu Systèmes de test parallèles Multithreading Synchronisation
MOT Éditeur de modèles de connaissances par objets typés
Les données structurées et leur traitement
Transcription de la présentation:

Windows NT/2000/XP Enjeux et contraintes techniques Deuxième partie Le noyau NT C. Casteyde Document diffusé sous licence GNU FDL

Plan ● Présentation du noyau ● Gestion de la mémoire ● Multitâche ● Entrées / Sorties ● Programmation réseau

Un noyau puissant ● Le noyau couvre les besoins : – de gestion de la mémoire virtuelle, – de gestion des processus et des threads, – de gestion des synchronisations, – d'entrées / sorties, – de sécurité.

Caractéristiques de l'API ● L'API est cohérente grâce aux handles ● Elle est riche et fonctionnelle ● Il y a inflation de paramètres

Notion de handles ● L'API est orientée « handles » et non fichier ● Un handle est un identifiant d'objet système ● La création des objets est spécifique ● Leur manipulation est uniformisée ● L'API est cohérente vis à vis de tous les objets

Paradigmes de programmation ● La programmation peut être : – simple et séquentielle, – asynchrone et événementielle. ● Pas de notion de signal : – utilisation intensive des threads, – simulation par callbacks sur des threads dédiés. ● Pas de parenté entre les programmes : – pas de fork(), – mécanismes de duplication des handles.

Programmation événementielle WaitForMultipleObjects Thread I/O Event Fichier ProcessusSocket SetEventAIODataFin

API Complexe : CreateProcess BOOL CreateProcess( LPCTSTR lpApplicationName, LPTSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCTSTR lpCurrentDirectory, LPSTARTUPINFO lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation );

API Complexe : CreateProcess typedef struct _STARTUPINFO { DWORD cb; LPTSTR lpReserved; LPTSTR lpDesktop; LPTSTR lpTitle; DWORD dwX; DWORD dwY; DWORD dwXSize; DWORD dwYSize; DWORD dwXCountChars; DWORD dwYCountChars; DWORD dwFillAttribute; DWORD dwFlags; WORD wShowWindow; WORD cbReserved2; LPBYTE lpReserved2; HANDLE hStdInput; HANDLE hStdOutput; HANDLE hStdError; } STARTUPINFO, *LPSTARTUPINFO; typedef struct _PROCESS_INFORMATION { HANDLE hProcess; HANDLE hThread; DWORD dwProcessId; DWORD dwThreadId; } PROCESS_INFORMATION;

Plan ● Présentation du noyau ● Gestion de la mémoire ● Multitâche ● Entrées / Sorties ● Programmation réseau

Gestion de la mémoire ● Plusieurs niveaux de gestion de la mémoire ● Gestionnaire de mémoire virtuelle – VirtualAlloc, VirtualFree, VirtualProtect. ● Gestionnaire de tas – HeapCreate, HeapAlloc, HeapFree, HeapDestroy. ● Allocateurs C/C++ – malloc, free, – new, delete.

Gestion de la mémoire virtuelle ● Les fonctions Virtual*** permettent : – d'allouer des pages mémoire, – de fixer leurs attributs (protection et temps réel), – de gérer l'espace d'adressage. ● CreateFileMapping et MapViewOfFile servent : – à projeter un fichier dans l'espace d'adressage, – à réaliser des segments de mémoire partagés.

Les tas ● Les fonctions Heap*** permettent : – de créer des tas indépendants, – de contenir en partie les memory leaks, – d'éviter la fragmentation de l'espace d'adressage. ● Les fonctions de bibliothèques sont : – simples et classiques, – pour l'usage courant.

Plan ● Présentation du noyau ● Gestion de la mémoire ● Multitâche ● Entrées / Sorties ● Programmation réseau

Multithreading ● Windows utilise intensivement les threads ● La gestion des threads est intégrée ● L'absence de signaux et les handles facilitent leur usage ● Utiles pour les traitements longs asynchrones ● Permettent une montée en charge

Création des threads ● L'API de base est CreateThread ● Chaque bibliothèque fournit sa version – il faut les utiliser (initialisation des ressources), – ce n'est pas toujours faisable. ● Convention d'appel variées – Windows (WINAPI) pour CreateThread, – cdecl pour _beginthreadex.

Synchronisation ● Le Kernel fournit toutes les primitives classiques de synchronisation ● Certaines sont partageables entre processus : – mutex (CreateMutex), – sémaphores (CreateSemaphore). ● D'autres sont plus rapides mais locales : – sections critiques (InitializeCriticalSection), – compteurs atomiques (InterlockedIncrement).

Attentes d'événements ● Tout handle a un « alertable state » ● WaitForSingleObject permet d'attendre le signalement d'un événement ● (Msg)WaitForMultipleObects disponible ● Possibilité de définir ses propres événements : – CreateEvent, – partagés entre processus.

Gestion des interblocages ● À traiter au niveau de la conception ● Ne pas faire de requête externe avec une section critique prise ● Fixer l'ordre canonique de prise des ressources ● Isoler les sections critiques au maximum ● Assurer les réentrances

Plan ● Présentation du noyau ● Gestion de la mémoire ● Multitâche ● Entrées / Sorties ● Programmation réseau

Tour d'horizon des E/S ● Les entrées / sorties sont faisables : – sur les handles de fichiers (CreateFile), – sur les handles de pipes (CreateNamedPipe), – sur les sockets (socket, accept). ● Multiplexage par WaitForMultipleObjects ● E/S asynchrones et Scatter / Gather ● Fonctionnalités avancées pour serveurs

E/S fichier synchrones ● Les APIs de base sont CreateFile, ReadFile, et WriteFile ● De nombreux paramètres utilisables ● Possibilité de mapper les fichiers en mémoire – CreateFileMapping, MapViewOfFile. ● Le langage fournit ses propres mécanismes – fopen, fwrite, fclose, – à privilégier pour l'usage courant.

E/S asynchrones ● Utilisation d'un flag à la création – FILE_FLAG_OVERLAPPED dans CreateFile. ● Utilisation d'une structure OVERLAPPED – requis par ReadFile et WriteFile, – contient un événement pour attendre la fin, – résultat lisible avec GetOverlappedResult. ● Annulable avec CancelIO

E/S asynchrones ● Deuxième solution : ReadFileEx, WriteFileEx ● Ignorent l'événement de OVERLAPPED ● Appellent une callback à la fin de l'opération ● Le thread doit attendre sur les primitives spéciales – il est appelé lorsqu'il dort dans l'état « alertable », – APIs WaitFor*Ex et SleepEx.

E/S éclatées ● Les mécanismes Scatter/Gather évitent des copies de données ● Les APIs de base sont Read/WriteFileScatter ● Utilisent un tableau de structures FILE_SEGMENT_ELEMENT ● Utilisables en synchrone ou en asynchrone

Completion ports ● Technologie avancée pour les fortes charges ● Utilise un pool de threads utilisateurs d'E/S ● Réveille automatiquement les threads en fin d'opération ● Effectue un démultiplexage direct des E/S ● Extrêmement performant

Completion ports ● Un ou plusieurs threads se mettent en attente sur un port d'E/S – CreateIoCompletionPort, – GetQueuedCompletionStatus. ● Le système en reveille un à la fin de chaque opération d'E/S ● Le thread a immédiatement le contexte de l'opération

Principe des Completion ports Completion port Kernel Handle1 aio

Plan ● Présentation du noyau ● Gestion de la mémoire ● Multitâche ● Entrées / Sorties ● Programmation réseau

API de base ● L'API fondamentale est BSD-like – socket, bind, connect, accept, select, read, write, close. ● Il est possible d'utiliser les primitives d'E/S ReadFile et WriteFile ● Extension WinSock – extension des protocoles, – utilisation de messages Windows, – fonctions complémentaires.

E/S asynchrones ● WSAEventSelect associe un événement à une socket ● WSAAsyncSelect associe une fenêtre – conception étrange (fenêtre inutile), – utile pour les applications graphiques.

Conclusion ● Toutes les fonctions utiles sont présentes ● API riche, puissante et de haut niveau ● Conception claire et cohérente ● Complexe mais relativement facile d'utilisation ● Robuste et fiable ● Les performances laissent à désirer ● Au final, c'est une réussite