Skip to content
Snippets Groups Projects
Commit 94d539ec authored by Peter Gerwinski's avatar Peter Gerwinski
Browse files

Notizen und Tafelbilder 28.5.2021

parent 7d9c000d
Branches
No related tags found
No related merge requests found
Hauptspeicherverwaltung, 28.05.2021, 12:09:52
=============================================
Intel-16-Bit-Rechner ("Real Mode")
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Segment- und Offset-Adresse
B800:0010: 67
`--' `--'
| |
| `---> 0010 Offset
`--------> B800 + 16 * Segment
-----
B8010 = physikalische Adresse
Grund:
Hierdurch möglich, Programme in 16-Byte-Schritten
an beliebige Stellen im Speicher zu verschieben
"Relokation"
Adressen, die das Programm verwendet, sind grundätzlich
nur Offset-Adressen. Das Betriebssystem vergibt die
Segment-Adressen.
Segment-Register:
- CS: Codesegment
- DS: Datensegment
- ES: Extra-Segment
- SS: Stack-Segment
... jeweils bis zu 64 kiB
--> Das Betriebssystem kann dem Programm bis zu 256 kiB zur Verfügung stellen.
Dies sollte für alle Zeiten reichen. ;-)
--> Programme, die mehr als 256 kiB benötigen,
manipulieren die Segmentregister selbst.
Damit kann das Programm bis zu 1 MiB ansprechen.
Dies sollte für alle Zeiten reichen. ;-)
Intel-32-Bit-Rechner ("Protected Mode")
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Offset-Adressen: 32 Bit
Segment-Adresse: wird zu "Selektor" = Index für ein Array,
das sich intern im Prozessor befindet
und die eigentlichen Segmente beschreibt --> "Deskriptoren"
Inhalt der Deskriptorentabelle:
- Lage des Segments im Speicher (als 32-Bit-Wert)
- Länge des Segments im Speicher (als 32-Bit-Wert)
(eigentlich immer 4 GiB; läßt sich auf diese Weise
mit Hardware-Untersützung begrenzen)
Bei Zugriff außerhalb des zugewiesenen Segments wird im
Prozessor eine "Exception" ausgelöst (ähnlich Interrupt).
- Präsenz-Bit: Segmente können entweder im physikalischen Speicher vorhanden sein
oder (z.B. auf Festplatte) ausgelagert sein. Bei Zugriff auf ein ausgelagertes
Segment wird eine Exception ausgelöst.
- Privilegierung: Wer darf dieses Segment nutzen?
Der Kernel hat mehr Rechte als die Anwenderprogramme.
- Segmenttyp: Ist dieses Segment lesbar/schreibbar/ausführbar?
Vorteile:
- Maximale Speichergröße: 4 GiB statt 256 kiB.
Dies sollte für alle Zeiten reichen. ;-)
- Schutz des Kernels und der Anwendungsprogramme vor gegenseitiger Manipulation
- Auslagern von Speicher wird möglich.
Was noch fehlt:
- Auslagern von Speicher nur segmentweise möglich.
--> Ein Programm kann immer nur als Ganzes ausgelagert werden.
Memory Management Unit (MMU)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
https://de.wikipedia.org/wiki/Memory_Management_Unit:
- Auslagern von z.Zt. nicht benötigtem Speicher
- Verzögertes Bereitstellen von angefordertem, aber noch nicht genutztem Speicher.
- Isolation von Prozessen untereinander und zwischen Prozess und Betriebssystem
- Sharing von einzelnen Seiten zwischen Prozessen (Shared Memory)
- Non-Sharing von Seiten zwischen Threads eines Prozesses (Thread-local storage)
- Einblenden von Dateien als Speicher (Memory-mapped files)
Die MMU unterteilt das dem Programm zugeordnete Segment
und den physikalischen Speicher in "Seiten" (typischerweise 4 kiB)
und ordnet diese einander zu, nicht notwendigerweise linear.
Auch können Speicherseiten ausgelagert sein. (Damit wird die
bereits im Protected Mode realisierte Auslagerung von Segmenten
überflüssig.)
Es können also z.B. zwei verschiedene Programme dieselbe Speicheradresse "sehen";
dahinter verbergen sich jedoch zwei unterschiedliche Adressen im physikalischen
Speicher.
Massenspeicherverwaltung, 28.05.2021, 13:49:15
==============================================
"Dateisystem" = Schema, wie man Daten auf dem Datenträger ablegt und wiederfindet
Beispiel: test-tab.txt
Datenträger: USB-Stick
Größe: 4 GB
Inhalt:
Adresse Länge Datei
0 14 test-1.txt
14 28 test-2.txt
... ... ...
--> mit auf dem Datenträger speichern
File Allocation Table (FAT)
~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Unterteilung des Datenträgers in "Cluster" von fester Größe,
z.B. 1 kiB, 2 kiB, 4 kiB (bis hierhin: gut), ..., 64 kiB (schlecht)
- File Allocation Table (FAT) = Tabelle aller Cluster
Die maximale Größe der Tabelle kann 2^12, 2^16 oder 2^32 betragen.
Jeder Eintrag ist 12 oder 16 oder 32 Bit groß und kann somit
als Index für die Tabelle genutzt werden.
--> Maximale Größe des Datenträgers = Größe der FAT * Größe des Clusters
Beispiel: FAT16: 2^16 * 64 kiB = 4 GiB,
Problem mit Vorzeichen: nur 2 GiB
Bei "vernünftiger" Cluster-Größe von 4 kiB: 2^16 * 4 kiB = 256 MiB,
mit Vorzeichenproblem sogar nur 2^15 * 4 kiB = 128 MiB
- Bedeutung der Werte am Beispiel FAT16:
0000: Cluster ist nicht von einer Datei (oder einem Verzeichnis) belegt
0002 bis FFF6: Cluster ist Teil einer Cluster-Kette; Wert = nächster Cluster in Kette
FFF7: Cluster ist defekt
FFF8 bis FFFF: Cluster ist der letzte Cluster einer Cluster-Kette
- Zugriff auf eine Datei über deren ersten Cluster, z.B. 0004,
an den sich eine verkettete Liste von Clustern anschließt.
Länge der Datei: 5 Cluster
FAT
0000
0000
0000
0000
0005 <-- Cluster Nr. 0004 = erster Cluster der Kette
0006 <-- 2. Cluster der Kette
0008
FFF7 <-- defekten Cluster überspringen
0009
FFF8 <-- letzter Cluster der Kette
0000
0000
...
--> Eine Datei belegt immer mindestens 1 Cluster.
Daher sind große Cluster (z.B. 64 kiB) schlecht.
- Zur Sicherheit befindet sich die FAT zweimal auf dem Datenträger.
Damit sind die Cluster 0 und 1 belegt.
Daher: 1. Cluster für Dateien = Nr. 0002
- Nach den FATs: Stamm- oder Wurzelverzeichnis (root directory)
Tabelle fester Größe
Jeder Eintrag:
- Dateiname: 11 Bytes, 8 Zeichen für Dateinamen, 3 für "Erweiterung", z.B. "COMMAND.COM"
- Datei-Attribute: 1 Byte, z.B.:
- Lesen/Schreiben
- versteckte Dateien
- "System-Datei"
- "Archiv-Bit" (für Backup-Software)
- Datei ist Unterverzeichnis
- Datei ist Volume-Label (= Name des Datenträgers)
- Datum und Zeit der letzten Änderung
- Speicherung: 5 Bit für Stunde, 6 für MInute, 5 für Sekunde
--> Sekunden mit 2s Auflösung
- ...
- Start-Cluster der Datei
- Länge der Datei in Bytes
- Problem: Fragmentierung
Dateien sind als verkettete Listen gespeichert.
Datei A speichern:
A
A
A
A
Datei B speichern:
A
A
A
A
B
B
B
B
Datei A löschen:
-
-
-
-
B
B
B
B
Datei C speichern:
C
C
C
C
B
B
B
B
C
C
C
C
--> Datei C ist fragmentiert.
Nach längerer Benutzung sind FAT-Datenträger häufig komplett fragmentiert.
--> langsamer
--> Defragmentierung sinnvoll.
cassini/home/peter/bo/2021ss/bs/20210528> for x in $(seq 5); do touch test-$x.txt; sleep 1s; done
cassini/home/peter/bo/2021ss/bs/20210528> ls -lrt
insgesamt 72
-rw-r--r-- 1 peter peter 51036 Mai 28 12:57 mmu.xcf.gz
-rw-r--r-- 1 peter peter 160 Mai 28 14:05 test-tab.txt
-rw-r--r-- 1 peter peter 6361 Mai 28 14:46 bs-20210528.txt
-rw-r--r-- 1 peter peter 14 Mai 28 14:47 test-1.txt
-rw-r--r-- 1 peter peter 19 Mai 28 14:47 test-2.txt
-rw-r--r-- 1 peter peter 0 Mai 28 14:47 test-3.txt
-rw-r--r-- 1 peter peter 0 Mai 28 14:47 test-4.txt
-rw-r--r-- 1 peter peter 0 Mai 28 14:47 test-5.txt
cassini/home/peter/bo/2021ss/bs/20210528> ls --full-time -lrt
insgesamt 72
-rw-r--r-- 1 peter peter 51036 2021-05-28 12:57:49.619244900 +0200 mmu.xcf.gz
-rw-r--r-- 1 peter peter 160 2021-05-28 14:05:19.225937663 +0200 test-tab.txt
-rw-r--r-- 1 peter peter 6361 2021-05-28 14:46:19.903177871 +0200 bs-20210528.txt
-rw-r--r-- 1 peter peter 14 2021-05-28 14:47:17.859771765 +0200 test-1.txt
-rw-r--r-- 1 peter peter 19 2021-05-28 14:47:18.863782073 +0200 test-2.txt
-rw-r--r-- 1 peter peter 0 2021-05-28 14:47:19.867792382 +0200 test-3.txt
-rw-r--r-- 1 peter peter 0 2021-05-28 14:47:20.875802732 +0200 test-4.txt
-rw-r--r-- 1 peter peter 0 2021-05-28 14:47:21.883813083 +0200 test-5.txt
cassini/home/peter/bo/2021ss/bs/20210528> mount /media/usb1/
mount: /media/usb1: wrong fs type, bad option, bad superblock on /dev/sdb1, missing codepage or helper program, or other error.
cassini/home/peter/bo/2021ss/bs/20210528> echo sudo mkdosfs /dev/sdb1
sudo mkdosfs /dev/sdb1
cassini/home/peter/bo/2021ss/bs/20210528> sudo mkdosfs /dev/sdb1
[sudo] Passwort für peter:
mkfs.fat 4.1 (2017-01-24)
cassini/home/peter/bo/2021ss/bs/20210528> mount /media/usb1/
cassini/home/peter/bo/2021ss/bs/20210528> ls -l /media/usb1/
insgesamt 0
cassini/home/peter/bo/2021ss/bs/20210528> cp -pi test-*.txt /media/usb1/
cassini/home/peter/bo/2021ss/bs/20210528> ls -lrt /media/usb1/
insgesamt 12
-rwxr-xr-x 1 peter peter 160 Mai 28 14:05 test-tab.txt
-rwxr-xr-x 1 peter peter 14 Mai 28 14:47 test-1.txt
-rwxr-xr-x 1 peter peter 19 Mai 28 14:47 test-2.txt
-rwxr-xr-x 1 peter peter 0 Mai 28 14:47 test-3.txt
-rwxr-xr-x 1 peter peter 0 Mai 28 14:47 test-4.txt
-rwxr-xr-x 1 peter peter 0 Mai 28 14:47 test-5.txt
cassini/home/peter/bo/2021ss/bs/20210528> ls -lrt --full-time /media/usb1/
insgesamt 12
-rwxr-xr-x 1 peter peter 160 2021-05-28 14:05:19.000000000 +0200 test-tab.txt
-rwxr-xr-x 1 peter peter 14 2021-05-28 14:47:17.000000000 +0200 test-1.txt
-rwxr-xr-x 1 peter peter 19 2021-05-28 14:47:18.000000000 +0200 test-2.txt
-rwxr-xr-x 1 peter peter 0 2021-05-28 14:47:19.000000000 +0200 test-3.txt
-rwxr-xr-x 1 peter peter 0 2021-05-28 14:47:20.000000000 +0200 test-4.txt
-rwxr-xr-x 1 peter peter 0 2021-05-28 14:47:21.000000000 +0200 test-5.txt
cassini/home/peter/bo/2021ss/bs/20210528> umount /media/usb1
cassini/home/peter/bo/2021ss/bs/20210528> mount /media/usb1
cassini/home/peter/bo/2021ss/bs/20210528> ls -lrt --full-time /media/usb1/
insgesamt 12
-rwxr-xr-x 1 peter peter 160 2021-05-28 14:05:18.000000000 +0200 test-tab.txt
-rwxr-xr-x 1 peter peter 14 2021-05-28 14:47:16.000000000 +0200 test-1.txt
-rwxr-xr-x 1 peter peter 0 2021-05-28 14:47:18.000000000 +0200 test-3.txt
-rwxr-xr-x 1 peter peter 19 2021-05-28 14:47:18.000000000 +0200 test-2.txt
-rwxr-xr-x 1 peter peter 0 2021-05-28 14:47:20.000000000 +0200 test-5.txt
-rwxr-xr-x 1 peter peter 0 2021-05-28 14:47:20.000000000 +0200 test-4.txt
cassini/home/peter/bo/2021ss/bs/20210528>
20210528/mmu.png

79.8 KiB

File added
Hello, world!
Dies ist ein Test.
Datenträger: USB-Stick
Größe: 4 GB
Inhalt:
Adresse Länge Datei
0 14 test-1.txt
14 28 test-2.txt
... ... ...
...@@ -17,15 +17,22 @@ ...@@ -17,15 +17,22 @@
- yesVNC auch im Hintergrund laufen lassen - yesVNC auch im Hintergrund laufen lassen
- Scroll-Algorithmus für x11vnc oder TightVNC - Scroll-Algorithmus für x11vnc oder TightVNC
- Kombinierter Desktop-Client für VNC und Mumble - Kombinierter Desktop-Client für VNC und Mumble
- Mumble-Desktop-Client: Konfiguration vereinfachen * Mumble-Desktop-Client: Konfiguration vereinfachen
- Mumble/VNC/CVH-Camera für weitere Plattformen nutzbar machen, z.B. iOS :o Mumble/VNC/CVH-Camera für weitere Plattformen nutzbar machen, z.B. iOS, MacOS X
- Mumble-Client: Forward-Error-Correction aktivierbar machen - Mumble-Client: Forward-Error-Correction aktivierbar machen
- PULT auf übersichtlichere und effizientere Weise neu programmieren - PULT auf übersichtlichere und effizientere Weise neu programmieren
* Docker für PULT * Docker für PULT
- Komfortable Fernsteuerung von Rechnern von Teilnehmenden über VNC in PULT * Komfortable Fernsteuerung von Rechnern von Teilnehmenden über VNC in PULT
Server: z.B. TightVNC; Client: z.B. noVNC
- Komfortable Fernsteuerung von Rechnern von Teilnehmenden über VNC in BBB - Komfortable Fernsteuerung von Rechnern von Teilnehmenden über VNC in BBB
- Work Advanture für die Hochschule installieren - Work Advanture für die Hochschule installieren
Bsp-Instanz aus Bochum (von dem dortigen Hackspace): https://virtuallab.das-labor.org/ Bsp-Instanz aus Bochum (von dem dortigen Hackspace): https://virtuallab.das-labor.org/
Doku dazu: https://howto.rc3.world/workadventure.en.html Doku dazu: https://howto.rc3.world/workadventure.en.html
* 3d-Scan aus einem Film heraus
- BBB: Standard-Umfrage: Ja/Nein/Enthaltung
- Mobil mit 10 Fingern bedienbare Tastatur
- Sinnvolle Anwendung für PineWatch
- Automatische Transkription in BBB und/oder PULT
(zum Vergleich https://github.com/jitsi/jigasi/pull/294)
- Treiber für freies Smartphone - Treiber für freies Smartphone
- Echtzeit-Kommunikation mit freiem Smartphone - Echtzeit-Kommunikation mit freiem Smartphone
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment