Changes between Version 14 and Version 15 of SujetTD0


Ignore:
Timestamp:
Feb 8, 2018, 10:45:10 PM (6 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SujetTD0

    v14 v15  
    5151== Réponses ==
    5252
    53 1. [=#R1] La mémoire physique est, en principe, la vraie mémoire qui est accédée par un espace d'adressage. Derrière chaque adresses physique, il y a de la vraie mémoire ou un registre de configuration de périphérique.
    54 1. [=#R2] La mémoire virtuelle est un espace d'adressage (un ensemble d'adresses) dans lequel s'exécute un processus.
    55 1. [=#R3] Un processus est un conteneur de ressource permettant à un programme de s'exécuter. Les ressources sont :
     53{{{
     54#!div style="font-size: 80%"
     55
     561. [=#R1]La mémoire physique est, en principe, la vraie mémoire qui est accédée par un espace d'adressage. Derrière chaque adresses physique, il y a de la vraie mémoire ou un registre de configuration de périphérique.
     57
     582. [=#R2]La mémoire virtuelle est un espace d'adressage (un ensemble d'adresses) dans lequel s'exécute un processus.
     59
     603. [=#R3]Un processus est un conteneur de ressource permettant à un programme de s'exécuter. Les ressources sont :
    5661   - un espace d'adressage
    5762   - un programme
     
    6166     - un contexte de processeur
    6267     - une pile d'exécution
    63 1. [=#R4] La mémoire virtuelle a plusieurs avantages :
     68
     694. [=#R4]La mémoire virtuelle a plusieurs avantages :
    6470   - La mémoire virtuelle permet d'isoler les processus entre eux.
    6571   - La mémoire virtuelle permet de produire du code binaire sans connaître les adresses
     
    6773   - La mémoire virtuelle d'étendre la mémoire utilisable au delà de la mémoire physique
    6874     réellement disponible (grâce au swap disque).
    69 1. [=#R5] Chaque espace virtuel va être mappé sur l'espace physique,
     75
     765. [=#R5]Chaque espace virtuel va être mappé sur l'espace physique,
    7077   c'est-à-dire que lorsqu'un processeur exécute une instruction d'accès à la mémoire.
    7178   Il commence par émettre l'adresse de l'instruction puis l'adresse de la donnée.
     
    7380   (Memory Management Unit) sur la base d'une table de page qui associe une page physique à chaque
    7481   page virtuelle donnée à l'application avec des droits d'accès.
    75 1. [=#R6] Un défaut de pages survient lorsque que le processeur demande l'accès à une adresse
     82
     836. [=#R6]Un défaut de pages survient lorsque que le processeur demande l'accès à une adresse
    7684   virtuelle pour laquelle l'OS n'a pas encore attribuée de page physique.
    7785   Ce n'est pas forcément un problème, c'est même le cas normal, puisque l'OS n'attribue des
    7886   pages physiques que si c'est nécessaire.
    79 1. [=#R7] Sûreté et sécurité :
     87
     887. [=#R7]Sûreté et sécurité :
    8089   - sûreté pour ne pas faire un mauvais usage du matériel
    8190   - sécurité pour ne pas utiliser les droits pour volontairement casser le matériel
    82 1. [=#R8] C'est un pseudo-fichier qui permet d'accéder à la mémoire physique au travers de
     91
     928. [=#R8]C'est un pseudo-fichier qui permet d'accéder à la mémoire physique au travers de
    8393   l'abstraction des fichiers.
    84 1. [=#R9] Il faut avoir les droits du root pour ouvrir ce fichier.
     94
     959. [=#R9]Il faut avoir les droits du root pour ouvrir ce fichier.
    8596   Ce n'est évidemment pas un fichier, ce n'est qu'une abstraction.
    86 1. [=#R10]il faut l'ouvrir avec open(), on peut ensuite utiliser read() et write()
     97
     9810. [=#R10]il faut l'ouvrir avec open(), on peut ensuite utiliser read() et write()
    8799   mais il est plus propre d'utiliser mmap() qui permet d'accéder à la mémoire comme
    88100   de la mémoire (comme un tableau d'octets).
     
    92104    , RPI_BLOCK_SIZE         // nombre d'octets demandés qui doit être un multiple de la taille d'une page
    93105    , PROT_READ | PROT_WRITE // type d'accès autorisé par le programme
    94      
    95 
    96106    , MAP_SHARED             // si plusieurs processus map le même zone, ils verront la même copie (!=MAP_PRIVATE)
    97      , mmap_fd               // file descriptor : identifiant de /dev/mem donné par open
    98      , BCM2835_GPIO_BASE );  // décalage par rapport au premier octet de la mémoire
     107    , mmap_fd                // file descriptor : identifiant de /dev/mem donné par open
     108    , BCM2835_GPIO_BASE );   // décalage par rapport au premier octet de la mémoire
    99109
    100110   (unsigned volatile int *) GPSEL0 = mmap_result; // volatile pour ne pas avoir une mise en cache dans les registres
    101111   *GPSELO = value;
    102112}}}
    103 1. [=#R11] Clignoter une led :
     113
     11411. [=#R11]Clignoter une led :
    104115   - ouvrir /dev/mem
    105116   - mapper la zone où se trouve les registres de contrôle des GPIO
     
    110121     - broche <= 1
    111122     - attendre
    112 1. [=#R12] les fonctions nécessaires sont:
     123
     12412. [=#R12]les fonctions nécessaires sont:
    113125   - open
    114126   - mmap
    115127   - sleep (ou un équivalent)
     128}}}