CS
Computersysteme
Computersysteme
-
- 1 / 36
-
Lernkarten
Arithmetische-logische Einheit (ALU)?
- konkrete hardware
- heute mehrere in CPU
- Funktionen: Binär addieren, Logisches Nicht, Logisches Und/Oder...
- 1 Bit Operationen
- Später: mehrere zusammen schalten
Analog und Digital
- Unbegrenzt genau
- Ungenauigkeiten schlecht zu entdecken
- Endliche Möglichkeiten (einfacher zu erfassen, Vollständige Erfassung mögl.)
- Fehler über Kodierung erkenn - und behebbar
- 1 zu1 Übertragung
Logik vs- Schaltung?
- für jede aussagenlogische Formeln existiert eine Schaltung und umgekehrt
- Schaltung hat Layout
- Qualität einer Aussage nicht klar messbar (weniger Zeichen, weniger Klammern, weniger junktoren, alles mit NAND,...)
- Schaltungsqualität hat praktische Kriterien (Geringe Größe, billige Bauteile, kurz/schnelle Verbindungen)
Signallaufzeit?
- Wie viel Zeit vergeht, bis Ergebnis vorliegt (0,1 - 100ns) - Material/Temp Abhängig
- Mehr Gatter nacheinander = langsamer
- Mehr Gatter insgesamt = teuer
Mehrere Funktionen?
- Signal "abzweigen"
- Alle Optionen PARALLEL durchlaufen (Verschweingung? aber nicht mehr Zeit)
- Anschließend aus beiden Ergebnissen gewünschtes Auswählen
Signalauswahl?
- Über Steuerleitungen ("Ich will Fkt 0,1,2,..")
- Multiplexer
Was machen CPU, Hauptspeicher und Peripherie?
-
- CPU: kann Programme ausführen
- Hauptspeicher: kann Programme/Daten halten
- Peripherie: kann Daten permanent speichern, Anzeigen, Drucken, Faxen, ...
BIOS
- kleines Programm auf einem (E)EPROM
- Aufgaben: Power on self test (POST) - CPU, Grafikausgabe, Speicher, Tastatur, Hardware
- ggf. Passwortabfrage
- Konfigurationsmenü anbieten
- Bootreihenfolge festlegen
- Bootloader von Bootmedium ausführen
- Bietet auch Treiber für Hardware an
Hardware im Bios?
- BIOS muss nicht komplette Hardware kennen (keine Musik, Drucken, Internet)
- Bildschirm zur Ausgabe
- Tastatur und evtl. Maus zur Eingabe
- Festplatte zum Starten des Bootleaders
- CD/DVD/USB-Stick zum Booten?
Hardware Treiber im BIOS?
- Hardwareansteuerung über „Treiber“
- Treiber = Software, die die Hardware „kennt“
- Aufwändig zu aktualisieren (im Chip!)
- Altes BIOS löschen, dann neues Schreiben
- Stromausfall → Computer startet nicht mehr
- Möglichst allgemeingültig
- Nicht jede Hardware jedes Herstellers separat
- Ein/wenige allgemeingültige/r Treiber
- Nur Basisfunktionen, keine Besonderheiten
Unified Extensible Firmware Interface (UEFI)?
- Nur signierte Bootloader ("Secure Boot")
- Netzwerk-Verfügbarkeit
- Shell mit speziellen Programmen (*.efi)
- Treiber als Module nachladbar (Einzeln zu deaktivieren für Fehlersuche)
- Unterstützung für Festplatten > 2 TB
- Kompatibilitätsmodus zu BIOS
EFI-Programme?
- Teil der Festplatte reserviert für UEFI-Dateien (versteckt)
- Eigener "Assembler": EFI Byte Code (Idee vergleichbar mit Java, EFI deutlich komplexer als BIOS)
- .efi Programme sind unabhängig von Windows / MacOS / Linux
Hardware-Treiber in UEFi?
- Ohne riskantes BIOS-Update installierbar
- Einzelne Treiber aktualisier-und abschaltbar
- Netzwerkzugriff, hohe Auflösung schon beim Systemstart
- Bieten Schnittstelle zum Betriebssystem (gibt es beim BIOS auch)
- KEIN Ersatz für Treiber im Betriebssystem
Shell in UEFI
- Dateien/Verzeichnisse navigieren (cd, ls, cp, mv, mkdir,...)
- Treiber/Geräte aktivieren (mount, connect, divices)
- Speicher untersuchen (dmem, memmap, mm,..)
Secure Boot?
- Secure Boot startet nicht jeden Bootloader
- Nur digital signierte Bootloader erlaubt (hardwareseitige Bindung, z.B. an Windows)
- Starke Kritik von Linux Seite (Microsoft und Apple können sich entsprechende Signaturen leisten, Rechner ist anschließend auf System festgelegt, Freie (Linux) Bootloader ohen Signatur werden blockiert
Betriebssystem
- Sammlung von Computer Programmen
- Verwaltet Systemresourcen, wie Arbeitsspeicher, Festplatten, Ein-und Ausgabegeräte
- ...und diese Anwendungsprogrammen zur Verfügung stellt
- Bildet Schnittstelle zwischen Hardwarekomponenten und Anwedungssoftware
Betriebssystem Abstraktion
- Anwendungen müssen die konkrete Hardware nicht kennen (nicht hardwareabhängig, aber betriebssystemabhängig)
- Stellt "Komfortfunktionen" bereit (Bsp. einheitliche grafische Oberfläche)
Betriebssystemfunktionen
- Speicherverwaltung
- Dateisystem
- Multitasking
- Sicherheit
Speicherverwaltung
- BS kennt vorhandenen Speicher
- Progs können BS Speicher anfordern
- BS kümmert sich um Zuteilung der Adressbereiche
Paging
- Physikalischen Speicher in "Rahmen" (frames) fester Größe aufteilen
- Logischen Speicher in "Seiten" aufteilen
- Seitentabelle sagt, welcher Rahmen zu welcher Seite gehört (in Hardware)
- Anwendung sieht linearen, logischen Speicher - praktisch liegen Daten verteilt
Virtueller Speicher
- Mehr logischen als physikalischen Speicher zur Verfügung stellen
- "Fehlender" Speicher auf Festplatte
- Bei Zugriff auf nicht vorhandenen Rahmen dessen Inhalt von der Festplatte lesen
- Damit genug physik. Speicher frei ist, andere Seiten auf Festplatte auszulagern
Programm, Prozess, Thread
- Programm/Anwendung ist Bitfolge auf einem Datenträger
- Prozess = laufende Instanz des Programms (mehrfach starten = mehrere Prozesse, selbes Programm)
- Thread = Ablaufstang innerhalb eines Prozesses
Prozess
- Wird vom BS verwaltet
- Speicher wird vom BS getrennt
- Andere Ressourcen gehören dem Prozess exklusiv (Bsp. nur 1 Prozess schickt Daten zum Drucker, sonst Fehler)
Thread (Faden)
- Ein Prozess hat mindestens einen Thread
- Mehrere Threads heute selbstverständlich (Grafik & Chat im Spiel)
- Threads werden von ihrem Prozess verwaltet
- Alle Threads eines Prozesses haben Zugriff auf Prozess-Ressourcen
Prozesskomunikation
- Prozesse wollen geteilte Ressourcen exklusiv nutzen (mehrer Drucken, wer darf?)
- BS erlaubt die Kommunikation zwischen Prozessen
- Prozess kann z.B. eine Ressource für sich "blockieren" (lock)
- Anderer Prozess wartet auf diese Ressource (monitor)
Deadlock
- Unbegrenztes Halten von Ressourcen führt zu Problemen
- Reihenfolge der Ressourcenanforderungen kann entscheident sein
- Prozess P1 fordert Ressource R1 und dann R2
- Prozess P2 fordert Ressource R2 und dann R1
- P1 bekommt R1, P2 bekommt R2, beide warten jeweils auf andere
Starving
- Auch wenn Ressourcen regelmäßig wieder frei werdnen, musssie jeder mal bekommen
Prozesse im BS?
- Kann Deadlocks nicht grundsätzlich verhindern
- BS stellt einfache Hilfsmittel zur Verfügung (lock, monitor)
- BS kann Ressourcen bei langer Nichtbenutzung entziehen -> Fehler beim haltenden Prozess
Einfache Scheduling Verfahren
- Welcher Prozess wird zuerst ausgeführt?
- In Eingangsreihenfolge
- Schnellste Aufgabe zuerst
- Nächste Fälligkeit zuerst
- Nach Priorität (wächst mit Wartezeit)
Multitasking Idee
- Ständig laufen mehrere Programme
- Mehr Prozesse gleichzeitig als CPUs
- Gleichzeitigkeit durch schnellen Prozesswechsel vortäuschen
Multitasking
- Präemptives Multitasking
- OS teilt Prozess CPU zu und entzieht ihn wieder
- Kooperatives Multitasking
- Prozese geben CPU selber frei
- CPU evtl. lange blockiert - keine Gleichzeitigkeit
- Prozess stürtzt ab?
- Umschalten (context switch) kostet Zeit
Round Robin
- Jeder Prozess bekommt die CPU für einen kurzen Zeitraum fester Länge (Zeitschlitz)
- Ist ein Prozess in seinem Zeitschlitz nicht bereit, dann weiter zu nächsten
- Jeder kommt dran
- "Fair"
- Priorisierung durch unterschiedlich große Zeitschlitze möglich
Completely Fair Scheduler
- Von Linux verwendet
- Prozesse gehören zu Gruppe
- Bsp: eine Gruppe pro Benutzer
- Gruppen und Prozesse zählen ihre Wartezeit
- Prozess mit höchster Wartezeit bekommt CPU
- Wartezeit wird auch gezählt wenn Prozess CPU gar nicht haben will
Dateisystem
- Ist eine Abstraktion
- Anwendungen müssen nicht konkrete Hardware kennen/ansprechen
- BS bietet Schnittstelle zwischen Anwendungen und Dateisystem
Bekannte Dateisysteme?
- Windows: FAT16/32, NTFS
- Linux: ext2/3/4, ReiserFS
- MacOS: HFS+, MFS
Dateisystem Abstraktion
- Ziel: Daten menschenverständlich ablegen
- Heute verbreitet: Hierarchie / Baum