diff --git a/20210528/bs-20210528.txt b/20210528/bs-20210528.txt
new file mode 100644
index 0000000000000000000000000000000000000000..77d27c416c291050c618df81f41e309c1518aaf6
--- /dev/null
+++ b/20210528/bs-20210528.txt
@@ -0,0 +1,230 @@
+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.
diff --git a/20210528/fat-1.txt b/20210528/fat-1.txt
new file mode 100644
index 0000000000000000000000000000000000000000..46926ac620314b6f1cff1c525ff9cc066ff01793
--- /dev/null
+++ b/20210528/fat-1.txt
@@ -0,0 +1,59 @@
+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>
diff --git a/20210528/mmu.png b/20210528/mmu.png
new file mode 100644
index 0000000000000000000000000000000000000000..caa39cb2e987cff55d5fb25c61d075c745f6c630
Binary files /dev/null and b/20210528/mmu.png differ
diff --git a/20210528/mmu.xcf.gz b/20210528/mmu.xcf.gz
new file mode 100644
index 0000000000000000000000000000000000000000..9c9f745196c8a87c30a207f39c8588b4dcec85fd
Binary files /dev/null and b/20210528/mmu.xcf.gz differ
diff --git a/20210528/test-1.txt b/20210528/test-1.txt
new file mode 100644
index 0000000000000000000000000000000000000000..af5626b4a114abcb82d63db7c8082c3c4756e51b
--- /dev/null
+++ b/20210528/test-1.txt
@@ -0,0 +1 @@
+Hello, world!
diff --git a/20210528/test-2.txt b/20210528/test-2.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d7e5cff47f0303c2d892d3e790e00552759b639c
--- /dev/null
+++ b/20210528/test-2.txt
@@ -0,0 +1 @@
+Dies ist ein Test.
diff --git a/20210528/test-3.txt b/20210528/test-3.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/20210528/test-4.txt b/20210528/test-4.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/20210528/test-5.txt b/20210528/test-5.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/20210528/test-tab.txt b/20210528/test-tab.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e7f7da6021c9b3bc8cd82215516f4f374a25ca7a
--- /dev/null
+++ b/20210528/test-tab.txt
@@ -0,0 +1,8 @@
+Datenträger: USB-Stick
+Größe: 4 GB
+Inhalt:
+
+  Adresse   Länge   Datei
+  0         14      test-1.txt
+  14        28      test-2.txt
+  ...       ...     ...
diff --git a/projekte.txt b/projekte.txt
index c76d4d7f25a9bb9cdf940f725af420435e794229..f2c3f297a67f04e5286f9697be37a9688203e1b3 100644
--- a/projekte.txt
+++ b/projekte.txt
@@ -17,15 +17,22 @@
  - yesVNC auch im Hintergrund laufen lassen
  - Scroll-Algorithmus für x11vnc oder TightVNC
  - Kombinierter Desktop-Client für VNC und Mumble
- - Mumble-Desktop-Client: Konfiguration vereinfachen
- - Mumble/VNC/CVH-Camera für weitere Plattformen nutzbar machen, z.B. iOS
+ * Mumble-Desktop-Client: Konfiguration vereinfachen
+:o Mumble/VNC/CVH-Camera für weitere Plattformen nutzbar machen, z.B. iOS, MacOS X
  - Mumble-Client: Forward-Error-Correction aktivierbar machen
  - PULT auf übersichtlichere und effizientere Weise neu programmieren
  * 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
  - Work Advanture für die Hochschule installieren
    Bsp-Instanz aus Bochum (von dem dortigen Hackspace): https://virtuallab.das-labor.org/
    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
  - Echtzeit-Kommunikation mit freiem Smartphone