Articles récents
Linux/Unix : Introduction au C système
Linux devient désormais incontournable dans le monde informatique, il suffit de voir le sucés d'Android dernièrement ou du monde embarqué bien aidé par le raspberry pi. Aussi il apparaît intéressant de voir (simplement) comment on peut coder des applications sous Linux.
Le langage du monde de programmation Unix est basé sur un code C adapté au système même si d'autre sont apparus après (python, cute, ...). Nous allons donc voir comment réaliser simplement des scripts systèmes en C.
1) Le premier programme
Le compilateur que l'on retrouve sous Linux quasi-systématiquement est gcc ( GNU Compiler Collection) qui remplace le compilateur cc désormais . Il présente quelques options à connaitre :gcc possède sont propre outil de débogage gdb, nous l'étudierons plus tard. La commande pour compiler un fichier sera gcc -o my_prog my_prog.c
Donc pour coder l'inévitable programme Hello world!
Reste à tester notre programme. Pour ceux, qui ne dispose pas d'un poste linux ou qui comme moi travaille sous Windows par habitude, il y a l'incontournable émulateur linux Cygwin. Il s'installe comme un logiciel sous Windows, il suffira simplement lors du setup d'installation d'ajouter gcc qui est sous la catégorie devel ainsi que gdb.
2) Gestion de la mémoire
2.1) Généralités
Nous allons survoler la gestion de la mémoire sous Linux car il s'agit d'un mécanisme trés complexe qui nécessite bien plus que quelques lignes. Mais il est nécessaire pour la suite de voir globalement comment cela fonctionne.Avec Linux, la mémoire est divisée en deux zones:
En gros, le noyau alloue à chaque processus un espace mémoire qui lui est propre, on l'appelle la mémoire virtuelle (car elle n'est pas vraiment ce qui existe en réalité). Il existe un mécanisme qui alloue cette mémoire avec un gestionnaire dénommé MMU (memory management unit, qui correspond à la puce qui fait ce travail) et réalise la correspondance entre la mémoire physique et la mémoire virtuelle. Ce mécanisme permet de gérer plus de mémoire qu'il n'en existe mais nécessite des processus complexes pour dissocier les mémoires entre les processus. Vous trouverez une documentation très complète sur ce sujet via wikipedia et ici.
La mémoire virtuelle d'un processus est constituée par une zone mémoire pour:
2.2) Les fonctions d'allocations de mémoire
Les fonctions disponibles sont:Par exemple la commande s = (char *) malloc(10 * sizeof(char)); réserve un string de 10 caractères en mémoire.
Un exemple d'utilisation de l’allocation mémoire:
Ce qui affichera azerty.
Conclusion
Nous avons vu comment faire un programme sous Linux en C Système et quelques notions sur l'utilisation de la mémoire par le système. Dans les chapitres suivants, nous étudierons les différents mécanismes utilisés dans le monde Unix comme la gestion des processus, thread, ...
© 2024 www.doritique.fr par Robert DORIGNY