Changes between Version 14 and Version 15 of SujetTD0
- Timestamp:
- Feb 8, 2018, 10:45:10 PM (7 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SujetTD0
v14 v15 51 51 == Réponses == 52 52 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 56 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. 57 58 2. [=#R2]La mémoire virtuelle est un espace d'adressage (un ensemble d'adresses) dans lequel s'exécute un processus. 59 60 3. [=#R3]Un processus est un conteneur de ressource permettant à un programme de s'exécuter. Les ressources sont : 56 61 - un espace d'adressage 57 62 - un programme … … 61 66 - un contexte de processeur 62 67 - une pile d'exécution 63 1. [=#R4] La mémoire virtuelle a plusieurs avantages : 68 69 4. [=#R4]La mémoire virtuelle a plusieurs avantages : 64 70 - La mémoire virtuelle permet d'isoler les processus entre eux. 65 71 - La mémoire virtuelle permet de produire du code binaire sans connaître les adresses … … 67 73 - La mémoire virtuelle d'étendre la mémoire utilisable au delà de la mémoire physique 68 74 réellement disponible (grâce au swap disque). 69 1. [=#R5] Chaque espace virtuel va être mappé sur l'espace physique, 75 76 5. [=#R5]Chaque espace virtuel va être mappé sur l'espace physique, 70 77 c'est-à-dire que lorsqu'un processeur exécute une instruction d'accès à la mémoire. 71 78 Il commence par émettre l'adresse de l'instruction puis l'adresse de la donnée. … … 73 80 (Memory Management Unit) sur la base d'une table de page qui associe une page physique à chaque 74 81 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 83 6. [=#R6]Un défaut de pages survient lorsque que le processeur demande l'accès à une adresse 76 84 virtuelle pour laquelle l'OS n'a pas encore attribuée de page physique. 77 85 Ce n'est pas forcément un problème, c'est même le cas normal, puisque l'OS n'attribue des 78 86 pages physiques que si c'est nécessaire. 79 1. [=#R7] Sûreté et sécurité : 87 88 7. [=#R7]Sûreté et sécurité : 80 89 - sûreté pour ne pas faire un mauvais usage du matériel 81 90 - 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 92 8. [=#R8]C'est un pseudo-fichier qui permet d'accéder à la mémoire physique au travers de 83 93 l'abstraction des fichiers. 84 1. [=#R9] Il faut avoir les droits du root pour ouvrir ce fichier. 94 95 9. [=#R9]Il faut avoir les droits du root pour ouvrir ce fichier. 85 96 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 98 10. [=#R10]il faut l'ouvrir avec open(), on peut ensuite utiliser read() et write() 87 99 mais il est plus propre d'utiliser mmap() qui permet d'accéder à la mémoire comme 88 100 de la mémoire (comme un tableau d'octets). … … 92 104 , RPI_BLOCK_SIZE // nombre d'octets demandés qui doit être un multiple de la taille d'une page 93 105 , PROT_READ | PROT_WRITE // type d'accès autorisé par le programme 94 95 96 106 , 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 open98 , BCM2835_GPIO_BASE );// décalage par rapport au premier octet de la mémoire107 , 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 99 109 100 110 (unsigned volatile int *) GPSEL0 = mmap_result; // volatile pour ne pas avoir une mise en cache dans les registres 101 111 *GPSELO = value; 102 112 }}} 103 1. [=#R11] Clignoter une led : 113 114 11. [=#R11]Clignoter une led : 104 115 - ouvrir /dev/mem 105 116 - mapper la zone où se trouve les registres de contrôle des GPIO … … 110 121 - broche <= 1 111 122 - attendre 112 1. [=#R12] les fonctions nécessaires sont: 123 124 12. [=#R12]les fonctions nécessaires sont: 113 125 - open 114 126 - mmap 115 127 - sleep (ou un équivalent) 128 }}}