Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
B
bs
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Peter Gerwinski
bs
Commits
64c34cc5
Commit
64c34cc5
authored
Jun 12, 2023
by
Peter Gerwinski
Browse files
Options
Downloads
Patches
Plain Diff
Notizen 12.6.2023
parent
4d6996b5
No related branches found
No related tags found
No related merge requests found
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
20230611/bs-20230611.txt
+443
-0
443 additions, 0 deletions
20230611/bs-20230611.txt
20230611/crash.c
+1
-0
1 addition, 0 deletions
20230611/crash.c
with
444 additions
and
0 deletions
20230611/bs-20230611.txt
0 → 100644
+
443
−
0
View file @
64c34cc5
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
This diff is collapsed.
Click to expand it.
20230611/crash.c
0 → 100644
+
1
−
0
View file @
64c34cc5
main
(){
puts
(
0
);}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment