169 lines
13 KiB
TeX
169 lines
13 KiB
TeX
\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. |