SYSTÈME D’EXPLOITATION I

Slides:



Advertisements
Présentations similaires
Active Directory Windows 2003 Server
Advertisements

Module Systèmes d’exploitation
Module Systèmes d’exploitation
GEF 435 Principes des systèmes dexploitation Le matériel des ordinateurs Revue Pt II (Tanenbaum 1.4)
Module 5 : Implémentation de l'impression
Informatique Deug2 Sciences Eco S. Maabout 2004/2005.
GEF 435 Principes des systèmes d’exploitation
GEF 435 Principes des systèmes dexploitation Structure des systèmes dexploitation (Tanenbaum 1.7)
GEF 435 Principes des systèmes d’exploitation
GEF 435 Principes des systèmes d’exploitation
GEF 243B Programmation informatique appliquée Types dérivés, structures et tableaux §
Simple OS La Pagination
Mémoire & Processus Cours SE - SRC
13 – 16 Décembre 2005 Laurence Viry Introduction à MPI MPI_2.
Architecture de machines La mémoire
Architecture de machines La mémoire
Systèmes d’exploitation
Système d’Exploitation
Gestion de la Mémoire Bases Swapping Allocation Contigue Pagination
Gérer les tablespaces et les fichiers de données
Système d’exploitation
Les mémoires :. Mémoriser Enregistrer Conserver Restituer.
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Module 4 : Création et gestion de comptes d'utilisateur
Création et gestion de comptes d'utilisateur
LES FICHIERS Un exemple : Unix.
Allocation de mémoire Allocation de mémoire.
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
GPA435 Systèmes d’exploitation et programmation de système
Périphériques et bus système
Module 3 : Analyse des performances du serveur
CSI3531 – Labo 1 Lobservation du comportement de processus.
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Gestion des transactions SQLServer.
Windows Server Virtualization
Gestion de Fichiers GF-3: Structures d’Enregistrements, Acces Sequentiel et Direct, Manipulation de classes en C++ (Base sur des segments des Chapitres.
Vue d'ensemble Surveillance des journaux d'événements
Le langage C Rappel Pointeurs & Allocation de mémoire.
Sécurité des Systèmes Informatique
CEDCOM architecture haute performance pour des applications “big data” Tanguy Raynaud Projet CEDAR.
SYSTÈME D’EXPLOITATION I
Mémoire périphérique Stockage primaire: Mémoire principale (RAM)
Travailler avec des processus
Les Composants de l’architecture Oracle
SYSTÈME D’EXPLOITATION I
Cours de Systèmes d’exploitations
Créer des packages.
SYSTÈME D’EXPLOITATION I
Composants de l'architecture Oracle
Programmation Système et Réseau
SYSTÈME D’EXPLOITATION I
Structure de stockage et relations
02/10/2013JC LP MD1 COURS_3. 02/10/2013JC LP MD2 Direct Memory Access DMA.
9 décembre 2014J.Callot L.Piedfort1 Chapitre_4 K60 Caches MMU.
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
Un programme Algorithme permettant au processeur de s'alimenter:
1 LE BUS PCI 8 ième partie: L ’espace de configuration Sommaire - Repère zHuitième partieL ’espace de configuration yQu ’est-ce? yEspace de configuration.
1. Spoon Christophe Delagarde, septembre 1998 I.U.T., Université de la Méditerrainée 2.
Doan Chien Thang Aôut,2008.  La vue d'ensemble des systèmes d'exploitation  Les processus et les fils  Gestion de la mémoire  Le système des fichiers.
Architecture et technologie des ordinateurs II
Patricia Renault UPMC 2005/2006
Architecture et technologie des ordinateurs II
Ordinateurs, Structure et Applications
ALLOCATION DU CPU et GESTION DES TRAVAUX.
Memoire.
Chapitre 12 Surveillance des ressources et des performances Module S41.
1 UNIX AVANCE Yves PAGNOTTE – Janvier – LES PROCESSUS SOUS UNIX.
SYSTÈME D’EXPLOITATION I
Transcription de la présentation:

SYSTÈME D’EXPLOITATION I SIF-1015

Contenu du cours 10 Gestion de la mémoire Concepts et opérations de base Concepts et opérations avancées Implémentation LECTURES Chapitre 8 et 9 (OSC) Chapitre 21 (Mitchell) Chapitre 8 (Card)

Concepts et opérations de base Espace d’adressage d’un processus Chaque processus est associé à un espace d’adressage qui représente les zones de mémoire allouées au processus. Cet espace d’adressage comporte: Le code du processus Les données du processus décomposées en deux segments: segment data qui contient les variables initialisées et le segment bss qui contient les variables non initialisées Le code et les données des bibliothèques partagées utilisées par le processus La pile utilisée par le processus

Concepts et opérations de base Espace d’adressage d’un processus LINUX alloue 3 Go de 4 Go à cet espace d’adressage. Le Go restant est réservé à la mémoire utilisée par le noyau (code de LINUX et les données qu’il manipule) Les 3 Go disponibles sont décomposés en régions mémoire utilisables par le processus Le programme AfficheAdresses.c affiche l’adresse de diverses variables et fonctions. Les régions mémoire utilisées par un processus peuvent être visualisées (fig. 8.1, Card)

Concepts et opérations de base Espace d’adressage d’un processus (AfficheAdresses.c)

Concepts et opérations de base Espace d’adressage d’un processus (AfficheAdresses.c)

Concepts et opérations avancées Régions de mémoire L’espace d’adressage d’un processus est composé de plusieurs régions de mémoire. Chaque région mémoire est caractérisée par plusieurs attributs: Adresses de début et de fin Droits d’accès de cette zone L’objet qui lui est associé (ex: fichier exécutable) Les régions de mémoire contenues dans l’espace d’adressage d’un processus peuvent être déterminées en affichant le contenu du fichier maps (dans le répertoire de chaque processus dans /proc) L’affichage donne: Les adresses du début et de fin de la région de mémoire Les droits d’accès (p indique que la région peut être partagée entre processus) Le déplacement du début de la région dans l’objet Le numéro du périphérique (disque) contenant l’objet Le numéro d’i-node de l’objet

Concepts et opérations avancées Régions de mémoire Dans cet exemple, les trois premières régions (trois premières lignes) correspondent au programme exécuté (segment de code, segment de données initialisées, et segment de données non-initialisées)

Implémentation Gestion des tables de pages (pagination) LINUX utilise les mécanismes de mémoire virtuelle fournis par le processeur sur lequel il s’exécute Les adresses manipulées par le noyau et les processus sont des adresses virtuelles et une conversion est effectuée par le processeur pour transformer une adresse virtuelle en adresse physique en mémoire centrale La conversion fonctionne de la façon suivante: Une adresse mémoire est décomposée en deux parties: Un numéro de page Un déplacement dans la page Le numéro de page est utilisé comme indice dans la table de page, ce qui fournit l’adresse physique d’une page en mémoire centrale À cette adresse est ajouté le déplacement pour obtenir l’adresse physique du mot concerné

Implémentation Motivations derrière la VM La DRAM est utilisée comme une cache pour le disque L’espace d’addresses (virtuelle) d’un processus peut dépasser la capacité de la mémoire physique La somme des espaces d’adresses de plusieurs processus peut dépasser la capacité de la mémoire physique Faciliter la gestion de mémoire Plusieurs processus résident en DRAM Chaque processus possède son espace d’adresses Seulement le code et les données actives sont en DRAM Le OS alloue plus de mémoire au processus au besoin Facilite la gestion de la protection Un processus ne peut interférer avec un autre Chacun opère dans un espace d’adresse distinct Les processus user ne peuvent accéder aux informations privilégiées Les sections différentes d’un espace d’adresses ont différentes permissions

Implémentation Gestion des tables de pages (pagination) Conversion d’adresse virtuelle en adresse physique

Système avec VM (Motivation #1) Exemples: Stations de travail, serveurs, PC modernes, etc. Memory 0: 1: N-1: Page Table Virtual Addresses Physical Addresses 0: 1: CPU P-1: Disk Traduction d’Addresse: Le matériel convertit les adresses virtuelles en adresses physiques via une table de lookup (page table) gérée par le OS

Faute de page Qu’arrive-t-il si un objet est sur disque au lieu de la RAM ? PTE indique que la VA n’est pas en RAM Le OS lance un exception handler qui transfert les données du disque vers la RAM Le processus courant est interrompu, un autre est démarré Le OS contrôle pleinement le transfert Before fault After fault Memory Memory Page Table Page Table Virtual Addresses Physical Addresses Virtual Addresses Physical Addresses CPU CPU Disk Disk

Gestion d’une faute de page CPU signale le I/O controller Lecture d’un bloc de longueur P à partir de l’adresse X sur le disque et stocké à l’adresse Y de la RAM Lecture Mode DMA Géré par le I/O controller I / O Controller signale la fin du transfert CPU est interompu OS redémarre le processus suspendu (1) Initiate Block Read Processor Reg (3) Read Done Cache Memory-I/O bus (2) DMA Transfer I/O controller Memory disk Disk Disk disk

Motivation #2: Gestion de mémoire Plusieurs processus peuvent résider en RAM Comment résoudre les conflits d’addressage ? Si deux processus accèdent à la même adresse RAM ? memory invisible to user code kernel virtual memory %esp stack Linux/x86 process memory image Memory mapped region forshared libraries the “brk” ptr runtime heap (via malloc) uninitialized data (.bss) initialized data (.data) program text (.text) forbidden

Solution: Espaces d’adresses virtuelles séparées Les espaces d’adresses virtuelles et physiques sont divisés en blocs de dimension égale Chaque bloc correspond à une page ( virtuelle et physique) Chaque processus possède son propre espace d’adresses Le OS contrôle l’assignation de pages virtuelles en mémoire physique Physical Address Space (DRAM) Virtual Address Space for Process 1: Address Translation VP 1 PP 2 VP 2 ... N-1 (e.g., read/only library code) PP 7 Virtual Address Space for Process 2: VP 1 VP 2 PP 10 ... M-1 N-1

Motivation #3: Protection Les PTE contiennent des droits d’accès Les violations d’accès sont trappées par le OS Page Tables Memory Physical Addr Read? Write? PP 9 Yes No PP 4 XXXXXXX VP 0: VP 1: VP 2: • 0: 1: N-1: Process i: Physical Addr Read? Write? PP 6 Yes PP 9 No XXXXXXX • VP 0: VP 1: VP 2: Process j:

Implémentation: Tables de Pages Memory resident page table (physical page or disk address) Virtual Page Number Physical Memory Valid 1 1 1 1 1 1 Disk Storage (swap file or regular file system file) 1

Implémentation Gestion des tables de pages (pagination) En raison de la taille de l’espace mémoire adressable par le processeur, la table des pages n’est pas implémentée sous forme d’une seule table contiguë en mémoire puisque cette approche nécessiterait trop de mémoire Par exemple: Les processeurs de l’architecture x86 peuvent adresser 4 Go La taille des pages mémoire est de 4 Ko (1 M pages de 4 Ko) Chaque entrée de la table occupe quatre octets (adresse de 32 bits) Une table de pages complète utiliserait 1 M entrées, pour une occupation de mémoire de 4 Mo La table de pages est alors décomposée en au moins 2 niveaux: Un catalogue de table de pages contenant les adresses des pages qui contiennent des parties de la table des pages complète Les parties utilisées de la table des pages sont chargées en mémoire

Tables de pages multi-niveaux Étant donné: Bloc de 4KB (212) Adresses de 32-bits PTE de 4-byte Problème: Table de pages de 4 MB ! 220 *4 bytes Solution Table de pages multi-niveaux e.g., Table 2-niveaux (P6) Niveau 1 : 1024 entrées, chaque entrée pointe sur une table de pages de niveau 2 Niveau 2: 1024 entrées, chacune pointe sur une page en DRAM Level 2 Tables Level 1 Table ...

Structure de la table de pages 2-niveaux (P6) Page répertoire: 1024 PDEs de 4-byte qui pointent chacune sur une table de pages Une page répertoire est attribuée par processus La page répertoire d’un processus doit être en mémoire quand ce processus s’exécute Cette page est toujours pointée par le PDBR Page tables: 1024 PTEs de 4-byte qui pointent sur une page en RAM. Les tables de pages peuvent aller et venir entre la RAM et le disque Up to 1024 page tables 1024 PTEs page directory ... 1024 PDEs 1024 PTEs ... 1024 PTEs

Mapping VA->PA (P6) Virtual address Physical address page directory 10 10 12 VPN1 VPN2 VPO Virtual address word offset into page directory word offset into page table word offset into physical and virtual page page directory page table physical address of page base (if P=1) PTE PDE PDBR physical address of page table base (if P=1) physical address of page directory 20 12 PPN PPO Physical address

Représentation d’un espace virtuel Page Directory PT 3 P=1, M=1 P=0, M=0 P=0, M=1 • PT 2 PT 0 Page 0 Page 1 Page 2 Page 3 Page 4 Page 5 Page 6 Page 7 Page 8 Page 9 Page 10 Page 11 Page 12 Page 13 Page 14 Page 15 Example simple Espace d’adresses virtuelles de 16 pages Flags P: La PDE ou PTE en mémoire ? M: Cet espace de VA a-t-il été mappé ? Mem Addr Disk Addr In Mem On Disk Unmapped

Implémentation Gestion des tables de pages (pagination) L’intérêt de cette table de pages à deux niveaux repose sur le fait que la table de pages n’a pas besoin d’être chargée entièrement en mémoire Si par exemple, un processus utilise 6 Mo de mémoire sur un processeur x86, seulement trois pages sont utilisées pour la table des pages: La page contenant le catalogue La page contenant la partie de la table de pages correspondant aux premiers 4 Mo de mémoire (1 K entrées, chaque entrée pointe sur une page de 4 Ko) La page contenant la partie de la table de pages correspondant aux prochains 4 Mo de mémoire (la moitié est utilisée)

Implémentation Gestion des pages mémoire (descripteur de page) LINUX tient à jour l’état de chaque page de la mémoire centrale. Il utilise un tableau de descripteurs, pointé par la variable mem_map pour décrire chaque page La structure page définit le format de ce descripteur

Implémentation Gestion des pages mémoire (descripteur de page) La structure page définit le format de ce descripteur

Implémentation Espace d’adressage des processus (descripteur de régions mémoire) L’espace d’adressage des processus peut être formé de plusieurs régions mémoire Le noyau maintient en mémoire une description des régions mémoire par un processus. La structure vm_area_struct (fichier définit le format du descripteur de chaque région

Implémentation Espace d’adressage des processus (descripteur de régions mémoire) L’espace d’adressage des processus peut être formé de plusieurs régions mémoire memory invisible to user code kernel virtual memory %esp stack Linux/x86 process memory image Memory mapped region for shared libraries the “brk” ptr runtime heap (via malloc) uninitialized data (.bss) initialized data (.data) program text (.text) forbidden

Linux organise la VM comme une collection d’espaces virtuels process virtual memory vm_area_struct task_struct mm_struct vm_end vm_start mm pgd vm_prot vm_flags mmap shared libraries vm_next 0x40000000 vm_end pgd: page directory address vm_prot: read/write permissions for this area vm_flags shared with other processes or private to this process vm_start data vm_prot vm_flags 0x0804a020 text vm_next vm_end vm_start 0x08048000 vm_prot vm_flags vm_next

Traitement des fautes de pages sous LINUX La VA est-elle légale? Est-elle définit dans une vm_area_struct? Sinon signaler un segmentation violation (e.g. (1)) L’opération est-elle légale? Le processus peut-il faire un read/write ? Sinon signaler un protection violation (e.g., (2)) SI OK, traite la faute de page e.g., (3) process virtual memory vm_area_struct vm_end r/o vm_next vm_start shared libraries 1 read vm_end r/w vm_next vm_start 3 data read 2 text write vm_end r/o vm_next vm_start

Exec() explicité Pour exécuter un nouveau programme p dans le contexte du processus courant par exec(): Libérer les vm_area_struct et les tables de pages de l’ancien processus Créer de nouvelles vm_area_struct et des tables de pages pour le nouveau processus Zones stack, bss, data, text, shared libs. Zones text et data correspondant au fichier .exe Zone bss et stack initialisées à 0 Intialiser le PC au début du programme à exécuter dans la zone .text Linux swap ensuite les pages de codes et de données au besoin process-specific data structures (page tables, task and mm structs) physical memory same for each process kernel code/data/stack kernel VM 0xc0 %esp stack demand-zero process VM Memory mapped region for shared libraries .data .text libc.so brk runtime heap (via malloc) demand-zero uninitialized data (.bss) initialized data (.data) .data program text (.text) .text forbidden p

Fork() explicité Création d’un nouveau processus avec fork(): Copier les structures mm_struct, vm_area_struct, et les tables de pages du processus père. Au début les deux processus partagent les mêmes pages en mémoire Comment peut-on avoir deux espaces d’adresses distincts sans recopier toutes les pages virtuelles ? => Technique du “copy on write” Technique du copy-on-write Créer initialement les pages W en R/O Le champ flag des vm_area_struct de ces zones est initialisé à private “copy-on-write” Un accès en écriture à ces pages par un des processus cause une faute de page Le gestionnaire de fautes reconnait le copy-on-write, fait une copie de la page et restaure la permission en écriture Résultat: Copies de pages sont retardées tant qu’un accès en écriture n’est pas requis (i.e., quand un processus essaie de modifier une page partagée).

Fork() explicité Création d’un nouveau processus avec fork(): Technique du “copy on write” (avant un page fault)

Fork() explicité Création d’un nouveau processus avec fork(): Technique du “copy on write” (après un page fault)

Implémentation Espace d’adressage des processus (descripteur de régions mémoire, structure vm_area_struct )

Implémentation Espace d’adressage des processus (descripteur d’espace d’adressage) LINUX maintient un descripteur de l’espace d’adressage. Ce descripteur est accessible par le champ mm de la structure task_struct associée à chaque processus. mm pointe sur une structure mm_struct

Implémentation Espace d’adressage des processus (descripteur d’espace d’adressage) Structure mm_struct