Schlüsseltechnologie

Schlüsseltechnologie

By Xyrillian NoisesTechnology
Download on the App Store

Schlüsseltechnologie episodes

  • STP028: Autokonfiguration

    Wenn Sie diese Nachricht lesen, hat sich diese Folge automatisch in ihren Podcast-Player konfiguriert. Heute geht es darum, warum es heute nicht mehr so kompliziert ist, einen Computer oder ein Netzwerk einzurichten.

    Shownotes
    • Automatisierung: nach DIN V 19233 definiert als "das Ausrüsten einer Einrichtung, sodass sie ganz oder teilweise ohne Mitwirkung des Menschen bestimmungsgemäß arbeitet" (Quelle: Wikipedia)

      • Was heißt "bestimmungsgemäß"? (siehe 33C3-Motto "Works for me"; siehe ebenfalls "Overly-Clever-Syndrom")
      • heute feiern wir Autokonfiguration, die tatsächlich funktioniert
      • Autokonfiguration: automatisierte Führung eines neu entstehenden Systems in einen arbeitsfähigen Zustand
      • Rückbezug zu STP020 (Bootstrap): Hardware-Erkennung während (und nach) dem Bootvorgang

        • früher: Betriebssysteme spezifisch für einzelne Computer-Modellreihen mit gleichartiger Hardware
        • heute: Betriebssysteme für ganze Kategorien von Computern, die oftmals vom Anwender selbst aus Komponenten zusammengestellt werden können
        • während des Bootvorgangs Abfrage der vorliegenden Hardware-Komponenten durch das Betriebssystem (siehe Xyrills Hardware-Upgrade)
        • nach dem Bootvorgang teilweise auch Neuerkennung möglich (Hotswap, USB, etc.)
        • Ethernet

          • ausführliche Beschreibung siehe später; Grundprinzip: Netzwerk aus Switches, an denen die Endgeräte hängen
          • Autokonfiguration 1: früher separate Kabel für Verbindungen zu Switches (Patch-Kabel) und Direktverbindungen (Cross-Kabel), heute automatische Erkennung mittels Auto MDI-X
            • ähnlich dazu automatische Orientierungs-Erkennung in USB-C-Steckverbindungen
            • Autokonfiguration 2: früher Switches nicht in Schleifen verschaltbar (Broadcast-Stürme z.B. wegen ARP und DHCP)
            • heute automatische Bildung eines Spannbaumes für eindeutiges Routing von Frames
            • apropos Ethernet: ARP (Address Resolution Protocol)

              • Identifikation im Internet (Layer 3-7) durch IP-Adressen, aber in lokalen Netzen (Layer 1-2) durch adapterspezifische MAC-Adressen
              • IP-Adressen können Computer sich im Prinzip auch einfach selber geben, grundsätzlich keine zentrale Vergabe
              • ARP: Welche MAC-Adresse gehört zur gewünschten IP-Adresse?
              • MAC-Adressen und ARP gibt's auch im WiFi...
              • apropos Ethernet und WiFi: DHCP (Dynamic Host Configuration Protocol)

                • grundsätzlich Selbstwahl der IP möglich, aber man muss im richtigen Netzbereich sein und es darf keine Kollisionen geben
                • meist bessere Lösung: automatische IP-Vergabe durch eine zentrale Stelle (Clients können IP-Adressen für eine gewisse Zeit pachten)
                • apropos DHCP: TFTP (Trivial File Transfer Protocol) -> per DHCP automatisches Ankündigen von verfügbaren Betriebssystem-Images, Abholen der Images über TFTP für Booten mit leerer Festplatte

                  • siehe auch: Installieren von macOS auf Apple Macs mit leerer Festplatte via Internet Recovery
                  • IPv6 (Router Advertisement etc.) siehe RFC-Podcast

                  • Autokonfiguration im Cloud-Computing-Umfeld

                    • virtuelle Maschinen in der Cloud werden aus Abbildern (Images) erzeugt und müssen sich dann an die Laufzeitumgebung (IP-Adressen, verfügbare Netzwerk-Festplatten, etc.) anpassen
                    • von Cloud-Seite: Metadata-Service meist auf der magischen IP-Adresse 169.254.169.254 (siehe z.B. Dokumentation bei OpenStack)
                    • von VM-Seite: Initialisierung mittels dieser Metadaten mit z.B. cloud-init
                    • 1 hr 10 min
                    • STP027: Verteilte Systeme

                      In dieser Episode bringt Xyrill uns versprengte Systeme näher. Dabei erfahren wir auch, dass Dinge, die wir als Grundvoraussetzung ansehen würden, bei genauerer Betrachtung gar nicht so selbstverständlich sind.

                      ShownotesLaut Wikipedia eine überraschend breite Definition:

                      Ein verteiltes System ist [...] ein Zusammenschluss unabhängiger Computer, die sich für den Benutzer als ein einziges System präsentieren.

                      • Motivationen für verteilte Systeme

                        • Kommunikation zwischen Computern mit verschiedenen Eigentümern (z.B. Chatnetzwerk, Banküberweisung)
                        • Teilen von Ressourcen (z.B. Druckerfreigabe)
                        • Hochverfügbarkeit
                        • Lastverteilung
                        • Grundlage des Problems: CAP-Theorem

                          • Es gibt drei extrem wünschenswerte Eigenschaften. Wähle zwei.
                          • Konsistenz (Consistency): Lesevorgänge liefern immer die Daten, die zuletzt geschrieben wurden.
                          • Verfügbarkeit (Availability): Alle Anfragen an das System werden stets beantwortet.
                          • Partitionstoleranz: Das System kann bei Störungen des Netzwerkes oder einzelner Computer weiterarbeiten.
                          • Beispiele bekannter Systeme gemäß CAP-Klassifikation

                            • CP: Banküberweisung, Geldautomat
                            • CA: Datenbanksysteme (siehe Folge 12)
                            • AP: DNS (siehe Folge 18)
                            • Komplexbeispiel: Verteilte Datenbank mit Raft-Konsensalgorithmus

                              • Computernetzwerk aus N gleichartigen Teilnehmern (N meist ungerade, um Pattsituationen zu vermeiden)
                              • pro Wahlperiode ein Anführer, alle anderen folgen dem Anführer
                              • Schreibvorgänge gehen an den Anführer, werden von ihm an die Folger verteilt, und erst quittiert, wenn eine Mehrzahl der Folger Vollzug meldet
                              • Anführer sagt regelmäßig (Größenordnung 150-300 ms) allen Folgern Bescheid, dass er noch anführt
                              • bei Ausbleiben der Meldung vom Anführer startet jeder Folger eine neue Wahlperiode und stimmt für sich selbst als neuen Anführer
                              • pro Wahlperiode:
                                • wer jemand anderen abstimmen sieht, bevor er selbst abstimmt, folgt sofort der gesehenen Stimme
                                • wer die Mehrheit der Stimmen auf sich vereinigt, ist der neue Anführer
                                • bei Pattsituationen beginnt nach einer Wartefrist die nächste Wahlperiode (Wartefrist ist pro Teilnehmer randomisiert, um Kettenpatt zu vermeiden)
                                • CAP-Bewertung: CA (nicht partitionstolerant, weil eine Mehrheit der Teilnehmer erforderlich ist)
                                • hier nicht betrachtet: Byzantinische Fehler

                                  • Paper: The Saddest Moment
                                  • Analogie zu Wahlcomputern
                                  • zum Nachlesen: Irrtümer der verteilten Datenverarbeitung

                                  • Sidebar: Volunteer Computing (BOINC, SETI@Home, Folding@Home, etc.)

                                    • siehe Pentacast 56
                                    • Nachtrag: geführte Visualisierung des Raft-Algorithmus (englisch): https://thesecretlivesofdata.com/raft/

                                      59 min
                                    • STP026: Energieeffizienz

                                      Seit der Zeit von Konrad Zuse, der seine Rechenmaschinen mit Relais baute, hat sich viel getan. Nicht nur, was die Geschwindigkeit, sondern auch, was die Effizienz betrifft. Wir beleuchten heute einige jüngere Ereignisse dieser Entwicklung.

                                      Shownotes
                                      • Wortklärung

                                        • "effektiv": die Fähigkeit besitzend, eine Aufgabe erfolgreich zu erledigen
                                        • "effizient": fähig, viel Leistung in Relation zum Aufwand zu erbringen
                                        • Leitsatz: "Der einzige Weg, ein Programm effizienter zu machen, ist, weniger zu tun." (Quelle unklar)
                                        • Welche Wege gibt es, weniger zu tun?
                                        • hängt vom Optimierungsziel ab: Speicherverbrauch vs. Zeitverbrauch vs. Energieverbrauch vs. Kosten bei Zugriff auf externe Systeme -> Analogie zum Navigationssystem im Auto
                                        • Caching: Ergebnisse wiederverwenden

                                          • Abruf aus dem Arbeitsspeicher ist effizienter (in Zeit und Energie) als Abruf aus dem Netzwerk
                                          • Miniaturisierung: weniger Elektronen durch die Gegend schaufeln

                                            • "viele Zahlen für wenig Wärme"
                                            • Transistoren sind ähnlich wie Relais-Schalter, die durch Auffüllen und Leeren einer Elektronenfalle umschalten
                                            • kleinere Transistoren = weniger Elektronen schaufeln = weniger Stromverbrauch (und weniger Abwärme)
                                            • zeitlicher Verlauf der Strukturgrößen anhand von x86-Prozessoren (mit bildlichem Vergleich zu mechanischen Schaltern im Maßstab 1.000.000:1)
                                              • 1971 (Intel 4004): 10µm (vgl. 10m = nur im Cartoon, etwa 3-4 Etagen hoch)
                                              • 1993 (Intel Pentium): 800nm (vgl. 80cm = Weichenhebel in manuellem Stellwerk, kleiner Scherenstromabnehmer)
                                              • 2007 (ohne Produktbezeichnung): 65nm (vgl. 65mm = Lichtschalter)
                                              • 2019 (AMD Ryzen): 7nm (vgl. 7mm = Kippschalter an der Schreibtischlampe)
                                              • heterogene CPU-Architektur, z.B. "big.LITTLE" bei ARM

                                                • kleine CPU-Kerne (mit geringem Stromverbrauch) für Routinearbeit und Hintergrundprozesse
                                                • große CPU-Kerne (die meistens schlafen) für energieintensive Anwendungen (3D-Grafik bei Spielen, Enkodierung/Dekodierung bei Videoanrufen, etc.)
                                                • außerdem Betrieb der kleinen Kerne sehr stoßartig: lieber kurz mit hoher Taktfrequenz und dann gleich wieder schlafen als permanent langsam laufen lassen (Randbemerkung: anders als z.B. bei Verbrennungsmotoren, aber Parallelen zu Elektromotoren)
                                                • im Zusammenhang damit: "Aufwachverschmelzung" (z.B. systemd.timer)

                                                  • Idee: für geplante Hintergrundaktivitäten die Takte so verschieben, dass möglichst viele Aktivitäten gleichzeitig ausgeführt werden und die CPU-Kerne möglichst selten aufwachen müssen
                                                  • ebenfalls im Zusammenhang damit: Push Gateways auf iOS/Android

                                                    • Netzwerkverbindungen = Energieverbrauch (für das Funken und das Verarbeiten in der CPU)
                                                    • Netzwerkverbindung aufhalten = Energieverbrauch (für Keepalive-Pakete)
                                                    • Idee: statt einer Netzwerkverbindung pro Messenger-App eine zentrale Netzwerkverbindung zu einem zentralen Relay-Server vom Betriebssystem-Anbieter
                                                    • aber: aus Datenschutzsicht problematisch
                                                    • Xyrills Abendgedanken: Wie kann es sein, dass alles soviel effizienter ist, aber wir machen nicht mehr damit? (siehe klassische Floskel: "modernes Smartphone ist mächtiger als die Computer in der Apollo-Kapsel")

                                                      • wir erwarten gleichzeitig immer mehr von den Geräten (z.B. Grafikqualität: gleich komplizierte App, aber früher auf 80x25-Terminal und heute auf Full-HD-Bildschirm)
                                                      • vgl. Jevons-Paradoxon: mehr Effizienz ermöglicht mehr Anwendungen, sodass letztlich der Energieverbrauch gleich bleibt oder sogar steigt
                                                      • waghalsige Prognose: viel mehr E-Ink-Displays, wenn Energieeffizienz wichtiger wird
                                                      • 1 hr 2 min
                                                      • STP025: Datenkompression

                                                        Trotz des Themas haben wir es nicht geschafft, uns kurz zu fassen. Xyrill musste den Preis dafür zahlen. In dieser Sendung: Ein Einstieg mit flachen Witzen, gezinkte Münzen, naive Betrachtungsweisen und schwierige Abwägungen.

                                                        Shownotes
                                                        • Einführungsbeispiel: simulierte schlechte Leitung ("xxxxxx heute xxxxxx Podcast xxxxxx Thema xxxxxx Kompression xxxxxx" -> "In unserer heutigen Folge unseres Podcasts ist das Thema die Datenkompression.")

                                                          • naiver Impuls eines Erstsemester-Linguistikstudenten: "Warum sagt man nicht gleich 'heute Podcast Thema Kompression'?"
                                                          • Sprache ist so gestaltet, dass auch teilweise fehlerhafte Informationen noch korrekt ankommen
                                                          • beim Hören intuitiver Einsatz eines Vorhersagemodells, um kommende Silben/Wörter/Phrasen vorherzusagen
                                                          • theoretische Grundlagen

                                                            • Bit: Basiseinheit für Informationsgehalt (enstprechend der Auswahl aus zwei gleich wahrscheinlichen Möglichkeiten), allerdings nicht im SI-System verankert
                                                            • Beispiel Münzwurf:
                                                              • ideale Münze (50% Kopf + 50% Zahl) liefert 1 Bit pro Wurf
                                                              • reelle Münze liefert mehr als 1 Bit pro Wurf (z.B. 49,5% Kopf + 49,5% Zahl + 1% Kante -> 1,07 Bit pro Wurf)
                                                              • gezinkte Münze liefert weniger als 1 Bit pro Wurf (z.B. 10% Kopf + 90% Zahl -> 0,469 Bit pro Wurf)
                                                              • gute Komprimierbarkeit = niedriger Informationsgehalt -> häufiger, als man denkt (Bsp. nebeneinanderliegende Pixel eines Bildes sind ähnlich)
                                                              • Zusammenhang mit physikalischer Entropie: Systeme mit geringer Entropie (z.B. Eisblock) sind einfach vorherzusagen, Beobachtungen haben geringen Informationsgehalt; Systeme mit hoher Entropie (z.B. Wasserdampf) sind schwer vorherzusagen, Beobachtungen haben hohen Informationsgehalt
                                                              • "naive" Kompressionsmethoden (die man auch als Mensch überblicken kann)

                                                                • Nutzung von Allgemeinwissen
                                                                  • Beispiel aus der Vorbereitung: "Schachbrett" im Kontext von Exponentialfunktionen ruft die Assoziation einer ganzen Geschichte auf
                                                                  • Wörterbuchmethode für Text
                                                                    • Beispiel aus Wikipedia: "wenn Fliegen hinter Fliegen fliegen, fliegen Fliegen Fliegen nach" -> "wenn Fliegen hinter \2 fliegen, \5 \2 \2 nach"
                                                                    • RLE (Run-Length Encoding) z.B. in Bildern wie dem Coverart dieses Podcasts
                                                                    • Huffman-Kodierung wie im Morse-Code (Verbindung zur Linguistik!)
                                                                    • Minifizierung von Skripten
                                                                      • Beispiel: jQuery 3.6 ohne Minifizierung und mit Minifizierung
                                                                      • zwei fundamentale Abwägungen

                                                                        • Geschwindigkeit vs. Stärke (z.B. Debian-Pakete mit zwei getrennten Bereichen, die verschiedene Kompressionsverfahren nutzen)
                                                                        • verlustfrei vs. verlustbehaftet (Bsp. Pentaradio vom Mai 2022: Radiofassung als FLAC 271,7 MiB; Endprodukt als Opus 52,0 MiB)
                                                                        • Kompressionsmethoden im Audio-Video-Bereich beispielhaft anhand ihres Verlustverhaltens

                                                                          • Blockartefakte bei JPEG
                                                                          • Psychoakustik bei MP3
                                                                          • Datamoshing bei Videos (Beispiel) illustriert Bedeutung von Intra-Frames
                                                                            • siehe auch dasselbe Video, 1000-mal komprimiert und dekomprimiert
                                                                            • Einfluss fester Bitrate auf Audio/Videos
                                                                            • theoretische Grenze: Kolmogorow-Komplexität

                                                                            • Fußnoten:

                                                                              • ttimeless fühlt sich verpflichtet, auf den RFC-Podcast zu verlinken
                                                                              • David Kriesel: "Traue keinem Scan, den du nicht selbst gefälscht hast"
                                                                              • 1 hr 22 min
                                                                              • STP024: Cloud Computing

                                                                                Diese Episode beschäftigt sich mit anderer Leute Computer: warum man die überhaupt benutzen kann, und unter welchen Voraussetzungen das sinnvoll ist.

                                                                                Shownotes
                                                                                • Cloud Computing erklärt anhand von Pizza
                                                                                  • On-Premise: kein Cloud Computing, Nutzer betreibt seine eigene Hardware und Software
                                                                                  • IaaS (Infrastructure as a Service): Cloud-Anbieter betreibt die Hardware, Nutzer bringt Betriebssystem und Software
                                                                                  • PaaS (Platform as a Service): Cloud-Anbieter betreibt die Hardware und das Betriebssystem, Nutzer bringt die Anwendung
                                                                                  • SaaS (Software as a Service): Cloud-Anbieter betreibt alles, Nutzer bedient die Anwendung nur noch
                                                                                  • Fünf Grundanforderungen gemäß Definition durch NIST (NIST ist dem Aufgabenspektrum nach mit der PTB und dem BSI vergleichbar):

                                                                                    • On-Demand Self-Service: Nutzer kann selber Ressourcen klicken, ohne Mitarbeiter beim Dienstanbieter zu involvieren

                                                                                      • Bsp. SaaS-Anwendungen wie Dropbox, GitHub, Netflix, etc.
                                                                                      • Bsp. mal kurz ein dutzend VMs klicken, um eine komplizierte Server-Anwendung wie Kubernetes auszuprobieren
                                                                                      • Broad Network Access: Ressourcen sind über das Netz mittels "Standardmethoden" erreichbar, ohne durch eine anbieterspezifische Zugriffstechnologie gehen zu müssen

                                                                                        • Was soll diese Anforderung ausschließen? Xyrills Vermutung: z.B. das Telefonnetz, ttimeless' Vermutung: Mainframes und Universitäts-Rechenzentren (die nur aus dem entsprechenden Intranet zu erreichen sind)
                                                                                        • zur Konfiguration und Administration jedoch meist anbieterspezifische Schnittstellen und Werkzeuge (entsprechend dem Funktionsumfang des jeweiligen Angebots) -> Vendor Lock-In
                                                                                        • Resource Pooling: Ressourcen werden unter mehreren/allen Kunden nach Bedarf aufgeteilt

                                                                                          • sowohl zwischen mehreren Kunden ("Public Cloud") als auch innerhalb einer Firma oder innerhalb eines Teams ("Private Cloud")
                                                                                          • Bsp. CDN (Content Delivery Network): mehrere Kunden teilen sich ein weltweites Rechenzentrumsnetz, das jeder alleine so nicht bezahlen könnte
                                                                                          • Rapid Elasticity: Ressourcen können kurzfristig zugeteilt und zurückgegeben werden

                                                                                            • Bsp. Internet-Shop am Black Friday, Buchhaltungssystem am Quartalsende
                                                                                            • Bsp. Cloud-Gaming (Gegenbeispiel: Error 37)
                                                                                            • Measured Service: Messung und Abrechnung der genutzten Ressourcen mindestens zeitnah oder sogar in Echtzeit

                                                                                              • "wie bei der Telefonrechnung früher"
                                                                                              • Bsp. sehr kurze Nutzung (z.B. einige Stunden) von leistungsstarker Hardware, z.B. um ein neuronales Netz zu trainieren
                                                                                              • Probleme mit Cloud Computing

                                                                                                • Zentralisierung: wenn ein Amazon-Rechenzentrum Probleme hat, ist gefühlt das halbe Internet weg
                                                                                                • Preistransparenz: siehe z.B. "I got pwned by my cloud costs"
                                                                                                • 1 hr 8 min
                                                                                                • STP023: Virtualisierung, Container, Sandboxing, Simulation/Emulation

                                                                                                  Die Sendung mit der Quersumme 5 beschäftigt sich damit, wie Computer so

                                                                                                  tun können, als wären sie andere Computer. Außerdem beginnt Xyrill
                                                                                                  damit, sein Mediensyndikat aufzubauen.

                                                                                                  ShownotesLaut Wikipedia:

                                                                                                  Virtualisierung bezeichnet in der Informatik die Nachbildung eines Hardware- oder Software-Objektes durch ein ähnliches Objekt vom selben Typ mithilfe einer Abstraktionsschicht.

                                                                                                  • verschiedene Arten von Virtualisierung je nachdem, wo die Abstraktionsschicht liegt

                                                                                                    • Virtuelle Maschinen (VM): Hardware gleich, Betriebssysteme (OS) und Prozesse getrennt
                                                                                                    • Container: OS gleich, Prozesse getrennt
                                                                                                    • Sandboxing: getrennte Teile innerhalb eines Prozesses
                                                                                                    • Anwendungsfälle für VM (OS als Anwendung innerhalb eines anderen OS)

                                                                                                      • gleichzeitiger Betrieb von mehreren OS auf einem Computer (z.B. Linux als Hauptsystem, Windows-VM für bestimmte Anwendungen)
                                                                                                      • saubere Abgrenzung von verschiedenen Programmen durch das Einsperren in VMs mit festen Ressourcen-Zuteilungen und Zugriffsschranken
                                                                                                      • daraus folgend: Aufteilen einer einzelnen Server-Maschine in mehrere VMs für verschiedene Kunden
                                                                                                      • Ermöglichung der Verschiebung von Programmen zwischen Maschinen im laufenden Betrieb ("Live-Migration", z.B. bei Hardwarefehlern)
                                                                                                      • Ansätze für VMs (Wie kann der Gast-Kernel seinen administrativen Aufgaben nachgehen, ohne selber vollen Zugriff auf das System zu erhalten?) anhand von Meilensteinen auf x86-CPUs

                                                                                                        • User Mode Linux (ab ca. 2000), Xen (ab 2003): "Paravirtualisierung", Gast-Kernel ist von Anfang an so aufgebaut, dass er auch als Prozess unter einem anderen Kernel laufen kann (Hardware-Zugriff mittels Emulation, siehe unten)
                                                                                                        • VMware Workstation (ab 1999), VirtualBox (ab 2007), etc.: "Software-Virtualisierung", Gast-Kernel läuft in einem teilprivilegierten Modus (z.B. Ring 1 bei x86), sodass Hardware-Zugriff einen Fehler auslöst; der Host-Kernel erhält die Kontrolle zurück und macht den Hardwarezugriff im Namen des Gast-Kernels (Problem: Performance-Verlust gegenüber Direktzugriff auf die Hardware) (detaillierte Erklärung in der VirtualBox-Dokumentation)1
                                                                                                        • Intel VT-x (ab 2005), AMD-V (ab 2006): "Hardware-Virtualisierung", Host-Kernel richtet durch spezialisierte CPU-Instruktionen einen abgetrennten Bereich für den Gast-Kernel ein (beschränkter Speicherbereich, beschränkte CPU-Zeit, beschränkter Gerätezugriff), innerhalb dessen das System für den Gast-Kernel wie unvirtualisiert erscheint (somit so gut wie kein Performance-Unterschied zwischen nativem und virtualisiertem Kernel mehr)
                                                                                                        • Container: isolierte Umgebungen innerhalb eines OS, aus denen Programme im Allgemeinen nicht ohne weiteres ausbrechen können

                                                                                                          • Vorteil gegenüber VM: ressourcenschonender (nur ein Kernel für alle), Container starten schneller als VM (kein Boot eines Gast-Kernels notwendig)
                                                                                                          • Urform des Containers: chroot in Unix-Systemen (ab 1979) modifiziert für einen Prozess das sichtbare Dateisystem so, dass nur Dateien unterhalb eines bestimmten Verzeichnisses erreicht werden können (Intention war die Bereitstellung von angepassten Dateisystemstrukturen für bestimmte Programme; chroot ist kein wirklicher Container, da die allermeisten Ressourcen nicht eingeschränkt werden und ein privilegierter Prozess das chroot jederzeit durch Neukonfiguration umgehen kann)
                                                                                                          • echte Container ab ca. 2000: z.B. FreeBSD Jails ab 1999, Virtuozzo/OpenVZ ab 2000, Solaris Zones ab 2005, LXC (Linux Containers) ab 2008, Docker ab 2013
                                                                                                          • ausführliche Besprechung von Containern unter Linux (Docker/Kubernetes) siehe Pentaradio von 2022-05-24

                                                                                                          • Sandboxing: Container innerhalb einer Applikation

                                                                                                            • z.B. Webbrowser führen JavaScript-Code aus dem Internet in separaten Prozessen mit geringen Privilegien aus, um Malware das Leben schwer zu machen
                                                                                                            • Begriffstrennung nicht ganz sauber; mitunter werden auch Container als eine Art von Sandboxing eingeordnet
                                                                                                            • Simulation und Emulation

                                                                                                              • Simulation: Nachbildung eines realen Systems oder Szenarios mittels andersgearteter Technik (z.B. Fahrsimulation ohne echtes Auto, Militärsimulation ohne echtes Schlachtfeld, Simulation von quantenmechanischen Wellen mittels Ultraschallwellen... oder gleich mit Zahlen im Computer)
                                                                                                              • Emulation: Nachbildung eines Systems durch ein ähnliches, aber anderes System (z.B. Nachbildung des Verhaltens eines CPU-Typs als Programm auf einem anderen CPU-Typ)
                                                                                                              • Einsatz von Emulation hauptsächlich zum Nachbilden alter Systeme (siehe Emulation von Videospielen, wie besprochen im Pentaradio vom Januar 2022) und zum Testen von Software auf besser zugänglichen Systemen (z.B. Testumgebungen für Smartphone-Apps auf PC-Betriebssystemen)
                                                                                                              • 1 hr 3 min
                                                                                                              • STP022: Das Web ist nicht das Internet

                                                                                                                Heute geht es um das allseits bekannte und beliebte Interweb.

                                                                                                                Oder nicht, denn Web und Internet sind beileibe nicht dasselbe.
                                                                                                                Oder doch, oder nicht, denn sie werden erst dazu.
                                                                                                                Egal, Xyrill kann das besser erklären!

                                                                                                                Shownotes
                                                                                                                • Geschichte des Internets

                                                                                                                  • 1989-1991 initiale Entwicklung des World Wide Web
                                                                                                                  • Internet aber bereits seit 1969 als Darpanet, ab 1981 bis 1983 Umstellung auf TCP/IP
                                                                                                                  • über 20 Jahre Internet ohne Web -> das Web ist nur eine von vielen Anwendungen für das Internet
                                                                                                                  • Internet vs. Web: Netzwerk von Computern vs. Netzwerk von Dokumenten
                                                                                                                  • DNS: seit 1984, ausführlich siehe STP018

                                                                                                                  • E-Mail: seit 1971

                                                                                                                    • Ablage von Mails in Mailboxen mittels SMTP (Simple Mail Transfer Protocol)
                                                                                                                    • Abruf von Mails aus Mailboxen zuerst durch direkten Login auf dem Zielsystem, ab 1984 mittels POP3 (Post Office Protocol), ab 1994 mittels IMAP (Internet Message Access Protocol)
                                                                                                                    • nicht dasselbe wie das Web: asynchrone Zustellung (siehe Wikipedia zur ersten E-Mail nach Deutschland)
                                                                                                                    • NTP (Network Time Protocol): seit 1985

                                                                                                                      • Synchronisation der Computeruhr mit der Uhr eines Servers und damit indirekt mit einer Atomuhr
                                                                                                                      • Zeitdifferenzen werden (bei Nachgehen) durch Vorstellen oder (bei Vorgehen) durch Verlangsamen der lokalen Uhr korrigiert
                                                                                                                      • nicht dasselbe wie das Web: nicht dokumentenbasiert
                                                                                                                      • Telnet, RSH (Remote Shell) und SSH (Secure Shell): seit 1974/1977/1995

                                                                                                                        • Telnet: Klartextaustausch mit einem entfernten Rechner
                                                                                                                        • RSH/SSH: Abwicklung einer Kommandozeilen-Sitzung auf dem entfernten Rechner
                                                                                                                        • nicht dasselbe wie das Web: bidirektionaler Datenstrom
                                                                                                                        • IRC (Internet Relay Chat), XMPP (Extensible Messaging and Presence Protocol): seit 1988/1998

                                                                                                                          • IRC: textbasiertes Chatprotokoll zwischen vielen nutzerseitigen Clients und einigen untereinander vernetzten Servern
                                                                                                                          • XMPP: ähnlich, statt Plain Text mittels Strömen von XML-Nachrichten
                                                                                                                          • nicht dasselbe wie das Web: ebenfalls ein kontinuierlicher bidirektionaler Datenstrom
                                                                                                                          • SIP (Session Initiation Protocol): seit 1999

                                                                                                                            • und darauf folgend ein ganzer Zoo von Telefonie-Protokollen... ITU-Standards sind unser blinder Fleck :)
                                                                                                                            • nicht dasselbe wie das Web: ebenfalls ein kontinuierlicher bidirektionaler Datenstrom
                                                                                                                            • FTP (File Transfer Protocol), NFS (Network File System), SMB (Server Message Block): seit 1985/1984/1996

                                                                                                                              • Zugriff (FTP) bzw. Einbindung (NFS/SMB) eines entfernten Dateisystem auf dem lokalen Rechner
                                                                                                                              • Protokollbefehle wie "Dateien in Ordner auflisten" oder "Dateiinhalt lesen" oder "Datei löschen"
                                                                                                                              • nicht dasselbe wie das Web: keine Dokumente mit Verweise untereinander, "nur" eine Struktur aus Dateien ohne bestimmte Anforderungen an den Dateiinhalt
                                                                                                                              • LDAP (Lightweight Directory Access Protocol): seit 1993

                                                                                                                                • Wenn DNS das Telefonbuch des Internets ist, dann sollte LDAP das Benutzerverzeichnis des Internets sein.
                                                                                                                                • nicht dasselbe wie das Web: nicht dokumentenbasiert, sondern datensatzbasiert
                                                                                                                                • und dann natürlich HTTP (Hypertext Transfer Protocol): seit 1991

                                                                                                                                  • zunächst fokussiert auf Abruf von Hypertext-Dokumenten in HTML sowie der darin enthaltenen Ressourcen (zunächst vor allem Bilder)
                                                                                                                                  • dann erweitert um Hochladen von Daten zum Ausfüllen von Formularen
                                                                                                                                  • dann erweitert um Verwaltung von Sitzungsdaten mittels Cookies
                                                                                                                                  • dann erweitert um Methoden zum Durchlaufen von Dateisystemen (WebDAV, CalDAV, CardDAV, GroupDAV)
                                                                                                                                  • dann erweitert durch eine komplette Client-Server-Programmierumgebung (JavaScript, XHR)
                                                                                                                                  • dann erweitert durch serverseitige Benachrichtigungen (WebSockets, Server Sent Events)
                                                                                                                                  • dann erweitert... und erweitert... und erweitert
                                                                                                                                  • Plot-Twist: Web ist nur ein Teil des Internets, aber alle anderen Teile des Internets werden immer webbiger

                                                                                                                                    • jedes einzelne Protokoll profitiert tendenziell davon, wenn es auf HTTP aufsetzt:
                                                                                                                                      • Webbrowser können direkt HTTP verstehen
                                                                                                                                      • die meisten Entwickler kennen HTTP gut (auf jeden Fall besser als die ganzen anderen Protokolle)
                                                                                                                                      • in HTTP sind häufige Probleme wie Verschlüsselung/Caching/etc. schon gelöst (und die Lösungen sind milliardenfach getestet)
                                                                                                                                      • HTTP kommt am besten durch Firewalls durch
                                                                                                                                      • quasi ein Netzwerkeffekt ("es ist populär, weil es alle benutzen, und alle benutzen es, weil es populär ist")
                                                                                                                                      • Wie sieht es mit den vorgenannten Protokollen aus?

                                                                                                                                        • DNS -> DoH (DNS over HTTPS), um Verschlüsselung hinzuzufügen
                                                                                                                                        • IRC, XMPP -> meist HTTP-basierte app-spezifische Chatprotokolle (z.B. Matrix)
                                                                                                                                        • LDAP -> SAML (Authentifizierung mittels Umleitungskette im Webbrowser)
                                                                                                                                        • SMTP, SSH, SIP, NFS, SMB: gibt's so noch, aber als Webapplikation ist die letzte Meile über HTTPS oder das eigentliche Protokoll ist in HTTPS-Websockets eingewickelt
                                                                                                                                        • 1 hr 3 min
                                                                                                                                        • STP021: Reguläre Ausdrücke

                                                                                                                                          ttimeless hat sich ein Thema gewünscht und mit Beginn von Xyrills Recherchen angefangen, es zu bereuen.

                                                                                                                                          Es stellt sich heraus, dass das Thema zwar abstrakt, aber dennoch spannend ist. Außerdem gibt es im zweiten Teil der Sendung noch praktische Dinge zu lernen.

                                                                                                                                          Shownotes
                                                                                                                                          • Motivation: reguläre Ausdrücke verstehen
                                                                                                                                            • etwas Theorie ist notwendig, um die Eigenschaften und Grenzen von regulären Ausdrücken zu verstehen
                                                                                                                                            • quasi eine Erstsemestervorlesung -> Anekdote Xyrill: Büchlein "Einblick ins Studium"
                                                                                                                                            • Siehe Wikipedia:

                                                                                                                                              Grammatik bezeichnet in der Linguistik jede Form einer systematischen Sprachbeschreibung. Dabei steht der Begriff der Grammatik einmal für das Regelwerk selbst, auf der anderen Seite aber auch für die Theorie über eine bestimmte Sprache oder Sprachfamilie.

                                                                                                                                              • im Kontext der Informatik: formale Grammatiken für formale Sprachen

                                                                                                                                                • formale Sprache: Menge von Symbolketten ("Wörter"), die aus Symbolen ("Alphabet") zusammengesetzt werden
                                                                                                                                                • formale Grammatik: endlich große Beschreibung einer (im Allgemeinen unendlich großen) formalen Sprache
                                                                                                                                                • Beispiele: Programmiersprachen, Tastenkombos in Videospielen, Münzeinwurf in Verkaufsautomat
                                                                                                                                                • Abwägung: komplexere Grammatiken sind flexibler, aber auch aufwändiger (z.B. Tastatureingaben vs. Sprachsteuerung)
                                                                                                                                                • Chomsky-Hierarchie: Klassifikation von formalen Grammatiken in aufsteigender Striktheit und absteigender Flexibilität

                                                                                                                                                  • Beschreibung der entsprechenden formalen Grammatiken: hier nicht, zu technisch
                                                                                                                                                  • zu jeder Ebene der Chomsky-Hierarchie gehört ein Maschinenmodell, dass entsprechende Grammatiken akzeptieren kann
                                                                                                                                                  • Typ 3: reguläre Grammatiken mittels endlichem Zustandsautomat (Beispiel: Münzeinwurf in Verkaufsautomat)
                                                                                                                                                  • Typ 2: kontextfreie Grammatiken mittels Kellerautomat (Beispiel: balancierte Klammerpaare)
                                                                                                                                                  • Typ 1 und 0 mittels Turingmaschinen (erst mit beschränktem, dann mit unbeschränktem Speicher)
                                                                                                                                                  • Beispiel für grafische Repräsentation von Grammatiken: siehe SQLite-Dokumentation

                                                                                                                                                  • reguläre Grammatiken im Alltag: reguläre Ausdrücke; formale Definition mit vier Grundbausteinen

                                                                                                                                                    Grundbaustein
                                                                                                                                                    Beispielausdruck
                                                                                                                                                    Findet z.B.
                                                                                                                                                    Zeichen(folge)
                                                                                                                                                    Ausdruck
                                                                                                                                                    Ausdruck
                                                                                                                                                    Alternative
                                                                                                                                                    Ausdruck|Ausdrücke
                                                                                                                                                    Ausdruck und Ausdrücke
                                                                                                                                                    Gruppierung
                                                                                                                                                    Ausdr(uck|ücke)
                                                                                                                                                    Ausdruck und Ausdrücke
                                                                                                                                                    Sternquantor
                                                                                                                                                    to*ll
                                                                                                                                                    tll, toll, tooll, toooll, etc.
                                                                                                                                                    • in der Praxis weitere Bausteine, um häufige Anwendungen zu vereinfachen
                                                                                                                                                    • Zusatzbaustein
                                                                                                                                                      Definition
                                                                                                                                                      Beispielausdruck
                                                                                                                                                      Findet z.B.
                                                                                                                                                      Zeichenklasse
                                                                                                                                                      [ABC...] = A|B|C|...
                                                                                                                                                      positive Ganzzahl: 0|[1-9][0-9]*
                                                                                                                                                      0, 42, 900, aber nicht 0815
                                                                                                                                                      feste Zeichenklasse
                                                                                                                                                      \s für Whitespace, \d = [0-9] für Ziffern, etc.
                                                                                                                                                      beliebiges Zeichen
                                                                                                                                                      .
                                                                                                                                                      Klammerausdruck: (.*)
                                                                                                                                                      (2 + 4), (siehe oben), aber auch (siehe oben (oder nicht)
                                                                                                                                                      Fragezeichenquantor
                                                                                                                                                      A? = (|A)
                                                                                                                                                      Ganzzahl mit Vorzeichen: [+-]?(0|[1-9][0-9]*)
                                                                                                                                                      +0, -42, 23
                                                                                                                                                      Fixquantor
                                                                                                                                                      z.B. A{3} = AAA, A{2,4} = AAA?A?
                                                                                                                                                      Postleitzahl: [0-9]{5}
                                                                                                                                                      01127, 50616
                                                                                                                                                      Plusquantor
                                                                                                                                                      A+ = AA*
                                                                                                                                                      Domainname: ([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+
                                                                                                                                                      www.example.com
                                                                                                                                                      Anker
                                                                                                                                                      ^ für Zeilenanfang, $ für Zeilenende, \b für Wortgrenze
                                                                                                                                                      Schulz\b
                                                                                                                                                      Schulz, aber nicht Schulze
                                                                                                                                                      • Problem in der Praxis: Escaping

                                                                                                                                                        • z.B. Klammern sind Teil der Syntax; um eine Klammer im Eingabetext darzustellen, schreibt man "\("
                                                                                                                                                        • Regexen lernen

                                                                                                                                                          • Online
                                                                                                                                                            • LearnRegex ist ein interaktives Tutorial zum Erlernen von regulären Ausdrücken, in englischer Sprache.
                                                                                                                                                            • Mit Regex Crossword kann man spielerisch besonders das Lesen regulärer Ausdrücke üben.
                                                                                                                                                            • Apps
                                                                                                                                                              • Regex-Kreuzworträtsel auf dem Mobiltelefon
                                                                                                                                                              • Mehrere Ausdrücke mit regulären Ausdrücken erfassen bzw. ausschließen
                                                                                                                                                              • 1 hr 37 min
                                                                                                                                                              • STP020: Bootstrap

                                                                                                                                                                Strom an und Ohren auf! In dieser Episode nähern wir uns Computern im Dornröschenschlaf.

                                                                                                                                                                Genauer sehen wir uns an, was beim Erwachen geschieht.

                                                                                                                                                                Shownotes
                                                                                                                                                                • Zustand bei frühen Rechenmaschinen und Computern

                                                                                                                                                                  • kein Bootstrap: Strom an -> Programm starten, Programm beenden -> Strom aus (siehe Konrad-Zuse-Clip)
                                                                                                                                                                  • Programme waren spezifisch für die Hardware, auf der sie laufen
                                                                                                                                                                  • siehe auch: damals (TM) Podcast
                                                                                                                                                                  • und ChaosRadioExpress193 Old School Computing
                                                                                                                                                                  • Zustand bei heutigen Computern

                                                                                                                                                                    • Programme benötigen Funktionen des Betriebssystems, Betriebssystem muss sich mit der Hardware vertraut machen -> separate Startphase notwendig
                                                                                                                                                                    • Bootstrap (oder kurz Boot): sich selbst an den Schnürsenkeln aus dem Sumpf ziehen; aus einem einfachen System heraus ein komplexeres System aktivieren
                                                                                                                                                                    • Konzept taucht mehrmals in verschiedenen Kontexten auf ("Wie stellt man einen Hobel her, wenn man keinen Hobel hat?"), siehe z.B. Bootstrapping von Programmiersprachen
                                                                                                                                                                    • Hardware-Bootvorgang meist in mehreren aufeinanderfolgenden Phasen
                                                                                                                                                                    • Phase 1: Firmware

                                                                                                                                                                      • minimales Startprogramm
                                                                                                                                                                      • in einen separaten Flash-Speicher im Chip fest verbaut
                                                                                                                                                                      • Aufgabe: Hardware in einen definierten Zustand bringen (z.B. interne Speicher initialisieren), nächste Stufe finden und laden
                                                                                                                                                                      • heute mitunter alles andere als minimal: siehe UEFI und Intel ME/AMD PSP
                                                                                                                                                                      • bei x86 früher BIOS; heute ersetzt durch UEFI, dessen definierter Endzustand modernen Konventionen folgt
                                                                                                                                                                      • Phase 2: Bootloader

                                                                                                                                                                        • immer noch ziemlich minimal
                                                                                                                                                                        • liegt auf einem Massenspeicher (Festplatte, USB-Stick)
                                                                                                                                                                        • Aufgabe: Massenspeicher nach Betriebssystemen durchsuchen, Auswahldialog anbieten, gewähltes Betriebssystem starten
                                                                                                                                                                        • unter Linux meistens GRUB oder systemd-boot
                                                                                                                                                                        • Alternativen zum klassischen Bootloader

                                                                                                                                                                          • UEFI-Firmware kann direkt das Betriebssystem starten, sofern keine interaktive Auswahl erforderlich ist
                                                                                                                                                                          • Netzwerk-Boot (entweder durch die Firmware oder als Option in Bootloadern wie GRUB)
                                                                                                                                                                          • Phase 3: Betriebssystem

                                                                                                                                                                            • Erinnerung (siehe STP019): Kernel = Betriebssystemteile in höchster Privilegenstufe, Userspace = alle Programme in niedrigerer Privilegienstufe
                                                                                                                                                                            • Bootloader lädt und startet den Basisteil des Kernels
                                                                                                                                                                            • Kernel erkennt die verfügbare Hardware, lädt von der Festplatte die benötigten Kernel-Module nach und startet den System-Manager
                                                                                                                                                                            • Phase 4: System-Manager

                                                                                                                                                                              • unter Unix meist als "PID 1" benannt, weil dieser erste Prozess mit der Prozess-ID (PID) 1 läuft

                                                                                                                                                                              • klassischerweise sysvinit, heute unter Linux meist systemd

                                                                                                                                                                              • startet alle Userspace-Programme, die als Teil des Betriebssystems aufgefasst werden können (im Unix-Sprech "Daemons": Disk And Execution MONitors)

                                                                                                                                                                              • auf Systemebene z.B. Druckwarteschlange, Bluetooth-Dienst, Netzwerk-Konfigurationsdienst, Zeitsynchronisation

                                                                                                                                                                              • auf der Ebene einer grafischen Sitzung z.B. Dienste zum Auswählen von Tastaturlayout/Netzwerk, Einstellen der Lautstärke, Screen-Reader

                                                                                                                                                                              • ChaosRadioExpress209 Das Linux System

                                                                                                                                                                              • Phase 5: Display-Manager

                                                                                                                                                                                • bietet auf grafischen Systemen den Anmeldedialog
                                                                                                                                                                                • im Prinzip selbst eine komplette grafische Sitzung (Anekdote: GDM vs. LightDM)
                                                                                                                                                                                • startet nach erfolgreicher Anmeldung die entsprechende grafische Sitzung
                                                                                                                                                                                • Phase 6: grafische Sitzung

                                                                                                                                                                                  • Strukturierung je nach Desktopoberfläche
                                                                                                                                                                                  • immer mit dabei: ein Window-Manager, der die einzelnen Fenster in ein Gesamtbild zusammensetzt (heutzutage auf der GPU, dann heißt der Window-Manager "Compositor")
                                                                                                                                                                                  • unter Windows ist der Window-Manager aus historischen Gründen Teil von explorer.exe
                                                                                                                                                                                  • wie besprochen: unter Linux Bootvorgang visualisieren mit systemd-analyze plot > output.svg
                                                                                                                                                                                  • 1 hr 8 min
                                                                                                                                                                                  • STP019: Speicherschutz

                                                                                                                                                                                    Nach einem glorreichen Intro mit perfekter Vorbereitung befassen Xyrill und ttimeless sich mit Speicherschutz.

                                                                                                                                                                                    Wie und warum und welchen Speicher überhaupt? Hört selbst.

                                                                                                                                                                                    Shownotes
                                                                                                                                                                                    • "Welchen Speicher müssen wir eigentlich schützen?"

                                                                                                                                                                                      • hier nur Arbeitsspeicher und Gerätespeicher
                                                                                                                                                                                      • andere Speicherarten (z.B. Festplatten) geschützt durch die Betriebssystem-Abstraktionen, siehe zukünftige Folge zu Privilegienkontrolle
                                                                                                                                                                                      • Aufgaben des Betriebssystems: Prozessisolation und Vermittlung des Hardwarezugriffs

                                                                                                                                                                                        • Problem: das Betriebssystem ist auch nur "ein Programm"
                                                                                                                                                                                        • Frage 1: Wie wird sichergestellt, dass das Betriebssystem die finale Kontrolle über Hardwarezugriffe hat?
                                                                                                                                                                                        • Frage 2: Wie wird verhindert, dass ein Speicherbereich, den Prozess A verwendet, von Prozess B überschrieben (oder unberechtigterweise ausgelesen) wird?
                                                                                                                                                                                        • Antwort auf Frage 1: Prozessor-Ringe

                                                                                                                                                                                          • Standardfunktion auf allen CPUs, die auf Mehrprozess-Betrieb ausgelegt sind (nicht immer im Embedded-Bereich)
                                                                                                                                                                                          • zu jedem Zeitpunkt läuft der Prozess in einem von mehreren Ringen
                                                                                                                                                                                          • sensible Operationen (v.a. Hardwarezugriff) sind nur in den höheren Ringen erlaubt und damit den Betriebssystemprozessen vorbehalten
                                                                                                                                                                                          • Wechsel in einen niedrigeren Ring jederzeit möglich (z.B. Aktivierung eines Userspace-Prozesses durch das Betriebssystem)
                                                                                                                                                                                          • Wie kommen wir von einem niedrigeren Ring wieder in einen höheren Ring?

                                                                                                                                                                                            • Interrupts (siehe STP015): Eintreten eines Hardware-Ereignisses (z.B. ankommendes Netzwerk-Paket oder abgelaufener Hardware-Timer), das durch das Betriebssystem behandelt werden muss
                                                                                                                                                                                            • Syscalls: niedrigprivilegierter Prozess fragt eine definierte Schnittstelle des Betriebssystems an, um eine höherprivilegierte Operation auszuführen
                                                                                                                                                                                            • z.B. Dateisystem-Zugriff, Hardware-Zugriff, Ändern der Betriebssystem-Konfiguration, Starten von neuen Prozessen, Nachrichtenübermittlung an andere Prozesse
                                                                                                                                                                                            • dadurch Realisierung der Prozessisolation, weil das Betriebssystem die Kontrolle über alle privilegierten Operationen hat
                                                                                                                                                                                            • Antwort auf Frage 2: Virtuelle Speicherverwaltung

                                                                                                                                                                                              • wenn Prozesse auf Speicher zugreifen, verwenden sie nur "virtuelle" Speicheradressen: z.B. Adresse 0x42 für Prozess A ist nicht unbedingt derselbe Speicher wie Adresse 0x42 für Prozess B
                                                                                                                                                                                              • Abbildung auf physische Speicheradressen innerhalb der CPU durch eine Memory Management Unit (MMU)
                                                                                                                                                                                              • Konfiguration der MMU durch das Betriebssystem immer kurz vor der Übergabe der CPU an einen anderen Prozess
                                                                                                                                                                                              • Aufteilung des physischen/virtuellen Speichers in Seiten (Pages), z.B. bei x86-64 wahlweise 4 KiB oder 2 MiB oder 1 GiB
                                                                                                                                                                                              • pro Page verschiedene Zugriffsberechtigungen möglich, z.B. zur Verhinderung des Schreibens in ausführbare Programmteile, oder für Shared Memory als Kommunikationsweg zwischen Prozessen
                                                                                                                                                                                              • Paging der MMU ermöglicht Swapping

                                                                                                                                                                                                • Pages müssen nicht unbedingt im tatsächlichen Arbeitsspeicher gehalten werden, sondern können bei Nichtverwendung in eine Swap-Datei auf der Festplatte ausgelagert werden
                                                                                                                                                                                                • dadurch über alle Programme summiert meist deutlich mehr virtueller Speicher zugewiesen, als tatsächlich physischer Speicher vorhanden ist
                                                                                                                                                                                                • wenn ein Programm auf eine im Arbeitsspeicher fehlende Seite zugreift, erzeugt die MMU einen Interrupt (Page Fault), sodass das Betriebssystem die fehlende Seite transparent nachladen kann
                                                                                                                                                                                                • analog dazu: Memory-Mapping von Dateiinhalten direkt in den Arbeitsspeicher
                                                                                                                                                                                                • wenn wir schon mal über Speicheradressen reden: Direct Memory Access

                                                                                                                                                                                                  • Abbildung eines Arbeitsspeicher-Addressbereiches auf einen Speicher eines angeschlossenen Gerätes, zum Beispiel den Arbeitsspeicher der Grafikkarte oder eines Netzwerkadapters
                                                                                                                                                                                                  • dadurch direkter Transfer von Daten zwischen niedrigprivilegierten Prozessen und Hardware möglich, z.B. schnelles Hochladen von Texturen in die Grafikkarte durch ein 3D-Spiel
                                                                                                                                                                                                  • DMA braucht nicht unbedingt eine MMU (siehe VGA-Buffer bei 0xB8000 in DOS-Ära-Betriebssystemen)
                                                                                                                                                                                                  • 56 min

                                                                                                                                                                                                  About Schlüsseltechnologie

                                                                                                                                                                                                  From the publisher's feed

                                                                                                                                                                                                  Die IT hat unser Leben in den letzten Jahrzehnten von Grund auf verändert. Aber wie funktioniert sie wirklich? Das möchte ttimeless mal erklärt bekommen. Zum Glück hat Xyrill Antworten.

                                                                                                                                                                                                  More shows like Schlüsseltechnologie

                                                                                                                                                                                                  Freak Show by Metaebene Personal Media - Tim Pritlove

                                                                                                                                                                                                  Freak Show

                                                                                                                                                                                                  9 Listeners

                                                                                                                                                                                                  Lage der Nation - der Politik-Podcast aus Berlin by Philip Banse & Ulf Buermeyer

                                                                                                                                                                                                  Lage der Nation - der Politik-Podcast aus Berlin

                                                                                                                                                                                                  219 Listeners

                                                                                                                                                                                                  Logbuch:Netzpolitik by Metaebene Personal Media - Tim Pritlove

                                                                                                                                                                                                  Logbuch:Netzpolitik

                                                                                                                                                                                                  5 Listeners