\chapter{compte\+\_\+rendu\+\_\+1} \hypertarget{md_docs_2compte__rendus_2compte__rendu__1}{}\label{md_docs_2compte__rendus_2compte__rendu__1}\index{compte\_rendu\_1@{compte\_rendu\_1}} \hypertarget{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md0}{}\doxysection{\texorpdfstring{Rapport d’analyse et de conception}{Rapport d’analyse et de conception}}\label{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md0} \hypertarget{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md1}{}\doxysubsection{\texorpdfstring{Projet Système 2025/2026 – Système de Gestion de Fichiers (\+SGF)}{Projet Système 2025/2026 – Système de Gestion de Fichiers (SGF)}}\label{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md1} {\bfseries{Membres de l’équipe \+:}} \begin{DoxyItemize} \item CHOISY Alexis \item DEGAT Teddy \item DA SILVA FERREIRA Lucas \item FOURNIE Baptiste \item FATIHI Youssef \end{DoxyItemize} {\bfseries{Encadrante \+:}} ABOUDA Dhekra ~\newline {\bfseries{Date de remise \+:}} 20 avril 2026 \DoxyHorRuler{0} \hypertarget{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md3}{}\doxysubsection{\texorpdfstring{Sommaire}{Sommaire}}\label{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md3} \begin{DoxyItemize} \item I. Analyse des besoins de l’utilisateur \item II. Définition du système à réaliser \item III. Cahier des charges \item IV. Structures de données prévues \item V. Liste des fonctions principales \item VI. Répartition des tâches \item VII. Conclusion \end{DoxyItemize} \DoxyHorRuler{0} \hypertarget{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md5}{}\doxysubsection{\texorpdfstring{I. Analyse des besoins de l’utilisateur}{I. Analyse des besoins de l’utilisateur}}\label{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md5} \hypertarget{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md6}{}\doxysubsubsection{\texorpdfstring{1. Objectifs fonctionnels}{1. Objectifs fonctionnels}}\label{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md6} Le programme doit permettre à un utilisateur de \+: \begin{DoxyItemize} \item Interagir via un shell. \item Gérer une arborescence de fichiers et répertoires (création, suppression, déplacement). \item Manipuler le contenu des fichiers (lecture, écriture) via des primitives spécifiques. \item Assurer la persistance des données par la sauvegarde/recharge du SGF sur le disque physique. \end{DoxyItemize}\hypertarget{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md7}{}\doxysubsubsection{\texorpdfstring{2. Contraintes}{2. Contraintes}}\label{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md7} \begin{DoxyItemize} \item {\bfseries{Langage}} \+: C uniquement. \item {\bfseries{Dates limites}} \+: Rendu de l\textquotesingle{}analyse le 20 avril 2026, conception le 2 mai 2026, et final le 28 mai 2026. \end{DoxyItemize} \DoxyHorRuler{0} \hypertarget{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md9}{}\doxysubsection{\texorpdfstring{II. Définition du système à réaliser}{II. Définition du système à réaliser}}\label{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md9} \hypertarget{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md10}{}\doxysubsubsection{\texorpdfstring{1. Fonctionnement général}{1. Fonctionnement général}}\label{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md10} Le système simule une partition de disque dur à travers un fichier. Il s\textquotesingle{}articule autour de trois couches\+: \begin{DoxyEnumerate} \item {\bfseries{Le Shell}} \+: Analyse les commandes ({\ttfamily ls}, {\ttfamily mkdir}, etc.) et appelle les primitives. \item {\bfseries{Les Primitives}} \+: Fonctions de bas niveau ({\ttfamily myopen}, {\ttfamily myread}) qui font le lien avec la structure interne. \item {\bfseries{Le SGF}} \+: Gère l\textquotesingle{}organisation physique des i-\/nodes et des blocs de données. \end{DoxyEnumerate} \DoxyHorRuler{0} \hypertarget{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md12}{}\doxysubsection{\texorpdfstring{III. Cahier des charges}{III. Cahier des charges}}\label{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md12} \hypertarget{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md13}{}\doxysubsubsection{\texorpdfstring{1. Description globale des fonctions}{1. Description globale des fonctions}}\label{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md13} \tabulinesep=1mm \begin{longtabu}spread 0pt [c]{*{2}{|X[-1]}|} \hline \cellcolor{\tableheadbgcolor}\textbf{ Fonctionnalité }&\cellcolor{\tableheadbgcolor}\textbf{ Description }\\\cline{1-2} \endfirsthead \hline \endfoot \hline \cellcolor{\tableheadbgcolor}\textbf{ Fonctionnalité }&\cellcolor{\tableheadbgcolor}\textbf{ Description }\\\cline{1-2} \endhead {\bfseries{Shell}} &Gère les commandes {\ttfamily ls}, {\ttfamily mkdir}, {\ttfamily rmdir}, {\ttfamily cat}, {\ttfamily cp}, {\ttfamily rm}, {\ttfamily mv}. \\\cline{1-2} {\bfseries{Gestion Inodes}} &Attribution et libération d\textquotesingle{}i-\/nodes pour fichiers et répertoires. \\\cline{1-2} {\bfseries{Gestion Blocs}} &Allocation de blocs de données (contigus ou non) pour le stockage. \\\cline{1-2} {\bfseries{Arborescence}} &Gestion des répertoires comme des fichiers spéciaux listant des i-\/nodes. \\\cline{1-2} {\bfseries{Persistance}} &Sauvegarde de l\textquotesingle{}état complet du disque virtuel dans un fichier binaire. \\\cline{1-2} {\bfseries{Superbloc (df)}} &Fournit les infos sur les blocs/inodes libres et l\textquotesingle{}espace disque. \\\cline{1-2} \end{longtabu} \hypertarget{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md14}{}\doxysubsubsection{\texorpdfstring{2. Fonctions bonus}{2. Fonctions bonus}}\label{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md14} \begin{DoxyItemize} \item Gestion de plusieurs utilisateurs simultanés. \item Implémentation des filtres {\ttfamily grep} et {\ttfamily find}. \item Gestion des droits d\textquotesingle{}accès et dates de modification sur les inodes. \end{DoxyItemize} \DoxyHorRuler{0} \hypertarget{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md16}{}\doxysubsection{\texorpdfstring{IV. Structures de données prévues}{IV. Structures de données prévues}}\label{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md16} Le SGF utilise des structures à taille fixe pour simuler la partition . \begin{DoxyCode}{0} \DoxyCodeLine{} \DoxyCodeLine{\textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{structinode}{inode}}\ \{} \DoxyCodeLine{\ \ \textcolor{keywordtype}{unsigned}\ \textcolor{keywordtype}{short}\ \mbox{\hyperlink{structinode_ab744b42f5d23ec542bd9897a4d15a5fa}{perms}};\ \textcolor{comment}{//\ rwxrwxrwx}} \DoxyCodeLine{\ \ \textcolor{keywordtype}{char}\ \mbox{\hyperlink{structinode_a2d0a5188e7dfbfcf2fa374a5fb348177}{filetype}};} \DoxyCodeLine{\ \ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{structinode_aaeb4427c36772c74ae86c9510ee6a6b3}{blocs}}[\mbox{\hyperlink{const_8h_ad7140f3913ca85546efb2ded034d0af2}{MAX\_BLOCS}}];} \DoxyCodeLine{\}\ \mbox{\hyperlink{structinode}{inode}};} \DoxyCodeLine{} \DoxyCodeLine{\textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{structbloc}{bloc}}\ \{} \DoxyCodeLine{\ \ \textcolor{keywordtype}{char}\ \mbox{\hyperlink{structbloc_a801f2e871d2e285480d31426e39e01a9}{datas}}[\mbox{\hyperlink{const_8h_a60fedb7550ff4e00d6c70dd2d257c154}{MAX\_BYTES\_PER\_BLOC}}];} \DoxyCodeLine{\}\ \mbox{\hyperlink{structbloc}{bloc}};} \DoxyCodeLine{} \DoxyCodeLine{\textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{structdisk}{disk}}\ \{} \DoxyCodeLine{\ \ \textcolor{keywordtype}{char}\ \mbox{\hyperlink{structdisk_a60d62e18ebc1d2933bb952352397acda}{owned\_blocs}}[\mbox{\hyperlink{const_8h_ad7140f3913ca85546efb2ded034d0af2}{MAX\_BLOCS}}];\ \textcolor{comment}{//\ 1\ si\ possédé\ par\ un\ inode,\ 0\ si\ libre}} \DoxyCodeLine{\ \ \mbox{\hyperlink{structinode}{inode}}\ \mbox{\hyperlink{structdisk_a187c55f0919fa8f44cc442857cce3e8d}{inodes}}[\mbox{\hyperlink{const_8h_af58c11b86af508a573976185fb99170f}{MAX\_INODE}}];} \DoxyCodeLine{\ \ \mbox{\hyperlink{structbloc}{bloc}}\ \mbox{\hyperlink{structdisk_ad418fe421d1f081b29dcc7922608ca59}{blocs}}[\mbox{\hyperlink{const_8h_ad7140f3913ca85546efb2ded034d0af2}{MAX\_BLOCS}}];} \DoxyCodeLine{\}\ \mbox{\hyperlink{structdisk}{disk}};} \DoxyCodeLine{} \DoxyCodeLine{\textcolor{comment}{//\ pour\ 10\ inode\ qui\ a\ 30\ blocs\ de\ chacun\ 1024\ octets,\ on\ a\ 30720\ octets,\ soit}} \DoxyCodeLine{\textcolor{comment}{//\ 30,7\ Ko\ sur\ le\ disque}} \end{DoxyCode} \DoxyHorRuler{0} \hypertarget{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md18}{}\doxysubsection{\texorpdfstring{V. Liste des fonctions principales}{V. Liste des fonctions principales}}\label{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md18} \hypertarget{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md19}{}\doxysubsubsection{\texorpdfstring{Primitives Système}{Primitives Système}}\label{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md19} \begin{DoxyItemize} \item \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}{\ttfamily int create\+\_\+inode(disk \texorpdfstring{$\ast$}{*}disk, inode \texorpdfstring{$\ast$}{*}parent, char inode\+\_\+type, char \texorpdfstring{$\ast$}{*}name)}\texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*} \+: Crée un fichier et retourne son inode. \item \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}{\ttfamily int myread(int inode, char \texorpdfstring{$\ast$}{*}buffer, int nombre)}\texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*} \+: Lit n octets depuis l\textquotesingle{}inode. \end{DoxyItemize}\hypertarget{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md20}{}\doxysubsubsection{\texorpdfstring{Commandes Shell}{Commandes Shell}}\label{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md20} \begin{DoxyItemize} \item \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}{\ttfamily \doxylink{disk_8c_a9db73bc21d502f4b9231a7366070fcad}{do\+\_\+ls()}}\texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*} \+: Lit le répertoire actuel et affiche les noms et inodes associés. \item \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}{\ttfamily do\+\_\+mkdir(char \texorpdfstring{$\ast$}{*}nom)}\texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*} \+: Crée un i-\/node de type répertoire et initialise les entrées . et .. \end{DoxyItemize} \DoxyHorRuler{0} \hypertarget{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md22}{}\doxysubsection{\texorpdfstring{VI. Répartition des tâches}{VI. Répartition des tâches}}\label{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md22} L\textquotesingle{}équipe est divisée en groupe pour assurer l\textquotesingle{}intégration finale.\hypertarget{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md23}{}\doxysubsubsection{\texorpdfstring{1. SGF \& Stockage (\+Alexis et Youssef)}{1. SGF \& Stockage (Alexis et Youssef)}}\label{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md23} \begin{DoxyItemize} \item Initialisation et formatage du disque virtuel (inodes à 0). \item Fonctions de sauvegarde/rechargement du SGF dans le fichier image. \end{DoxyItemize}\hypertarget{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md24}{}\doxysubsubsection{\texorpdfstring{2. Primitives \& I-\/nodes (\+Teddy et Baptiste)}{2. Primitives \& I-nodes (Teddy et Baptiste)}}\label{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md24} \begin{DoxyItemize} \item Gestion de l\textquotesingle{}allocation des blocs et des i-\/nodes. \item Développement des primitives mycreat, myopen, myread, mywrite. \end{DoxyItemize}\hypertarget{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md25}{}\doxysubsubsection{\texorpdfstring{3. Shell \& Commandes (\+Lucas et Alexis)}{3. Shell \& Commandes (Lucas et Alexis)}}\label{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md25} \begin{DoxyItemize} \item Création de l\textquotesingle{}interpréteur de commandes (processus fils et exec). \item Implémentation des commandes ls, mkdir, cat, rm. \end{DoxyItemize}\hypertarget{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md26}{}\doxysubsubsection{\texorpdfstring{Planning prévisionnel}{Planning prévisionnel}}\label{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md26} \tabulinesep=1mm \begin{longtabu}spread 0pt [c]{*{3}{|X[-1]}|} \hline \cellcolor{\tableheadbgcolor}\textbf{ Phase }&\cellcolor{\tableheadbgcolor}\textbf{ Description }&\cellcolor{\tableheadbgcolor}\textbf{ Échéance }\\\cline{1-3} \endfirsthead \hline \endfoot \hline \cellcolor{\tableheadbgcolor}\textbf{ Phase }&\cellcolor{\tableheadbgcolor}\textbf{ Description }&\cellcolor{\tableheadbgcolor}\textbf{ Échéance }\\\cline{1-3} \endhead {\bfseries{Phase 1}} &Analyse des besoins et structures de données &20 avril 2026 \\\cline{1-3} {\bfseries{Phase 2}} &Conception des algorithmes principaux &2 mai 2026 \\\cline{1-3} {\bfseries{Phase 3}} &Développement du SGF et des primitives &Mai 2026 \\\cline{1-3} {\bfseries{Phase 4}} &Finalisation du Shell et tests de validation &28 mai 2026 \\\cline{1-3} {\bfseries{Phase 5}} &Soutenance et remise du code source &29 mai 2026 \\\cline{1-3} \end{longtabu} \DoxyHorRuler{0} \hypertarget{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md28}{}\doxysubsection{\texorpdfstring{VII. Conclusion}{VII. Conclusion}}\label{md_docs_2compte__rendus_2compte__rendu__1_autotoc_md28} Ce rapport constitue le socle de développement de notre Mini SGF. En respectant une séparation nette entre le stockage, les primitives et l\textquotesingle{}interpréteur, nous visons une architecture robuste conforme aux attentes. La prochaine étape sera la validation des algorithmes de lecture/écriture.