From 4b03fddd734f42fcda0b728d566344fa7e57514c Mon Sep 17 00:00:00 2001 From: Guillaume Chanel <Guillaume.Chanel@unige.ch> Date: Fri, 23 Aug 2024 17:06:18 +0200 Subject: [PATCH] Finalize part 1 --- 9.filesystems/01_Systemes_fichiers_intro.md | 43 ++++++++++----------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/9.filesystems/01_Systemes_fichiers_intro.md b/9.filesystems/01_Systemes_fichiers_intro.md index ee5b71c..64f3576 100644 --- a/9.filesystems/01_Systemes_fichiers_intro.md +++ b/9.filesystems/01_Systemes_fichiers_intro.md @@ -9,21 +9,18 @@ - Adressable par le triplet CHS :\ { Cylinder, Head, Sector } +A. Plateaux \ +B. Bras mobile \ +C. Têtes de lecture/écriture reliées par le bras mobile \ +D. Cylindre = coupe transversale des plateaux \ +E. Pistes = groupe de secteurs contigüs \ +F. Secteur angulaire + </small> <div> -<small> - - <!-- .element width="70%" --> - -A. Plateaux -B. Bras mobile -C. Têtes de lecture/écriture reliées par le bras mobile -D. Cylindre = coupe transversale des plateaux -E. Pistes = groupe de secteurs contigüs -F. Secteur angulaire + <!-- .element width="90%" --> -</small> </div> </div> @@ -113,10 +110,10 @@ Si on fait abstraction de la gestion du cache, l'interface d'accès à un périp ## Adressage -- Les blocs d'un périphérique de taille $N$ blocs de $n$ bytes chacun, sont adressables de $0$ à $N-1$ (comme un tableau en C) +- Les blocs d'un périphérique de taille $N$ blocs de $n$ bytes chacun, sont adressables de `$0$` à `$N-1$` (comme un tableau en C) - La lecture/écriture se fait uniquement par bloc, donc par unité de $n$ bytes -- La lecture/écriture du bloc $0$ traite les bytes de l'offset $0$ à l'offset $n-1$ du périphérique -- La lecture/écriture du bloc $b$ traite les bytes de l'offset $n*b$ à l'offset $n*(b+1)-1$ +- La lecture/écriture du bloc $0$ traite les bytes de l'offset `$0$` à l'offset `$n-1$` du périphérique +- La lecture/écriture du bloc $b$ traite les bytes de l'offset `$n*b$` à l'offset `$n*(b+1)-1$` <!-- .element width="70%" --> @@ -127,12 +124,12 @@ Si on fait abstraction de la gestion du cache, l'interface d'accès à un périp Exemple : périphérique de 10MB (1024 * 1024 * 10 bytes), taille de bloc de 1024 bytes -- Quelle est l'intervalle des offsets des bytes du bloc numéro 17 ? - - `$[1024*17,1024*(17+1)-1] = [17408,18431]$` -- Dans quel bloc se trouve le byte localisé à l'offset 7000 du périphérique ? - - `$7000/1024 = 6.8359375 = 6$` -- À quel offset du bloc est localisé le byte se trouvant à l'offset 7000 du périphérique ? - - `$7000 \% 1024 = 856$` +- Quelle est l'intervalle des offsets des bytes du bloc numéro 17 ? \ + `$[1024*17,1024*(17+1)-1] = [17408,18431]$` <!-- .element: class="fragment" data-fragment-index="0" --> +- Dans quel bloc se trouve le byte localisé à l'offset 7000 du périphérique ? \ + `$7000/1024 = 6.8359375 = 6$` <!-- .element: class="fragment" data-fragment-index="1" --> +- À quel offset du bloc est localisé le byte se trouvant à l'offset 7000 du périphérique ? \ + `$7000 \% 1024 = 856$` <!-- .element: class="fragment" data-fragment-index="2" --> <!-- .element width="70%" --> @@ -144,13 +141,15 @@ Exemple : périphérique de 10MB (1024 * 1024 * 10 bytes), taille de bloc de 102 - Avec cet adressage logique, on peut facilement émuler un périphérique bloc à partir d'un fichier image - On peut y accéder via les appels systèmes usuels `read` et `write` -- Ces appels système peuvent simplement être mappés sur les fonctions décrites précédemment : +- Ces appels système peuvent simplement être mappés sur les fonctions décrites précédemment : + +<div style="font-size: 0.9em"> - `init_block_dev(dev, size)` $\longrightarrow$ `fd = open(file)` - `read_blocks(dev, block_nb, buf, count)` $\longrightarrow$ `read(fd)` - `write_blocks(dev, block_nb, buf, count)` $\longrightarrow$ `write(fd)` - +</div> -- -- GitLab