diff --git a/20230611/bs-20230611.txt b/20230611/bs-20230611.txt new file mode 100644 index 0000000000000000000000000000000000000000..0883dc4040dc5505f1fc134207d09436d07444d5 --- /dev/null +++ b/20230611/bs-20230611.txt @@ -0,0 +1,443 @@ +Lehrevaluation, 05.06.2023, 17:26:46 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + - Treiberentwicklung, Echtzeit- und Betriebssysteme: + https://befragung.hs-bochum.de/evasys/online.php?pswd=RE3NX + + - Nachhaltige Informationstechnologie: + https://befragung.hs-bochum.de/evasys/online.php?pswd=AX9CV + +Dateisysteme, 05.06.2023, 18:04:19 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2 Dateien gespeichert in einem FAT-12-Dateisystem: + +insgesamt 36 +-rwxr-xr-x 1 peter peter 1473 Jun 5 18:03 bs-20230605.txt +-rwxr-xr-x 1 peter peter 34148 Mai 11 2021 GNU-AGPL-3 + +Hauptverzeichnis: +00000a00 42 78 00 74 00 00 00 ff ff ff ff 0f 00 ad ff ff |Bx.t............| +00000a10 ff ff ff ff ff ff ff ff ff ff 00 00 ff ff ff ff |................| +00000a20 01 62 00 73 00 2d 00 32 00 30 00 0f 00 ad 32 00 |.b.s.-.2.0....2.| +00000a30 33 00 30 00 36 00 30 00 35 00 00 00 2e 00 74 00 |3.0.6.0.5.....t.| +00000a40 42 53 2d 32 30 32 7e 31 54 58 54 20 00 00 e6 82 |BS-202~1TXT ....| +00000a50 c5 56 c5 56 00 00 63 80 c5 56 03 00 c1 05 00 00 |.V.V..c..V......| +00000a60 41 47 00 4e 00 55 00 2d 00 41 00 0f 00 a8 47 00 |AG.N.U.-.A....G.| +00000a70 50 00 4c 00 2d 00 33 00 00 00 00 00 ff ff ff ff |P.L.-.3.........| +00000a80 47 4e 55 2d 41 47 7e 31 20 20 20 20 00 00 79 85 |GNU-AG~1 ..y.| +00000a90 c5 56 c5 56 00 00 00 81 ab 52 04 00 64 85 00 00 |.V.V.....R..d...| +00000aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| + +bs-20230605.txt beginnt ab Cluster + 2 = 3. +GNU-AGPL-3 beginnt ab Cluster + 2 = 4. + +Ende des Boot-Sektors (ohne Partitionstabelle): +000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.| + +FAT: +00000200 f8 ff ff 00 f0 ff 05 60 00 07 80 00 09 a0 00 0b |.......`........| +00000210 c0 00 0d e0 00 0f 00 01 11 20 01 13 40 01 ff 0f |......... ..@...| +00000220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| + + - Die "05" ist ein Zeiger auf das 2. Cluster von GNU-AGPL-3. + Sie befindet sich also in dem Feld für "Cluster Nr. 4" + + - Die "06" ist ein Zeiger auf das 3. Cluster von GNU-AGPL-3. + Sie befindet sich also in dem Feld für "Cluster Nr. 5" + + - Die "07" ist ein Zeiger auf das 4. Cluster von GNU-AGPL-3. + Sie befindet sich also in dem Feld für "Cluster Nr. 6" + + - "05 60 00 07 80 00 09 a0 00 0b" müssen wir demnach lesen als + .---^ .----^ .--^ + "005 006 007 008 009 00a 00b ..." + --> Nibble-Reihenfolge: 10 32 54 76 98 ... + + - Was kommt dann davor? + "f8 ff ff 00 f0 ff 05 60 00 07 80 00 09 a0 00 0b" wird zu + .---^ + "ff8 fff 000 fff 005 006 ..." + + - fff = Erster und letzter Cluster von bs-20230605.txt + 005 = Erster Cluster von GNU-AGPL-3 + 000 = Freies Cluster. Sollte es eigentlich nicht geben. + ff8 fff = durch FATs und Hauptverzeichnis belegte Cluster + +USB-Stick mit FAT-32-Dateisystem, 12.06.2023, 16:05:54 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +cassini/home/peter/bo/2023ss/bs/20230611> sudo mkdosfs /dev/sdb1 +mkfs.fat 4.1 (2017-01-24) +cassini/home/peter/bo/2023ss/bs/20230611> cat /dev/sdb1 | hexdump -C +00000000 eb 58 90 6d 6b 66 73 2e 66 61 74 00 02 08 20 00 |.X.mkfs.fat... .| +00000010 02 00 00 00 00 f8 00 00 3e 00 81 00 00 08 00 00 |........>.......| +00000020 00 c8 7c 00 28 1f 00 00 00 00 00 00 02 00 00 00 |..|.(...........| +00000030 01 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000040 80 00 29 d7 3e c7 5f 4e 4f 20 4e 41 4d 45 20 20 |..).>._NO NAME | +00000050 20 20 46 41 54 33 32 20 20 20 0e 1f be 77 7c ac | FAT32 ...w|.| +00000060 22 c0 74 0b 56 b4 0e bb 07 00 cd 10 5e eb f0 32 |".t.V.......^..2| +00000070 e4 cd 16 cd 19 eb fe 54 68 69 73 20 69 73 20 6e |.......This is n| +00000080 6f 74 20 61 20 62 6f 6f 74 61 62 6c 65 20 64 69 |ot a bootable di| +00000090 73 6b 2e 20 20 50 6c 65 61 73 65 20 69 6e 73 65 |sk. Please inse| +000000a0 72 74 20 61 20 62 6f 6f 74 61 62 6c 65 20 66 6c |rt a bootable fl| +000000b0 6f 70 70 79 20 61 6e 64 0d 0a 70 72 65 73 73 20 |oppy and..press | +000000c0 61 6e 79 20 6b 65 79 20 74 6f 20 74 72 79 20 61 |any key to try a| +000000d0 67 61 69 6e 20 2e 2e 2e 20 0d 0a 00 00 00 00 00 |gain ... .......| +000000e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +* +000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.| +00000200 52 52 61 41 00 00 00 00 00 00 00 00 00 00 00 00 |RRaA............| +00000210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +* +000003e0 00 00 00 00 72 72 41 61 31 91 0f 00 02 00 00 00 |....rrAa1.......| +000003f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.| +00000400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +* +00000c00 eb 58 90 6d 6b 66 73 2e 66 61 74 00 02 08 20 00 |.X.mkfs.fat... .| +00000c10 02 00 00 00 00 f8 00 00 3e 00 81 00 00 08 00 00 |........>.......| +00000c20 00 c8 7c 00 28 1f 00 00 00 00 00 00 02 00 00 00 |..|.(...........| +00000c30 01 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +00000c40 80 00 29 d7 3e c7 5f 4e 4f 20 4e 41 4d 45 20 20 |..).>._NO NAME | +00000c50 20 20 46 41 54 33 32 20 20 20 0e 1f be 77 7c ac | FAT32 ...w|.| +00000c60 22 c0 74 0b 56 b4 0e bb 07 00 cd 10 5e eb f0 32 |".t.V.......^..2| +00000c70 e4 cd 16 cd 19 eb fe 54 68 69 73 20 69 73 20 6e |.......This is n| +00000c80 6f 74 20 61 20 62 6f 6f 74 61 62 6c 65 20 64 69 |ot a bootable di| +00000c90 73 6b 2e 20 20 50 6c 65 61 73 65 20 69 6e 73 65 |sk. Please inse| +00000ca0 72 74 20 61 20 62 6f 6f 74 61 62 6c 65 20 66 6c |rt a bootable fl| +00000cb0 6f 70 70 79 20 61 6e 64 0d 0a 70 72 65 73 73 20 |oppy and..press | +00000cc0 61 6e 79 20 6b 65 79 20 74 6f 20 74 72 79 20 61 |any key to try a| +00000cd0 67 61 69 6e 20 2e 2e 2e 20 0d 0a 00 00 00 00 00 |gain ... .......| +00000ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +* +00000df0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.| +00000e00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +* +00004000 f8 ff ff 0f ff ff ff 0f f8 ff ff 0f 00 00 00 00 |................| +00004010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +* +003e9000 f8 ff ff 0f ff ff ff 0f f8 ff ff 0f 00 00 00 00 |................| +003e9010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +* + +Ende des Bootsektors: 55 aa +00000df0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.| + +Info zum Datenträger: nur Nullen +00000e00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +* + +FAT 1: +00004000 f8 ff ff 0f ff ff ff 0f f8 ff ff 0f 00 00 00 00 |................| +00004010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +* + +FAT 2: +003e9000 f8 ff ff 0f ff ff ff 0f f8 ff ff 0f 00 00 00 00 |................| +003e9010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +* + +Jede 32-Bit-Zahl ist ein Eintrag in der FAT. +1. Eintrag: f8 ff ff 0f = Little Endian für 0ffffff8 = letzter Cluster einer Clusterkette +2. Eintrag: ff ff ff 0f = Little Endian für 0fffffff = letzter Cluster einer Clusterkette +Diese Cluster sind nicht belegt, sondern sie stehen für die Informationen zum +Datenträger ganz am Anfang. + +3. Eintrag: f8 ff ff 0f = Little Endian für 0ffffff8 = letzter Cluster einer Clusterkette +Dieses Cluster enthält das Wurzelverzeichnis. + +Danach folgen die eigentlichen Dateien (z.Zt. keine, daher alle Cluster +unbelegt: 00000000). + + +Wir legen eine Datei "test.txt" auf dem Datenträger an. +Danach lauten die FATs und alles danach: + +00004000 f8 ff ff 0f ff ff ff 0f f8 ff ff 0f ff ff ff 0f |................| +00004010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +* +003e9000 f8 ff ff 0f ff ff ff 0f f8 ff ff 0f ff ff ff 0f |................| +003e9010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +* +007ce000 41 74 00 65 00 73 00 74 00 2e 00 0f 00 8f 74 00 |At.e.s.t......t.| +007ce010 78 00 74 00 00 00 ff ff ff ff 00 00 ff ff ff ff |x.t.............| +007ce020 54 45 53 54 20 20 20 20 54 58 54 20 00 64 13 72 |TEST TXT .d.r| +007ce030 cc 56 cc 56 00 00 13 72 cc 56 03 00 13 00 00 00 |.V.V...r.V......| +007ce040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +* +007cf000 44 69 65 73 20 69 73 74 20 65 69 6e 20 54 65 73 |Dies ist ein Tes| +007cf010 74 2e 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 |t...............| +007cf020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| + +FAT: +4. Eintrag: ff ff ff 0f = Little Endian für 0fffffff = letzter Cluster einer Clusterkette +Dieses Cluster enthält die Datei "test.txt" + +Hauptverzeichnis: +007ce000 41 74 00 65 00 73 00 74 00 2e 00 0f 00 8f 74 00 |At.e.s.t......t.| +007ce010 78 00 74 00 00 00 ff ff ff ff 00 00 ff ff ff ff |x.t.............| +007ce020 54 45 53 54 20 20 20 20 54 58 54 20 00 64 13 72 |TEST TXT .d.r| +007ce030 cc 56 cc 56 00 00 13 72 cc 56 03 00 13 00 00 00 |.V.V...r.V......| +007ce040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +--> Eintrag für "test.txt": + - Dateiname in 8.3-Schreibweise: + 54 45 53 54 20 20 20 20 54 58 54 20 00 64 13 72 |TEST TXT + - Dateiname in 16-Bit-Zeichensatz, Little Endian, falsches(?) Alignment: + 007ce000 41 74 00 65 00 73 00 74 00 2e 00 0f 00 8f 74 00 |At.e.s.t......t.| + 007ce010 78 00 74 00 00 00 ff ff ff ff 00 00 ff ff ff ff |x.t.............| + - "A" am Anfang: ??? + - Verzeichniseinträge haben eigentlich nur Platz für 8.3-Dateinamen. + Längere Dateinamen werden in zusätzlichen, ungültigen Verzeichniseinträgen + gespeichert. + +Die Datei "test.txt" selbst: +007cf000 44 69 65 73 20 69 73 74 20 65 69 6e 20 54 65 73 |Dies ist ein Tes| +007cf010 74 2e 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 |t...............| + + +Noch eine Datei darauf gespeichert: "bs-20230612.txt" +00004000 f8 ff ff 0f ff ff ff 0f f8 ff ff 0f ff ff ff 0f |................| +00004010 05 00 00 00 06 00 00 00 ff ff ff 0f 00 00 00 00 |................| +00004020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +* +003e9000 f8 ff ff 0f ff ff ff 0f f8 ff ff 0f ff ff ff 0f |................| +003e9010 05 00 00 00 06 00 00 00 ff ff ff 0f 00 00 00 00 |................| +003e9020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +* +007ce000 41 74 00 65 00 73 00 74 00 2e 00 0f 00 8f 74 00 |At.e.s.t......t.| +007ce010 78 00 74 00 00 00 ff ff ff ff 00 00 ff ff ff ff |x.t.............| +007ce020 54 45 53 54 20 20 20 20 54 58 54 20 00 64 13 72 |TEST TXT .d.r| +007ce030 cc 56 cc 56 00 00 13 72 cc 56 03 00 13 00 00 00 |.V.V...r.V......| +007ce040 42 78 00 74 00 00 00 ff ff ff ff 0f 00 ad ff ff |Bx.t............| +007ce050 ff ff ff ff ff ff ff ff ff ff 00 00 ff ff ff ff |................| +007ce060 01 62 00 73 00 2d 00 32 00 30 00 0f 00 ad 32 00 |.b.s.-.2.0....2.| +007ce070 33 00 30 00 36 00 31 00 31 00 00 00 2e 00 74 00 |3.0.6.1.1.....t.| +007ce080 42 53 2d 32 30 32 7e 31 54 58 54 20 00 64 4a 73 |BS-202~1TXT .dJs| +007ce090 cc 56 cc 56 00 00 46 73 cc 56 04 00 a8 26 00 00 |.V.V..Fs.V...&..| +007ce0a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +* +007cf000 44 69 65 73 20 69 73 74 20 65 69 6e 20 54 65 73 |Dies ist ein Tes| +007cf010 74 2e 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 |t...............| +007cf020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +* +007d0000 4c 65 68 72 65 76 61 6c 75 61 74 69 6f 6e 2c 20 |Lehrevaluation, | +007d0010 30 35 2e 30 36 2e 32 30 32 33 2c 20 31 37 3a 32 |05.06.2023, 17:2| +007d0020 36 3a 34 36 0a 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e |6:46.~~~~~~~~~~~| +007d0030 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e |~~~~~~~~~~~~~~~~| +007d0040 7e 7e 7e 7e 7e 7e 7e 7e 7e 0a 20 2d 20 54 72 65 |~~~~~~~~~. - Tre| +007d0050 69 62 65 72 65 6e 74 77 69 63 6b 6c 75 6e 67 2c |iberentwicklung,| +007d0060 20 45 63 68 74 7a 65 69 74 2d 20 75 6e 64 20 42 | Echtzeit- und B| +007d0070 65 74 72 69 65 62 73 73 79 73 74 65 6d 65 3a 0a |etriebssysteme:.| + +Clusterkette: 00004010 05 00 00 00 06 00 00 00 ff ff ff 0f +Die Datei beginnt in Cluster Nr. 4. +In Cluster 4 steht ein Zeiger auf Cluster 5. +In Cluster 5 steht ein Zeiger auf Cluster 6. +In Cluster 6 steht eine Ende-Markierung. + +Cluster Nr. 4 steht an Adresse 0x007d0000. +Cluster Nr. 3 steht an Adresse 0x007cf000. +--> 1 Cluster hat die Größe 0x1000 = 2^12 Bytes = 4096 Bytes. + + +Wir löschen die Datei "test.txt" +und speichern stattdessen die Datei "array-param-13.s32" auf dem Datenträger. + +00004000 f8 ff ff 0f ff ff ff 0f f8 ff ff 0f 00 00 00 00 |................| +00004010 05 00 00 00 06 00 00 00 ff ff ff 0f 00 00 00 00 |................| +00004020 09 00 00 00 ff ff ff 0f 00 00 00 00 00 00 00 00 |................| +00004030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +* +003e9000 f8 ff ff 0f ff ff ff 0f f8 ff ff 0f 00 00 00 00 |................| +003e9010 05 00 00 00 06 00 00 00 ff ff ff 0f 00 00 00 00 |................| +003e9020 09 00 00 00 ff ff ff 0f 00 00 00 00 00 00 00 00 |................| +003e9030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +* +007ce000 e5 74 00 65 00 73 00 74 00 2e 00 0f 00 8f 74 00 |.t.e.s.t......t.| +007ce010 78 00 74 00 00 00 ff ff ff ff 00 00 ff ff ff ff |x.t.............| +007ce020 e5 45 53 54 20 20 20 20 54 58 54 20 00 64 13 72 |.EST TXT .d.r| +007ce030 cc 56 cc 56 00 00 13 72 cc 56 03 00 13 00 00 00 |.V.V...r.V......| +007ce040 42 78 00 74 00 00 00 ff ff ff ff 0f 00 ad ff ff |Bx.t............| +007ce050 ff ff ff ff ff ff ff ff ff ff 00 00 ff ff ff ff |................| +007ce060 01 62 00 73 00 2d 00 32 00 30 00 0f 00 ad 32 00 |.b.s.-.2.0....2.| +007ce070 33 00 30 00 36 00 31 00 31 00 00 00 2e 00 74 00 |3.0.6.1.1.....t.| +007ce080 42 53 2d 32 30 32 7e 31 54 58 54 20 00 64 4a 73 |BS-202~1TXT .dJs| +007ce090 cc 56 cc 56 00 00 46 73 cc 56 04 00 a8 26 00 00 |.V.V..Fs.V...&..| +007ce0a0 42 33 00 2e 00 73 00 33 00 32 00 0f 00 39 00 00 |B3...s.3.2...9..| +007ce0b0 ff ff ff ff ff ff ff ff ff ff 00 00 ff ff ff ff |................| +007ce0c0 01 61 00 72 00 72 00 61 00 79 00 0f 00 39 2d 00 |.a.r.r.a.y...9-.| +007ce0d0 70 00 61 00 72 00 61 00 6d 00 00 00 2d 00 31 00 |p.a.r.a.m...-.1.| +007ce0e0 41 52 52 41 59 2d 7e 31 53 33 32 20 00 64 b8 74 |ARRAY-~1S32 .d.t| +007ce0f0 cc 56 ca 56 00 00 19 78 c5 56 08 00 9a 14 00 00 |.V.V...x.V......| +007ce100 e5 57 50 58 7e 31 20 20 20 20 20 20 00 00 a5 74 |.WPX~1 ...t| +007ce110 cc 56 cc 56 00 00 a5 74 cc 56 00 00 00 00 00 00 |.V.V...t.V......| +007ce120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +* +007cf000 44 69 65 73 20 69 73 74 20 65 69 6e 20 54 65 73 |Dies ist ein Tes| +007cf010 74 2e 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 |t...............| +007cf020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +* + +Wir erkennen an der FAT, daß die neue Datei hinter der letzten liegt. +Insbesondere wurde sie nicht fragmentiert. + +Der Verzeichniseintrag für die gelöschte Datei existiert noch. + +--> Das Dateisystem "denkt mit". + + +cassini/home/peter/bo/2023ss/bs/20230611> ls -l --full-time /media/usb1/ +insgesamt 24 +-rwxr-xr-x 1 peter peter 5274 2023-06-05 17:00:50.000000000 +0200 array-param-13.s32 +-rwxr-xr-x 1 peter peter 9896 2023-06-12 16:26:12.000000000 +0200 bs-20230611.txt +-rwxr-xr-x 1 peter peter 24 2023-06-12 16:46:29.000000000 +0200 test2.txt +cassini/home/peter/bo/2023ss/bs/20230611> umount /media/usb1 +cassini/home/peter/bo/2023ss/bs/20230611> mount /media/usb1 +cassini/home/peter/bo/2023ss/bs/20230611> ls -l --full-time /media/usb1/ +insgesamt 24 +-rwxr-xr-x 1 peter peter 5274 2023-06-05 17:00:50.000000000 +0200 array-param-13.s32 +-rwxr-xr-x 1 peter peter 9896 2023-06-12 16:26:12.000000000 +0200 bs-20230611.txt +-rwxr-xr-x 1 peter peter 24 2023-06-12 16:46:28.000000000 +0200 test2.txt +cassini/home/peter/bo/2023ss/bs/20230611> + +Durch das umount und mount ist "test2.txt" eine Sekunde älter. Warum? +--> Die Auflösung zum Speichern von Uhrzeiten bei FAT beträgt 2 Sekunden. +Format, in dem die Uhrzeit gespeichert wird: + 5 / 6 / 5 Bits für Stunde / Minute / Sekunden + Die Auflösung der Sekunden beträgt 2 s (0..29) + + +Unix-Dateisystem: ext2 (und Nachfolger), 12.06.2023, 16:54:46 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Einteilung des Datenträgers in Blöcke zu 1 oder 2 oder 4 (oder 8) KiB +(anstelle von Clustern) + +Superblock: Informationen über den Datenträger selbst +(Es gibt zur Sicherheitshalber mehrere Kopien des Superblocks +an standardisierten Stellen auf dem Datenträger.) + +Inodes: "Indexknoten" +Datenstruktur mit: + - Art der Datei (normal, Verzeichnis, Symlink, Gerätedatei, ...) + - Zugriffsrechte + - Zeiten + - ... + - Zeiger auf Blöcke, in denen sich die eigentlichen Daten befinden +--> Ein Inode "ist " eine Datei. Er repräsentiert eine Datei. +NICHT im Inode: Dateiname + +Die Inodes werden auf dem Datenträger separat von den Blöcken gespeichert. +Beim Formatieren wird eine feste Zahl von Inodes reserviert. + +Ein Verzeichnis enthält eine Liste von Dateinamen +zusammen mit den Inodes, auf die diese verweisen --> (Hard) Link. +(Unter FAT: Das Verzeichnis enthält auch die Attribute.) + +Wie verweisen die Inodes auf die Daten? + - Ein Inode hat Platz für 15 Zeiger. + - Die ersten 12 zeigen auf Blöcke. + - Für Dateien mit mehr als 12 Blöcken: + Der 13. Zeiger zeigt auf einen Block mit 128 Zeigern. + - Für Dateien mit noch mehr Blöcken: + Der 14. Zeiger zeigt auf einen Block mit 128 Zeigern auf + Blöcke mit jeweils 128 Zeigern. + - Für Dateien mit noch mehr Blöcken: + Der 15. Zeiger zeigt auf einen Block mit 128 Zeigern auf + Blöcke mit jeweils 128 Zeigern auf + Blöcke mit jeweils 128 Zeigern. +--> Maximalgröße von Dateien +--> Besonders kleine Dateien (ein paar Bytes) können auch direkt im Inode + gespeichert werden. Typische Anwendung: Symlinks. + +Themen für nächste Woche, 12.06.2023, 17:14:03 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + - Buffer-Overflow ausnutzen + ? Neues vom Quantencomputer +?! Echtzeit + +Pause: IPv6, 12.06.2023, 17:15 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Laut https://datatracker.ietf.org/doc/html/rfc3587#section-3 hat die Host-ID +64 Bit, die Global Routing ID n bits und die Subnetz ID 64-n Bits, einzige +Ausnahme: Adressen die mit 0b000 beginnen (globale ipv6 unicast adressen +beginnen aber mit 0b001). /64-Bit-Netze lassen sich daher wirklich nicht weiter +aufteilen (funktioniert sicherlich irgendwie mit Host-Routen von jedem Host zu +jedem Host, aber das will man normalerweise ja vermeiden) + +Speicher-Management, 12.06.2023, 17:36:11 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Ein Programm, das versucht, auf eine nicht freigegebene Speicherzelle +zuzugreifen, wird vom Betriebssystem unterbrochen. +Hierfür notwendig: Hardware-Unterstützung. + +Speicher auf dem 8086 (16-Bit-Prozessor): + + 322e:0100 + ^ ^ + | `---- Offset-Adresse + | + `-------- Segment-Adresse + +physikalische Adresse = 16 · Segment-Adresse + Offset-Adresse + + 322d:0110 ist dieselbe Adresse wie 322e:0100 + +Sinn der Sache: Relozierbarkeit von Programmen. +Betriebssystem vergibt Segment-Adresse. +Programm arbeitet mit Offset-Adresse. +--> Programm in 16-Byte-Schritten relozierbar. + +Insgesamt: 20 Bit = 1 MiB max. Speichergröße +Offset: 16 Bit = 64 kiB durch Programm nutzbar + +Reicht nicht mehr --> 4 Segmente: Code, Daten, Stack, Extra +--> Insgesamt: 4 · 64 kiB = 256 kiB + +Speicher auf dem 80286 (16-Bit-Prozessor mit Speicherschutzmechanismen): + + 0020:0100 + ^ ^ + | `---- Offset-Adresse (16 Bit) + | + `--------- Selektor + +Selektor = Index für ein Array innerhalb des Prozessors, +das die physikalischen Speicheradressen enthält. +Diese können dann auch über 1 MiB hinausgehen. + +--> Man kann Programme gegeneinander abschotten. Jedes bekommt bis zu 256 kiB. + +Speicher auf dem 80386 (32-Bit-Prozessor mit Speicherschutzmechanismen): + + 0020:00000100 + ^ ^ + | `---- Offset-Adresse (32 Bit) + | + `--------- Selektor + +Selektor = Index für ein Array innerhalb des Prozessors, +das die physikalischen Speicheradressen enthält. + +--> Man kann Programme gegeneinander abschotten. Jedes bekommt bis zu 4 · 4 GiB. + Betriebssysteme, die das machen: OS/2, Linux, Windows NT, Windows XP + +Man kann außerdem in der Tabelle vermerken, ob Speicher tatsächlich +zugeordnet ist. --> Auslagerungsdatei/-partition auf Segment-Ebene + +Speicher auf späteren Prozessoren: MMU (Memory Management Unit) + + 0020:00000100 + ^ ^ + | `---- Offset-Adresse (32 oder 64 Bit) + | + `--------- Selektor + +Selektor = Index für ein Array innerhalb des Prozessors, +das die virtuellen Speicheradressen enthält. + +Die MMU bildet diese dann auf eine physikalische Speicheradresse ab. +Granularität: Speicher-"Seite" (4 kiB) + +Man kann außerdem in der MMU vermerken, ob Speicher tatsächlich +zugeordnet ist. --> Auslagerungsdatei/-partition auf Seiten-Ebene + +Außerdem möglich: Shared Memory, Datei-Mapping + +@@@ --> nächste Woche diff --git a/20230611/crash.c b/20230611/crash.c new file mode 100644 index 0000000000000000000000000000000000000000..62d224512d44d55d34a532eb9fcc9ea14e443368 --- /dev/null +++ b/20230611/crash.c @@ -0,0 +1 @@ +main(){puts(0);}