AIO_FSYNC |
AIO : Fichier dans la synchronisation |
| GNU C |
aio.h |
Syntaxe
|
int aio_fsync(int op, struct aiocb *aiocbp);
|
Paramètres
| Nom |
Description |
| op |
Ce paramètre indique le type de synchronisation à effectuer. Il prend généralement la valeur O_SYNC (ou O_DSYNC selon les implémentations). Ce paramètre précise si la synchronisation concerne uniquement les données (O_DSYNC) ou les données et les métadonnées (O_SYNC). |
| aiocbp |
Ce paramètre est un pointeur vers une structure aiocb, représentant la requête d'entrée/sortie asynchrone. Ce paramètre identifie le fichier à synchroniser et contient les informations nécessaires à l'opération. |
Description
Cette fonction permet d'effectuer la synchronisation d'un fichier dans la synchronisation d'entrée/sortie en temps réel.
Remarques
- La fonction aio_fsync, déclarée dans l'en-tête GNU C aio.h, permet de synchroniser un fichier de façon désynchronisée : Elle est utilisée pour forcer
l'écriture des données sur disque sans bloquer l'exécution du programme appelant. Cela permet un meilleur parallélisme dans les applications traitant de nombreuses
écritures.
- Le paramètre op indique le type de synchronisation à effectuer, généralement O_SYNC ou O_DSYNC : O_SYNC synchronise les données et les métadonnées, tandis
que O_DSYNC ne synchronise que les données. Ce choix influence la performance et la durabilité des écritures sur disque.
- Le second paramètre, aiocbp, est un pointeur vers une structure aiocb, décrivant l'opération d'entrée/sortie désynchronisée : Elle contient des champs comme
le descripteur de fichier (aio_fildes) et les notifications d'achèvement (aio_sigevent). Elle centralise toutes les informations nécessaires pour exécuter la
synchronisation de manière non bloquante.
- aio_fsync est utile dans les systèmes où la cohérence des données est cruciale, mais où les performances ne doivent pas être sacrifiées : Elle
permet d'éviter les blocages que causeraient des appels à fsync classiques dans les traitements intensifs. C'est une fonction typiquement utilisée dans les
bases de données, systèmes embarqués ou serveurs à haute performance.
- L'appel de aio_fsync déclenche une opération de fond gérée par le noyau, sans attente immédiate du résultat : Pour suivre l'état de la
synchronisation, il faut utiliser aio_error (pour l'état) et aio_return (pour le résultat). Cette séparation permet une gestion fine et parallèle de multiples opérations.
- L'utilisation correcte de cette fonction suppose que le fichier a été ouvert avec des options compatibles avec l'entrée/sortie désynchronisée : Par exemple,
l'activation de O_DIRECT ou l'usage de tampons alignés peut être nécessaire selon le système. Une mauvaise configuration peut empêcher la synchronisation ou en limiter
les effets.
- Contrairement à aio_fsync64, la version aio_fsync utilise la structure aiocb classique, non adaptée aux très grands fichiers : Elle reste cependant largement
suffisante pour la plupart des cas standards en environnement 32 ou 64 bits. Pour les besoins spécifiques en traitement massif de données, la version 64 bits est à
privilégier.
- aio_fsync est une brique essentielle dans une architecture d'entrée/sortie réactive, permettant de découpler logique applicative et persistance disque : Son usage
demande rigueur dans la gestion des événements et des erreurs désynchronisées. Elle illustre bien la complexité mais aussi la puissance des API POSIX d'entrée/sortie
avancée.
Dernière mise à jour : Mardi, le 19 Mai 2020