Formations au coeur des technologies

Essayer, tester, échanger les bonnes pratiques, partager les retours d'expériences, ...
toutes nos formations sont disponibles à distance (classes virtuelles) et en centre de formation (présentiel), au choix.
Vous pouvez même changer de modalité en cours de formation, si vous avez des contraintes : par exemple, commencer en présentiel et continuer les jours suivants à distance.
Les outils pédagogiques et l'infrastructure de travaux pratiques mis à disposition sont accessibles depuis nos locaux, ou depuis votre entreprise ou votre lieu de télétravail, à volonté
N'hésitez pas à tester nos formations et nos serious games !

Formation : Programmation système en langage C

Durée3 jours
PrixNous consulter
Code coursLC010
Inscription

Public:

Toute personne amenée à programmer, à superviser ou à modifier des logiciels écrits en langage C et liés au système d'exploitation.

Objectifs:

Compléter des connaissances en langage C par une formation approfondie sur les mécanismes d'accès au système d'exploitation. L'accent sera particulièrement sur les fichiers, pointeurs, allocations de mémoire, communications et les librairies systèmes.

Connaissances préalables nécessaires:

Il est demandé aux participants de bien connaître les structures et fonctions de base du langage C.

Programme détaillé de la formation


(logo acroreadTéléchargez le programme) :
Rappels
Architecture d'un programme écrit en C. Phases de compilation.
Gestion de la mémoire
Rappel sur l'organisation de la mémoire. L'adressage par les pointeurs. Les opérateurs & et * .
Les pointeurs et les arguments de fonctions. Les calculs d'adresses. Les fonctions d'allocation malloc et free,et les appels systèmes: sbrk, realloc.
Atelier : écriture d'un allocateur de mémoire.


Communications inter-processus.
Les différentes méthodes : pipes, fifo, signaux, files de messages. Signaux et interruptions : les principaux signaux.
Atelier : émission d'un signal avec kill(), réception du signal par signal(). Sémaphores et appels concurrents :principe de fonctionnement des sémaphores.

Atelier : mise en oeuvre avec semget, semctl, semop. Segments de mémoires partagées :définitions de constantes et structures,

Atelier : création d'un segment de mémoire partagée avec shmget,


attachement, détachement d'un segment avec shmat, shmdt. Files de messages :constantes et structures nécessaires pour la manipulation des files de messages.
Atelier : mise en oeuvre de la primitive msgget(),gestion des files de messages (consultation, modification, suppression) avec msgctl()


Envoi d'un message à une file : msgsend(). Segments partagés :définition d'un segment de mémoire partagé. Description et mise en oeuvre des appels systèmes shmat(), shmget().
Utilisation de sémaphores pour la gestion des accès concurrents au segment. Sockets BSD :mise en oeuvre des prises réseaux pour la communication inter-processus.
Exemple avec des liens locaux. Extension aux liens distants. Communications inter-machines.
Les processus et la parallélisation
Création de processus. Définition et mise en oeuvre des primitives fork(), clone(), setsid().
Limites d'utilisation. Introduction aux threads. Les threads. La norme et les implémentations.
L'implémentation Posix : NPTL. Cycle de vie des threads: création, destruction. Synchronisation entre threads, détachement du processus principal, attente de fin d'exécution.
Attributs des threads. Gestion de la mémoire consommée, gestion de la pile de données. Gestion des accès concurrents, principe de l'exclusion mutuelle.
Atelier : mise en oeuvre des mutex. Coopération de traitements entre threads. Mise en oeuvre des conditions variables. Gestion des signaux dans un thread. Ordonnancement de threads.



Déroulé pédagogique
Modalités et délais d'accès
Méthodes mobilisées

Pythagore-F.D.

01 55 33 52 10
pfd@pythagore-fd.fr
Calendrier
Code cours : LC010

Contenu de la formation
Programmation système en langage C:

Accès à la liste des cours



Vous pouvez bien entendu composer votre programme personnel à partir de nos descriptifs de cours


Version du document : R006
Date de mise à jour du document : 2024/01/06