PRINCIPE DES SYSTEMES D’EXPLOITATION Gestion des fichiers Dr. TOSSOU Kodjo Elom Francis K. Directeur de NUFIO S.A.R.L. Introduction La gestion des fichiers dans les systèmes d'exploitation est une composante cruciale pour organiser, stocker et manipuler les données. Ce chapitre explore en détail les différents aspects de la gestion des fichiers, en mettant l'accent sur les systèmes de fichiers, les inodes, les descripteurs de fichiers et les fichiers spéciaux. Systèmes de fichiers • Un système de fichiers est une méthode utilisée par les systèmes d'exploitation pour organiser et gérer les données stockées sur un support de stockage, tel qu'un disque dur, une clé USB ou une carte mémoire. • Il fournit une structure hiérarchique pour organiser les fichiers et répertoires (également appelés dossiers) de manière à ce qu'ils puissent être facilement localisés, accessibles et gérés par le système d'exploitation et les applications. Systèmes de fichiers • Voici quelques éléments clés d'un système de fichiers : • 1. Hiérarchie de fichiers et de répertoires : Un système de fichiers organise les données en une structure arborescente composée de fichiers et de répertoires. Les répertoires peuvent contenir d'autres répertoires ainsi que des fichiers, permettant une organisation logique des données. • 2. Noms de fichiers : Les fichiers sont identifiés par des noms uniques à l'intérieur de leur répertoire parent. Ces noms peuvent être composés de lettres, de chiffres et de caractères spéciaux, et ils peuvent avoir une longueur maximale spécifiée par le système de fichiers. Systèmes de fichiers • 3. Gestion de l'espace disque : Un système de fichiers alloue et gère l'espace disponible sur le support de stockage. Il tient généralement un enregistrement des espaces utilisés et libres, et peut organiser physiquement les données sur le disque pour une récupération efficace. • 4. Permissions d'accès : Les systèmes de fichiers peuvent inclure des mécanismes de contrôle d'accès pour réguler qui peut accéder, lire, écrire ou supprimer des fichiers. Cela permet de protéger la confidentialité et l'intégrité des données. Systèmes de fichiers • 5. Métadonnées : Un système de fichiers stocke des métadonnées associées à chaque fichier, telles que sa taille, son type, son emplacement sur le disque, ses autorisations d'accès, etc. Ces métadonnées sont utilisées par le système d'exploitation pour gérer les fichiers et les répertoires. • 6. Types de système de fichiers : Il existe différents types de systèmes de fichiers, chacun ayant ses propres caractéristiques et fonctionnalités. Parmi les exemples courants, on trouve FAT32, NTFS, exFAT, ext4, HFS+, APFS, etc. Chaque système de fichiers peut avoir des limites de taille de fichier, des limites de taille de volume, des fonctionnalités de sécurité et des performances différentes. 1- Hiérarchie de fichiers et de répertoires • La hiérarchie des dossiers et des fichiers dans un système de fichiers est généralement organisée de manière arborescente, suivant un modèle de répertoires (ou dossiers) et de fichiers. Voici comment cela fonctionne typiquement : • 1. Racine du système de fichiers : Tout système de fichiers commence par un répertoire racine, qui est le niveau le plus élevé de la hiérarchie. Ce répertoire est représenté par un symbole spécial (comme "/" dans les systèmes Unix/Linux ou "C:\" dans les systèmes Windows). 1- Hiérarchie de fichiers et de répertoires • 2. Répertoires (ou dossiers) : Les répertoires sont des conteneurs qui peuvent contenir à la fois d'autres répertoires et des fichiers. Ils sont utilisés pour organiser les fichiers de manière logique. Par exemple, dans un système de fichiers typique, vous pouvez avoir des répertoires tels que "Documents", "Images", "Musique", etc. • 3. Fichiers : Les fichiers sont des unités individuelles de données stockées dans le système de fichiers. Ils sont généralement organisés à l'intérieur des répertoires. Les fichiers peuvent être de différents types, tels que des documents texte, des images, des vidéos, des programmes exécutables, etc. 1- Hiérarchie de fichiers et de répertoires • 4. Arborescence : La structure arborescente est formée lorsque des répertoires sont organisés les uns sous les autres pour créer une hiérarchie. Par exemple, vous pouvez avoir un répertoire "Documents" contenant un sous-répertoire "Travail" qui contient à son tour des fichiers spécifiques liés au travail. • 5. Chemin d'accès : Chaque fichier et répertoire dans le système de fichiers est identifié par un chemin d'accès unique qui indique sa position dans la hiérarchie. Le chemin d'accès complet d'un fichier comprend tous les répertoires parent, séparés par des délimiteurs spécifiques au système d'exploitation. Par exemple, dans un système Unix/Linux, le chemin "/home/utilisateur/Documents/fichier.txt" indique que le fichier "fichier.txt" est situé dans le répertoire "Documents", qui est à son tour situé dans le répertoire de l'utilisateur "utilisateur". 1- Hiérarchie de fichiers et de répertoires • La hiérarchie des dossiers et des fichiers dans un système de fichiers est organisée de manière arborescente, avec un répertoire racine à partir duquel tous les autres répertoires et fichiers sont accessibles. Les répertoires sont utilisés pour organiser les fichiers de manière logique, et chaque fichier est identifié par un chemin d'accès unique dans la structure arborescente. 2- Noms de fichiers • Les règles et la structure des noms de fichiers varient selon le système de fichiers et le système d'exploitation utilisés. Je vais vous donner des détails sur quelques systèmes de fichiers courants et leurs règles de nommage, avec des exemples et des références à des dates spécifiques pour illustrer l'évolution de ces règles • 1. Système de fichiers FAT (File Allocation Table) : • 2- Noms de fichiers - Structure des noms de fichier (FAT12, FAT16, FAT32): Les systèmes de fichiers FAT utilisent une structure de nommage de 8.3, ce qui signifie que les noms de fichier sont composés d'un maximum de 8 caractères suivis d'une extension de 3 caractères, séparés par un point. Les caractères autorisés sont généralement limités à des lettres, des chiffres et quelques caractères spéciaux. • - Limitation à un ensemble restreint de caractères : lettres majuscules et minuscules, chiffres, et un ensemble limité de caractères spéciaux (par exemple, "-", "_"). • - Exemple (DOS/Windows) : "exemple.txt" • - Dates de référence : Les spécifications originales des systèmes de fichiers FAT remontent aux années 1970 et ont évolué au fil du temps avec différentes versions de DOS et de Windows. • 2. Système de fichiers NTFS (New Technology File System) : • 2- Noms de fichiers - Structure des noms de fichier : Les systèmes de fichiers NTFS permettent des noms de fichier beaucoup plus longs, jusqu'à 255 caractères. Ils autorisent également un plus grand ensemble de caractères spéciaux et de symboles dans les noms de fichier, à l'exception de quelques caractères réservés interdits. • - Longueur maximale du chemin de fichier : 260 caractères. • - Prise en charge des noms de fichiers Unicode. • - Exemple (Windows) : "mon fichier important.docx", "my_document_2024-02-21.txt" • - Dates de référence : Les spécifications initiales de NTFS ont été introduites avec Windows NT 3.1 en 1993, et le système de fichiers a depuis subi des mises à jour et des améliorations dans les versions ultérieures de Windows • 3. Système de fichiers ext4 (Fourth Extended File System) (utilisé dans les distributions Linux modernes) : • - Structure des noms de fichier : Les systèmes de fichiers ext4 supportent des noms de fichiers pouvant aller jusqu'à 255 caractères, avec une prise en charge étendue des caractères spéciaux. Ils permettent également l'utilisation de casse sensible pour les noms de fichier, ce qui signifie que "Fichier.txt" et "fichier.txt" sont considérés comme deux fichiers distincts. • - Exemple (Linux) : "rapport_annuel_2023.pdf" 2- Noms de fichiers • - Dates de référence: Le système de fichiers ext4 est apparu avec le noyau Linux 2.6.19 en novembre 2006, et il a été largement utilisé dans les distributions Linux depuis lors. • 4. Systèmes de fichiers macOS (HFS+, APFS) : • Longueur maximale du nom de fichier : 255 caractères. • Sensible à la casse. • Prise en charge des noms de fichiers Unicode. 2- Noms de fichiers • Autorise l'utilisation de divers caractères spéciaux. • Exemple : "my_photo_2024-02-21.jpeg" • Ces exemples illustrent les principales différences dans la structure et les règles de nommage des fichiers entre différents systèmes de fichiers, en mettant en évidence l'évolution au fil du temps à travers les versions des systèmes d'exploitation et des spécifications de systèmes de fichiers. 3- Gestion de l’espace disque • Un système de fichiers gère l'espace disque en allouant et en gérant l'espace disponible sur le support de stockage de manière à optimiser l'utilisation de cet espace tout en permettant une récupération efficace des données. Voici quelques aspects clés de la gestion de l'espace disque par un système de fichiers : • 1. Allocation d'espace : Lorsqu'un fichier est créé, le système de fichiers alloue un espace sur le disque pour stocker ce fichier. Selon le système de fichiers, cette allocation peut être dynamique (l'espace est alloué au fur et à mesure des besoins du fichier) ou statique (l'espace est alloué en une seule fois lors de la création du fichier). 3- Gestion de l’espace disque • 2. Bloc de données : L'espace disque est généralement divisé en blocs de données de taille fixe. Un fichier peut occuper plusieurs blocs, et chaque bloc peut être utilisé par un seul fichier à la fois. Certains systèmes de fichiers utilisent des tailles de bloc fixes, tandis que d'autres permettent des tailles de bloc variables. • 3. Gestion de la fragmentation : La fragmentation se produit lorsque l'espace disque est divisé en blocs non contigus, ce qui peut entraîner un gaspillage d'espace et des performances réduites lors de l'accès aux fichiers. Les systèmes de fichiers utilisent des techniques telles que la défragmentation (réorganisation des données pour regrouper les blocs contigus) pour réduire la fragmentation et améliorer les performances. 3- Gestion de l’espace disque • 4. Table d'allocation des fichiers (FAT) : Certains systèmes de fichiers, comme FAT (File Allocation Table), utilisent une table d'allocation des fichiers pour suivre l'allocation de l'espace disque. Cette table contient des entrées pour chaque bloc sur le disque, indiquant s'ils sont utilisés par un fichier spécifique ou s'ils sont libres. • 5. Gestion de l'espace libre : Le système de fichiers maintient une liste des blocs libres sur le disque, ce qui lui permet d'allouer rapidement de l'espace lors de la création de nouveaux fichiers. Des algorithmes de gestion de l'espace libre sont utilisés pour optimiser l'utilisation de l'espace disponible et minimiser la fragmentation 3- Gestion de l’espace disque • 6. Limites de taille de fichier et de volume : Certains systèmes de fichiers imposent des limites de taille de fichier et de volume, ce qui peut influencer la manière dont l'espace disque est géré. Par exemple, FAT32 a une limite de taille de fichier de 4 Go et une limite de taille de volume de 32 Go (avec certaines limitations spécifiques à l'implémentation). • Un système de fichiers gère l'espace disque en allouant de manière efficace l'espace disponible, en minimisant la fragmentation, en maintenant une liste des blocs libres et en utilisant des techniques telles que la défragmentation pour optimiser les performances et l'utilisation de l'espace disque. • Les mécanismes de contrôle d'accès incorporés dans les systèmes de fichiers permettent de réguler l'accès aux fichiers et aux répertoires en définissant des permissions pour les utilisateurs et les groupes d'utilisateurs. Voici quelques mécanismes courants de contrôle d'accès et des exemples concrets par rapport à certains systèmes de fichiers : 4- Permission d’accès • 1. Permissions de base : • - Les systèmes de fichiers peuvent attribuer des permissions de base à chaque fichier et répertoire pour contrôler l'accès en lecture (lecture du contenu du fichier), en écriture (modification ou création de fichiers), et en exécution (exécution de fichiers ou accès aux répertoires). • - Exemple : Dans les systèmes de fichiers Unix/Linux (comme ext4), les permissions de base sont définies pour les propriétaires, les groupes et les autres utilisateurs à l'aide de bits de permission (rwx pour lecture, écriture, et exécution) associés à chaque fichier ou répertoire. • 2. ACL (Listes de contrôle d'accès) étendues : • 4- Permission d’accès - Certains systèmes de fichiers permettent l'utilisation de listes de contrôle d'accès étendues (ACL), qui offrent un contrôle plus granulaire sur les permissions en permettant la définition de droits d'accès spécifiques pour différents utilisateurs et groupes. • Les Listes de Contrôle d'Accès (ACL) sont des mécanismes de contrôle d'accès avancés utilisés dans les systèmes d'exploitation pour gérer les permissions de fichiers et de répertoires de manière plus granulaire que les permissions de base traditionnelles. Les ACL permettent de définir des autorisations spécifiques pour différents utilisateurs et groupes sur des fichiers ou des répertoires individuels. • Voici comment fonctionnent généralement les ACL : • a. Attribution des ACL : L'administrateur système ou le propriétaire d'un fichier peut attribuer des ACL spécifiques à ce fichier ou répertoire. Les ACL sont souvent définies en complément des permissions de base du système de fichiers. 4- Permission d’accès • b. Composants des ACL : Les ACL sont généralement constituées de plusieurs entrées, chacune représentant une autorisation spécifique pour un utilisateur ou un groupe. Chaque entrée comprend généralement les éléments suivants : • - Identificateur : Identifie l'utilisateur ou le groupe auquel l'autorisation s'applique. • Type d'entrée : Détermine si l'entrée représente un utilisateur individuel, un groupe d'utilisateurs ou tous les autres utilisateurs (parfois appelé "everyone"). • Permissions : Spécifie les autorisations accordées à l'utilisateur ou au groupe, telles que la lecture, l'écriture ou l'exécution. • Condition d'application : Parfois, une condition supplémentaire peut être spécifiée pour restreindre l'application de l'ACL. 4- Permission d’accès • c. Évaluation des ACL : Lorsqu'un utilisateur tente d'accéder à un fichier ou un répertoire, le système d'exploitation vérifie les ACL associées à ce fichier ou répertoire. Le système recherche l'entrée correspondant à l'utilisateur ou au groupe et évalue les permissions accordées dans cette entrée. • d. Priorité des ACL : Si plusieurs ACL sont définies pour un fichier ou un répertoire, le système d'exploitation applique généralement la règle de "plus de droits". Cela signifie que si une ACL accorde une autorisation spécifique et qu'une autre la nie, l'autorisation est accordée. • e. Héritage des ACL : Dans certains systèmes de fichiers, les ACL peuvent être héritées des répertoires parents. Cela signifie que les fichiers et répertoires créés dans un répertoire héritent des ACL de ce répertoire parent, simplifiant ainsi la gestion des autorisations. 4- Permission d’accès • Les ACL permettent une gestion plus flexible et granulaire des autorisations de fichiers et de répertoires en permettant la définition d'autorisations spécifiques pour différents utilisateurs et groupes. Elles complètent les permissions de base du système de fichiers en permettant une personnalisation plus fine des contrôles d'accès. • - Exemple : Le système de fichiers NTFS (utilisé dans les systèmes Windows) prend en charge les ACL, qui permettent de spécifier des autorisations spécifiques pour différents utilisateurs et groupes sur chaque fichier ou répertoire. • 3. Attributs de sécurité : 4- Permission d’accès • - Certains systèmes de fichiers utilisent des attributs de sécurité pour renforcer le contrôle d'accès aux fichiers et répertoires. Ces attributs peuvent inclure des informations telles que les propriétaires, les groupes, les permissions et d'autres métadonnées liées à la sécurité. • - Exemple : Dans les systèmes de fichiers macOS (comme HFS+ et APFS), les attributs de sécurité sont utilisés pour définir les autorisations d'accès aux fichiers et répertoires, ainsi que d'autres informations de sécurité. • 4. Chiffrement des fichiers : 4- Permission d’accès • - Certains systèmes de fichiers prennent en charge le chiffrement des données pour protéger la confidentialité des fichiers en stockant les données de manière chiffrée sur le disque. • - Exemple : Dans les systèmes de fichiers BitLocker (utilisés dans les systèmes Windows), les fichiers peuvent être chiffrés pour protéger leur contenu contre les accès non autorisés. • les systèmes de fichiers intègrent différents mécanismes de contrôle d'accès pour réguler l'accès aux fichiers et répertoires, y compris les permissions de base, les ACL étendues, les attributs de sécurité et le chiffrement des fichiers. Ces mécanismes permettent de définir des autorisations spécifiques pour les utilisateurs et les groupes afin de protéger la confidentialité et l'intégrité des données. • Il existe de nombreux types de systèmes de fichiers, chacun conçu pour répondre à des besoins spécifiques en matière de stockage de données, de performances et de compatibilité avec différents systèmes d'exploitation. 5- Types de systems de fichiers • 1. FAT (File Allocation Table): • - Date de création : Développé par Microsoft dans les années 1970. • - Auteur : Microsoft Corporation. • - Description : FAT est l'un des systèmes de fichiers les plus anciens et les plus largement utilisés. Il est principalement utilisé sur les périphériques de stockage amovibles tels que les disques flash USB, les cartes mémoire et les lecteurs de carte SD. • 2. NTFS (New Technology File System) : 5- Types de systems de fichiers • - Date de création : Introduit avec Windows NT en 1993. • - Auteur : Microsoft Corporation. • - Description : NTFS est un système de fichiers développé par Microsoft pour les systèmes d'exploitation Windows. Il offre des fonctionnalités avancées telles que la prise en charge des ACL, la journalisation, le chiffrement et la compression de fichiers. • 3. ext2 (Second Extended Filesystem) : 5- Types de systems de fichiers • - Date de création : Développé en 1993 pour Linux. • - Auteur : Réalisé par Rémy Card, basé sur le système de fichiers ext (Extended Filesystem) de Rémy Card. • - Description : ext2 est le système de fichiers de base pour de nombreuses distributions Linux. Il offre une prise en charge de la journalisation, des permissions de fichiers et des attributs étendus. • 4. ext3 (Third Extended Filesystem) : • - Date de création : Introduit en 2001 comme une extension d'ext2. • - Auteur : Stephen Tweedie, Theodore Ts'o, et d'autres contributeurs de la communauté Linux. • - Description : ext3 est une version améliorée de ext2 avec la journalisation, ce qui réduit le risque de corruption du système de fichiers en cas de panne de courant ou de plantage du système. • 5. ext4 (Fourth Extended Filesystem) : 5- Types de systems de fichiers • - Date de création : Introduit en 2008 comme une extension d'ext3. • - Auteur : Stephen Tweedie, Mingming Cao, et d'autres contributeurs de la communauté Linux. • - Description : ext4 est la dernière version du système de fichiers ext pour Linux. Il offre des améliorations significatives en termes de taille maximale de fichier, taille de volume, performances et fiabilité par rapport à ses prédécesseurs. • 6. HFS+ (Hierarchical File System Plus) : • - Date de création : Développé par Apple en 1998. • - Auteur : Apple Inc. • - Description : HFS+ est le système de fichiers utilisé par défaut sur les systèmes d'exploitation macOS avant l'introduction d'APFS. Il offre une prise en charge de la journalisation, des métadonnées étendues et des autorisations de fichiers. • 7. APFS (Apple File System) : 5- Types de systems de fichiers • - Date de création : Introduit par Apple en 2017 avec macOS High Sierra. • - Auteur : Apple Inc. • - Description : APFS est le système de fichiers moderne utilisé par Apple sur ses appareils macOS, iOS, watchOS et tvOS. Il offre des fonctionnalités avancées telles que la journalisation native, le chiffrement, la déduplication et la prise en charge des snapshots. • • 8. ReFS (Resilient File System) : • - Date de création : Introduit par Microsoft avec Windows Server 2012. • - Auteur : Microsoft Corporation. • - Description : ReFS est un système de fichiers conçu pour les environnements de stockage de grande capacité et haute disponibilité. Il offre des fonctionnalités de correction d'erreurs automatique, de vérification des données et de protection contre la corruption des données. • 9. XFS (X File System) : 5- Types de systems de fichiers • - Date de création : Développé par Silicon Graphics en 1993. • - Auteur : Silicon Graphics, Inc. • - Description : XFS est un système de fichiers haute performance conçu pour les environnements de calcul intensif. Il offre une prise en charge de la journalisation, de l'extensibilité, de la gestion des quotas et de la gestion avancée des métadonnées. • • 10. ZFS (Zettabyte File System) : • - Date de création : Développé par Sun Microsystems dans les années 2000. • - Auteur : Sun Microsystems, Inc. (maintenant Oracle Corporation). • - Description : ZFS est un système de fichiers open source conçu pour les systèmes de stockage de grande capacité. Il offre une intégrité des données, une déduplication, une compression et une gestion des snapshots avancées. Quelques Exemples : 1. Création d'un Système de Fichiers Ext4 : 5- Types de systems de fichiers • - Commande : `mkfs.ext4` • - Exemple : `mkfs.ext4 /dev/sdX1` 2. Création d'un Répertoire : • - Commande : `mkdir` • - Exemple : `mkdir Documents` 3. Copie de Fichiers : • - Commande : `cp` • - Exemple : `cp file.txt Documents/` Inodes Un inode (index node) est une structure de données utilisée par les systèmes de fichiers Unix et Unix-like pour stocker les métadonnées associées à un fichier ou un répertoire. Chaque fichier ou répertoire sur un système de fichiers Unix est représenté par un inode, qui contient des informations telles que les permissions d'accès, les timestamps de création, de modification et d'accès, la taille du fichier, l'emplacement physique des données sur le disque, et d'autres métadonnées Inodes • Voici quelques-unes des informations généralement stockées dans un inode : • 1. Numéro d'inode (inode number) : Un identifiant unique attribué à chaque inode dans le système de fichiers. Cet identifiant est utilisé par le système d'exploitation pour faire référence à un inode spécifique. • 2. Permissions d'accès : Les autorisations associées au fichier ou répertoire, indiquant qui peut lire, écrire ou exécuter le fichier, et dans quelles conditions. Inodes • 3. Propriétaire et groupe propriétaire : L'identifiant de l'utilisateur et du groupe propriétaire du fichier ou répertoire. • 4. Taille du fichier : La taille du fichier en octets. • 5. Timestamps : Les timestamps indiquant la dernière modification du fichier (mtime), la dernière modification des métadonnées (ctime), et le dernier accès au fichier (atime). • 6. Type de fichier : Le type de fichier, qui peut être un fichier ordinaire, un répertoire, un lien symbolique, ou d'autres types spécifiques au système de fichiers. • 7. Nombre de liens : Le nombre de liens (hard links) vers le fichier. Ce nombre indique combien de noms de fichiers différents pointent vers le même inode. Inodes • 8. Pointeurs vers les blocs de données : Les pointeurs vers les blocs de données physiques sur le disque où sont stockées les données du fichier. Pour les petits fichiers, les données peuvent être stockées directement dans l'inode sans nécessiter de blocs de données supplémentaires. • Les inodes permettent aux systèmes de fichiers Unix de maintenir une structure de fichiers hiérarchique, de suivre les attributs de chaque fichier et répertoire, et de gérer efficacement l'allocation d'espace disque. Chaque fois qu'un fichier est créé, ou qu'une modification est apportée à ses attributs ou à son contenu, les métadonnées de l'inode correspondant sont mises à jour pour refléter ces changements. Inodes - Historique • Les inodes ont été introduits dans les systèmes UNIX dans les années 1970. Le système de fichiers original utilisait un système indexé, mais avec l'introduction des inodes, le stockage des métadonnées des fichiers a été révolutionné. Ken Thompson et Dennis Ritchie ont été les pionniers de cette avancée. • L'histoire de l'inode remonte aux débuts du système d'exploitation Unix dans les années 1960 et 1970. Voici un aperçu de l'évolution historique de l'inode avec des dates clés : Inodes - Historique • 1. Début des années 1960 : • - L'inode a été conceptualisé et développé dans le cadre du projet Multics au Massachusetts Institute of Technology (MIT), qui a jeté les bases du système d'exploitation Unix. • 2. Années 1970 : • - L'inode est devenu une caractéristique centrale du système de fichiers du premier Unix développé par AT&T Bell Laboratories. Ce système de fichiers a été conçu pour le système d'exploitation Unix original, qui a été développé en 1969 et 1970, et a été commercialisé à partir de 1971. • - L'inode dans ces premiers systèmes de fichiers Unix stockait des métadonnées telles que les permissions d'accès, les timestamps, les informations sur les blocs de données, etc. Inodes - Historique • L'historique de l'inode remonte aux premiers systèmes de fichiers Unix dans les années 1970. Voici une évolution générale de l'inode avec des dates clés et les différences entre les différentes évolutions : • Unix Version 1 (1971) : • L'inode est introduit avec la première version d'Unix développée à Bell Labs. Il stocke des informations basiques sur les fichiers, comme les permissions, les timestamps et les pointeurs vers les blocs de données. • Unix Version 7 (1979) : • Une structure d'inode plus complexe est introduite, prenant en charge un nombre accru de liens vers un même fichier. Les inodes stockent également des informations sur les propriétaires et les groupes propriétaires, ainsi que des pointeurs directs, indirects et doubles indirects vers les blocs de données. Inodes - Historique • 3. Années 1980 : • - Avec l'évolution des versions d'Unix et l'expansion de son utilisation, les inodes sont devenus une partie standard des systèmes de fichiers Unix et ont été intégrés à diverses variantes d'Unix, y compris BSD Unix, System V Unix, et d'autres. • Berkeley Fast File System (FFS) (1983) : • Le Berkeley FFS, également connu sous le nom de UFS (Unix File System), introduit plusieurs améliorations au niveau des inodes. Cela comprend l'utilisation d'un système de pointeurs en trois étages pour gérer l'allocation des blocs de données, permettant ainsi une utilisation plus efficace de l'espace disque. Inodes - Historique • 4. Années 1990 : • - Les systèmes de fichiers Unix ont continué à évoluer avec l'introduction de nouvelles fonctionnalités et améliorations dans la gestion des inodes. Par exemple, la journalisation des inodes a été introduite pour améliorer la fiabilité des systèmes de fichiers en cas de panne du système. • Ext2 (1993) : • Le système de fichiers ext2, développé pour Linux, utilise une structure d'inode étendue par rapport aux systèmes de fichiers Unix traditionnels. Les inodes ext2 stockent des informations supplémentaires telles que les ACL, les attributs étendus, et des pointeurs directs, indirects, doubles indirects et triples indirects vers les blocs de données. Inodes - Historique • NTFS (1993) : • Le système de fichiers NTFS de Microsoft, introduit avec Windows NT, utilise une version améliorée de l'inode appelée "MFT Entry" (Master File Table Entry). Les MFT Entries stockent des métadonnées similaires aux inodes Unix, mais avec une structure plus complexe permettant une gestion avancée des fichiers et des attributs. Inodes - Historique • 5. Années 2000 - présent : • - Au cours des dernières décennies, de nouvelles versions et variantes d'Unix ainsi que des systèmes d'exploitation Unix-like tels que Linux, macOS et FreeBSD ont continué à utiliser des inodes pour stocker les métadonnées des fichiers. • - Les inodes sont devenus un élément fondamental des systèmes de fichiers modernes et sont utilisés pour maintenir une structure de fichiers hiérarchique, suivre les attributs des fichiers et répertoires, et gérer efficacement l'allocation d'espace disque. • APFS (2017) : • L'Apple File System (APFS) utilisé sur les systèmes d'exploitation macOS, iOS, watchOS et tvOS utilise une version moderne de l'inode. Les inodes APFS stockent des informations telles que les timestamps de création, de modification et d'accès, les numéros de blocs de données, les attributs de fichiers et de répertoires, et la journalisation. Inodes - Historique • l'inode a une longue histoire remontant aux premiers jours du développement du système d'exploitation Unix dans les années 1960 et 1970. Depuis lors, il est devenu un élément central des systèmes de fichiers Unix et Unix-like, évoluant avec le temps pour répondre aux besoins changeants des utilisateurs et des systèmes. • Chaque évolution de l'inode a apporté des améliorations en termes de fonctionnalités, de performances et d'efficacité de stockage. Les différences entre les différentes évolutions de l'inode incluent l'ajout de nouvelles fonctionnalités (comme les ACL, les attributs étendus), des améliorations dans la gestion de l'allocation des blocs de données, et une structure de données plus complexe pour prendre en charge les besoins des systèmes de fichiers modernes. Inodes Quelques Exemples Pratiques : 1. Affichage des Inodes : • - Commande : `ls -i` • - Exemple : `ls -i file.txt` • - Exemple : stat file.txt 2. Modification des Autorisations via Inodes : • - Commande : `chmod` • - Exemple : `chmod 755 file.txt` 3. Vérification de l'Espace Disque Utilisé par Inodes : • - Commande : `df -i` • - Exemple : `df -i /home` Descripteurs de fichiers • Un descripteur de fichier est un identificateur numérique utilisé par un système d'exploitation pour faire référence à un fichier ouvert par un processus. Chaque fois qu'un fichier est ouvert par un programme, le système d'exploitation alloue un descripteur de fichier unique à ce fichier. Ce descripteur de fichier est utilisé par le programme pour effectuer des opérations de lecture, d'écriture, de déplacement et de fermeture sur ce fichier. Descripteurs de fichiers Voici quelques points clés sur les descripteurs de fichiers : • 1. Identifiant numérique : Un descripteur de fichier est généralement représenté par un nombre entier, qui est attribué de manière unique par le système d'exploitation lors de l'ouverture d'un fichier. • 2. Table des descripteurs de fichiers : Le système d'exploitation maintient une table des descripteurs de fichiers pour chaque processus en cours d'exécution. Cette table contient des entrées pour chaque fichier ouvert par le processus, avec le descripteur de fichier correspondant. Descripteurs de fichiers La table des descripteurs, également connue sous le nom de table des fichiers ou table des fichiers ouverts, est une structure de données maintenue par le système d'exploitation pour chaque processus en cours d'exécution. Cette table contient des entrées pour chaque fichier ouvert par le processus, ainsi que des informations associées à chaque fichier ouvert. Voici les éléments généralement présents dans la table des descripteurs : • Descripteur de fichier (File Descriptor) : • Il s'agit d'un identificateur numérique unique attribué par le système d'exploitation à chaque fichier ouvert par le processus. Le descripteur de fichier est utilisé par le processus pour faire référence au fichier dans les opérations de lecture, écriture et autres opérations de gestion de fichiers. Descripteurs de fichiers • Pointeur vers l'entrée de fichier (File Entry Pointer) : • Il s'agit d'un pointeur vers la structure de données du système de fichiers qui contient les métadonnées du fichier, telles que le nom du fichier, les permissions, les timestamps, les attributs, etc. • Mode d'accès (Access Mode) : • Il indique les droits d'accès accordés au processus pour ce fichier, tels que lecture, écriture, exécution, etc. • Position de lecture/écriture (File Offset) : • Il représente la position actuelle de lecture ou d'écriture dans le fichier. Lorsqu'un processus lit ou écrit dans un fichier, cette position est mise à jour en conséquence. Descripteurs de fichiers • Indicateurs de statut (Status Flags) : • Ces indicateurs de statut fournissent des informations supplémentaires sur l'état du fichier, tels que le mode de lecture/écriture, le type de fichier (normal, répertoire, lien symbolique, etc.), les indicateurs de verrouillage, etc. • Pointeurs de contrôle de fichier (File Control Pointers) : • Ils peuvent être utilisés pour gérer les opérations spécifiques au fichier, comme les opérations de verrouillage, les opérations de réseau, les opérations de gestion des erreurs, etc. • Informations supplémentaires (Additional Information) : • La table des descripteurs peut également contenir d'autres informations utiles sur le fichier ouvert, telles que des pointeurs vers des structures de données supplémentaires pour la gestion des caches, des informations sur les systèmes de fichiers, etc. Descripteurs de fichiers La table des descripteurs est essentielle pour permettre à un processus d'interagir avec les fichiers ouverts de manière efficace et sécurisée. Chaque entrée dans la table des descripteurs représente un fichier ouvert par le processus et contient les informations nécessaires pour gérer et manipuler ce fichier de manière appropriée. Descripteurs de fichiers • 3. Opérations de fichiers : Les programmes utilisent les descripteurs de fichiers pour effectuer des opérations de lecture, d'écriture, de déplacement et de fermeture sur les fichiers ouverts. Les opérations sont effectuées en utilisant le descripteur de fichier comme référence pour indiquer quel fichier est concerné. • 4. Gestion des ressources : Les descripteurs de fichiers sont un moyen pour le système d'exploitation de gérer les ressources système associées aux fichiers ouverts. Lorsqu'un fichier est fermé par un programme, le descripteur de fichier correspondant est libéré et la ressource système est récupérée. Descripteurs de fichiers • 5. Limites et restrictions : Chaque système d'exploitation a ses propres limites sur le nombre de descripteurs de fichiers qu'un processus peut ouvrir simultanément. Les programmes doivent être conçus pour gérer correctement l'ouverture et la fermeture des fichiers afin d'éviter les fuites de descripteurs de fichiers et les problèmes de performance. • Un descripteur de fichier est un identificateur numérique utilisé par un programme pour faire référence à un fichier ouvert. Il facilite les opérations de lecture, d'écriture et de gestion des fichiers dans un environnement informatique. Fichiers spéciaux • Dans les systèmes d'exploitation de type Unix et Unix-like, ainsi que dans d'autres systèmes, les fichiers spéciaux (ou fichiers de périphériques) sont des fichiers qui représentent des périphériques matériels ou d'autres ressources système • Contrairement aux fichiers réguliers qui stockent des données de manière conventionnelle, les fichiers spéciaux sont utilisés pour communiquer avec les périphériques matériel, tels que les disques, les imprimantes, les terminaux, etc., ainsi qu'avec d'autres ressources système. Fichiers spéciaux Il existe deux types principaux de fichiers spéciaux : 1. Fichiers de périphériques de bloc (block devices) : • - Ces fichiers spéciaux sont utilisés pour représenter des périphériques de stockage de données, tels que des disques durs, des partitions de disque, des lecteurs de disque optique (CD-ROM, DVDROM), etc. • - Les fichiers de périphériques de bloc permettent un accès aléatoire aux données et sont utilisés pour le stockage de fichiers et de systèmes de fichiers Fichiers spéciaux 2. Fichiers de périphériques de caractères (character devices) : • - Ces fichiers spéciaux sont utilisés pour représenter des périphériques de communication de caractères, tels que des ports série, des terminaux, des imprimantes, etc. • - Les fichiers de périphériques de caractères permettent un accès séquentiel aux données et sont utilisés pour les opérations de communication caractère par caractère. • Les fichiers spéciaux sont présents dans le système de fichiers du système d'exploitation et sont accessibles comme n'importe quel autre fichier. Cependant, au lieu de stocker des données sur un disque, par exemple, ils agissent comme une interface permettant au système d'exploitation et aux programmes d'interagir avec le périphérique matériel associé. Fichiers spéciaux Voici quelques exemples de fichiers spéciaux couramment utilisés dans les systèmes Unix et Unix-like : • - /dev/sda : Fichier spécial représentant le premier disque dur du système. • - /dev/tty : Fichier spécial représentant le terminal actuel. • - /dev/printer : Fichier spécial représentant l'imprimante connectée au système. • - /dev/null : Fichier spécial utilisé pour la suppression des données écrites, souvent utilisé pour la redirection de la sortie vers le néant. • - /dev/random et /dev/urandom : Fichiers spéciaux utilisés pour générer des nombres aléatoires. Fichiers spéciaux Quelques Exemples Pratiques : 1. Accès à un Périphérique via un Fichier Spécial : • - Chemin : `/dev/sda` (disque dur) • - Exemple : `cat /dev/sda` 2. Configuration d'Imprimante via un Fichier Spécial : • - Chemin : `/dev/lp0` (port parallèle) • - Exemple : `echo "Test d'impression" > /dev/lp0` 3. Contrôle de Terminal via des Fichiers Spéciaux : • - Chemin : `/dev/ttyS0` (port série) • - Exemple : `echo "Données au terminal" > /dev/ttyS0` Conclusion • Ce chapitre a fourni une exploration approfondie de la gestion des fichiers, de ses fondements historiques aux commandes et concepts modernes. • Les exemples pratiques et les références enrichissent la compréhension sur ces aspects cruciaux des systèmes d'exploitation.