VT2016 Zephyr

=Présentation=


 * Sujet : Zéphyr, Système d'exploitation pour objets connectés
 * Auteur : Cenyo Medewou
 * Enseignants : Didier DONSEZ, Georges-Pierre BONNEAU

=Résumé=

Zéphyr est un système d'exploitation qui a été développé à l'origine par Wind River System, une filliale de Intel qui est spécialisé dans la réalisation de systèmes d'objets connecté, et qui a été repris par la Linux foundation en février 2016 dans le but de devenir le système d'exploitation leader du marché. Ce système vise les appareils de très faible mémoire, en effet le plus petit kernel de Zéphyr n'occupe que 2KB dans la mémoire, ce qui est pratique pour certains objets connecté.

=Motivations= Zéphyr est un RTOS (Real time Operating system). Un RTOS, système temps réel en français est un système d'exploitation multitâche destiné aux applications temps réel permettant de controler ainsi l'ordre d'exécution des taches et de connaitre ainsi à l'avance le resultat. Il existe plein de RTOS, par exemple :


 * abassi
 * apache mynewt OS
 * atomthreads
 * Bertos
 * Brtos
 * FreeRTOS
 * nOS
 * Windows CE

Pour avoir une liste complete, veuillez consulter la page suivante Liste complète des systèmes RTOS.

Pourquoi donc un nouveau système? Avec l'évolution du domaine des objets connectés, Linux Foundation a senti le besoin de mettre en place un système qui sera réellement Open Source et auquel tout le monde pourra participé. Un système dont la sécurité sera pris en compte dès le tout début du développement avec des expèrts en sécurités qui assurerons le bon maintien des politiques de sécurité du système avec des testes de pénétration et des revue de code. La plus part des systèmes qui existent sont au fait une partie de système, le scheduleur qui est en principe suffisant pour les objets connectés mais qui rend le développement d'application plus complex, mais Linux Foundation voulais un système complet tout comme Linux. Un système réellement connecté avec tout plein de protocoles réseau qui permettrons la connexion a diverses réseaux. Exemple des réseaux:
 * Bluetooth
 * Bluetooth LE
 * WiFi
 * 802.15.4
 * 6Lowpan
 * CoAP
 * IPv4
 * IPv6
 * NFC.

=Les fonctionnalités du système=


 * Une seule espace d’adressage
 * Facilement configurable
 * Ressources définis lors de la compilation
 * Très faible vérification d’erreur
 * Services de développement

=Architecture de Zéphyr=

L'Architecture de Zéphyr est particulière car elle est composé de 2 Kernels:


 * Le nanoKernel:
 * représente la partie essenciel du système, elle gère toute l'ordonnacement et l'exécution des taches. elle ne pèse que 2kb.
 * Le MicroKernel
 * représente la partie complémentaire du système qui offre plus de fonctionnalités comme la connectivité et la récupération des taches.



=Les Fibres=

Les fibres sont une inovation au niveau de comment sont exécuté les tâches. les fibres sont des Threads non préemptibles dans le nanokernel qui permettent d'exécuter les tâches par ordre de priorité des fibres. Les taches sont passés dans un serveur de fibre qui associe à chaque tâche une fibre.

=Synchronisation= La synchronisation dans zephyr dépend du kernel qui est utilisé
 * Le microkernel:
 * Les sémaphores
 * Les evenements
 * Les mutexes


 * Le nanokernel :
 * Les sémaphores

=Echange de données=


 * Microkernel :
 * Microkernel FIFO
 * Mailbox
 * Pipe
 * Nanokernel :
 * nanokernel FIFO
 * nanokernel LIFO
 * nanokernel stack

=Gestion de la sécurité= Le kernel est compilé en un seul code binaire, se qui permet de garantir l'authenticité du code, puisqu'il n'y aura plus de module qui sera rajouter au code du kernel. En plus les revues de code, les tests de pénétration fait par des experts en sécurité permettent de garantir la sécurité du système. Pour en savoir plus sur la gestion de sécurité de zéphyr Regarder cette vidéo.

=Gestion de l'énergie=

Zéphyr comporte un sous système de gestion d'énergie qui permet au developpeurs de réaliser leur propre application de gestion d'énergie et d'implementer leur propre politique d'économie d'énergie. par exemple, on peut mettre le processeur en mode économie dénergie ou en core désactiver certains périphériques.

Pour en savoir plus, Regarder cette vidéo

=Applications sous Zéphyr=

Les applications sous zéphyr sont développés en C et C++, mais pour C++, il y a des fonctionnalités manquantes:
 * Les exeptions
 * La gestion dynamique des objets.

=Pour aller plus loin= Site officiel de Zéphyr