Académique Documents
Professionnel Documents
Culture Documents
1. Définitions et Caractéristiques:
o Expliquez en détail les caractéristiques clés d'un système embarqué. Quels sont
les principaux défis liés à la conception de systèmes embarqués?
o Comparez les architectures RISC et CISC, en mettant en avant leurs avantages et
inconvénients dans le contexte des systèmes embarqués.
2. Systèmes Temps Réel:
o Définissez ce qu'est un système temps réel. Donnez des exemples d'applications
nécessitant des systèmes temps réel et discutez des contraintes associées.
o Expliquez les différences entre les systèmes temps réel mou et les systèmes temps
réel dur. Comment pouvez-vous garantir la gestion des contraintes temporelles
dans un système embarqué?
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main() {
int arr[] = {12, 11, 13, 5, 6, 7, 3, 9, 10, 2, 1, 8, 4};
int n = sizeof(arr) / sizeof(arr[0]);
if (pid1 == 0) {
// Processus fils 1 - tri de la première partie
// À compléter
} else if (pid2 == 0) {
// Processus fils 2 - tri de la deuxième partie
// À compléter
} else if (pid3 == 0) {
// Processus fils 3 - tri de la troisième partie
// À compléter
} else {
// Processus père - tri de la quatrième partie
// À compléter
// Attendez que tous les processus fils aient terminé avant la fusion
waitpid(pid1, NULL, 0);
waitpid(pid2, NULL, 0);
waitpid(pid3, NULL, 0);
return 0;
}
Considérez un système embarqué avec un espace de mémoire partagée entre plusieurs processus.
Implémentez un programme en C qui utilise la mémoire partagée pour permettre la
communication et la synchronisation entre deux processus.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/wait.h>
int main() {
// Créez une clé pour la mémoire partagée
key_t key = ftok("shmfile", 65);
return 0;
}
a. Utilisez les appels système IPC (Inter-Process Communication) appropriés pour créer et gérer
la mémoire partagée.
b. Assurez-vous que les processus peuvent partager des informations et synchroniser leur
exécution à l'aide de la mémoire partagée.
Supposons que vous ayez une liste de tâches à effectuer dans un système temps réel. Chaque
tâche a une durée d'exécution et une échéance à respecter. Implémentez un algorithme
d'ordonnancement pour garantir que toutes les tâches respectent leurs échéances. Choisissez un
algorithme d'ordonnancement temps réel approprié (par exemple, Rate Monotonic Scheduling) et
implémentez-le en utilisant des threads ou des processus pour représenter les différentes tâches.
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
// À compléter
int main() {
// ... (code à compléter)
return 0;
}
Remarques: