Betriebssysteme KE1 und KE2 Flashcards
Was war der ENIAC?
Der ENIAC wurde durch physische Veränderung der Hardware programmiert. Er war ein Elektronenrechner der mit 18.000 Röhren bestückt war und 30 Tonnen wog,
Was zeichnet die klassische Architektur eines von-Neumann-Rechners aus?
Das auszuführende Programm ist nicht mehr ein fester Bestandteil des Rechners. Es wird vor dem Programmlauf in den Speicher des Rechners geladen und hinterher wieder entfernt.
Was sind die wesentlichen Bestandteile eines von Neumann Rechners?
- Der Prozessor (CPU = Central Processing Unit)
- Der Hauptspeicher (Main Memory)
- die Ein- /Ausgabegeräte (I/O devices)
Wie wird der Processor noch bezeichnet?
ALU (arithmetische Logic Unit)
Wie ist der Hauptspeicher organisiert?
Der Prozessor greift auf die Programme und die Daten zu, die sich zur Laufzeit im Hauptspeicher befinden. Dieser ist als eine lange Folge von gleich großen Speicherzellen organisiert, die einzeln adressiert werden können. (Wahlfreier Zugriff)
Was ist ein „Word“?
Der Inhalt einer Speicherzelle. Es besteht aus einem oder mehreren Bytes.
Wieviele Bit enthält ein Byte?
8 Bit
Was ist ein Bit
Ein Bit hat den Wert null oder eins.
Rechne 1 MB um:
KB
Byte
1 MB
= 1024 KB
= 1024^2 Byte
Wie rechnet man die Binärdarstellung einer Dezimalzahl um?
Teile durch 2 und stelle den Restwert nach links Bspl: 160= 160/2 =80 =0 80/2 =40 = 0 40/2 = 20 = 0 20/2 = 10 = 0 10/2 = 5 = 0 5/2 = 2 = 1 2/2 = 1 = 0 1/2 = 0 = 1
= 10100000
Was ist ein GHz?
Ein GHz (Gigahertz) ist eine Taktfrequenz, also die Anzahl der Takte pro Sekunde.
Ein Gigahertz bedeutet einen Takt von einer Nanosekunde (eine Milliarde Takte pro Sekunde)
Was versteht man unter Zugriffszeit?
Die Zeit zwischen dem Aufbringen einer Adresse auf den Adressbus und der Ankunft des zugehörigen Speicherzelleninhalts über den Datenbus.
Was ist der Cache?
Der Cache ist im vergleich zum Hauptspeicher ein kleinerer aber schnellerer Zwischenspeicher. Häufig benutzte Daten werden vorübergehend vom Hauptspeicher in den Cache kopiert. Wenn Daten benötigt werden, schaut man zuerst im Cache.
Welche Aufgaben hat das Betriebssystem bzgl. Cache?
- Cache Management:
Wenn kein Platz mehr im Cache ist, wird entschieden welche Daten überschrieben werden können - Cache-Konsistenz
Angenommen, der Wert einer Variablen soll verändert werden. Wenn diese Änderung nur an der Kopie im Cache vollzogen wird, so besteht anschließend ein Unterschied zwischen dem Original im Hauptspeicher und der Kopie im Cache. Das Betriebssystem muss dafür sorgen, dass sich hieraus keine Fehler ergeben. Dieses Problem ist besonders gravierend bei Multiprozessor Systemen, bei denen jeder Prozessor über einen eigenen Cache verfügt.
Was ist der Primärspeicher?
Hauptspeicher
Was ist die Magnetplatte?
Die Magnetplatte ist ein Sekundärspeicher. Sie ist auf beiden Seiten mit einer magnetisierbaren Oberfläche beschichtet und dreht sich mit rund einhundert Umdrehungen pro Sekunde.
Wie kann man bei der Magnetplatte die Suchzeit verringern?
- zusammengehörende Informationen sollte möglichst in benachbarten Sektoren und Zylindern gespeichert werden.
- wenn bei einem Plattenlaufwerk mehrere Schreib-Leseaufträge gleichzeitig vorliegen, sollte eine günstige Bearbeitungsreihenfolge gewählt werden. (Disk scheduling)
Was sind Abarbeitungsstrategien für eine Magnetplatte?
- FCFS (First-Come, first-served)
- SSTF (shortest-seek-time-First)
- SCAN
Was ist FCFS?
First-come, first-served:
Bearbeitet die Aufträge in der Reihenfolge ihres Eingangs.
Was ist SSTF?
(Shortest-seek-time-first)
Bearbeitet jeweils denjenigen Auftrag als nächsten, dessen Spur der momentanen Position des Schreib-/Lesekopfs am nächsten liegt
Was ist SCAN?
SCAN bewegt den Kopf abwechselnd von außen nach innen und von innen nach außen über die gesamte Platte und führt dabei die Aufträge aus, deren Spuren gerade überquert werden
Was dauert länger?
Der Zugriff auf die Magnetplatte oder auf den Hauptspeicher?
Der Zugriff auf die Magnetplatte dauert sehr viel länger als auf den Haupspeicher
Was sind die Vorteile der Magnetplatte?
Die Magnetplatte liefert ein viel größeres Datenvolumen als der Hauptspeicher. Ein Sektor enthält zwischen 0, und 4 KByte Nutzinformation.
Wie wird die Nutzinformation eines Sektors in einer Magnetplatte bezeichnet?
Block
Was ist eine RAM-Disk?
Unter einer RAM-Disk versteht man eine fest reservierten Teil des Hauptspeichers, der von Anwenderprogrammen und Anwendern wie eine Magnetplatte benutzt werden kann.
Warum ist die Magnetplatte nicht für Langzeitarchivierung geeignet?
- Magnetplatten sind für wahlfreien Zugriff konzipiert und deshalb pro Mbyte Kapazität zu teuer, und darauf Informationen abzulegen, auf die nur selten zugegriffen wird.
- Sie sind oft im selben Gehäuse untergebracht wie Prozessor und Hauptspeicher und erlauben es uns deshalb nicht, Informationen an getrennten Ort zu verwahren oder auf andere Rechner zu transferieren
Was sind Teritärspeicher?
Teritärspeicher sind Datenträger, die preiswert sind und sich leicht vom Rechner entfernen lassen.
Z.b. Disketten, CD´s…
Wodurch zeichnen sich Magnetbänder aus?
Ihre Kapazität ist sehr viel größer als die einer Magnetplatte. Sie bieten aber nur sequentiellen Zugriff. Dies führt zu einer extrem langen Zugriffszeit.
Was versteht man unter einer Jukebox?
In einer juke-box werden einige hundert Kasetten von Magnetbändern zusammen gefasst.
Wie funktionieren CD´s DVDS
Die Daten werden optisch gespeichert und von einem Laser abgetastet
Was ist ein Flash-basierter Speicher?
Ein Flash-Basierter Speicher ist preisgünstiger als die externe Festplatte. Hier handelt es sich um Speicherchips, die Daten permanent, also auch ohne Stromversorgung speichern. Sie können auch schnell überschrieben werden. Z.B. USB-Sticks/Speicherkarten.
Wie werden Sekundär- und Teritärspeicher noch genannt?
Externspeicher
Zähle die Speicherarten nach Zugriffszeit aufsteigend auf (kosten absteigend)
- CPU-Register
- Cache
- Hauptspeicher
- Sekundärspeicher
- Teritärspeicher
Was ist ein Bus
Ein Bündel von Leitungen zusammen mit einem Protokoll, das genau festlegt, welche Nachrichten über den Bus geschickt werden können und wie diese Nachrichten durch Signale auf den Leitungen dargestellt werden.
Ein Bus verbindet viele Geräte, die alle über den Bus miteinander kommunizieren können.
Zu jedem Zeitpunkt kann aber nur eine Nachricht über den Bus verschickt werden.
Warum werden Geräte nicht direkt an den Bus angeschlossen?
Geräte werden über einen Controller an den Bus angeschlossen, da wenn die CPU alle Geräte selbst steuern müsste, wäre sie damit so belastet, dass für die eigentliche Programmausführung zu wenig Zeit bliebe.
Für welche Gerätetypen gibt es einen Cotroller der die Steuerung des Geräts übernimmt?
Zu jedem Gerätetypen gibt es einen Controller, der die Steuerung des „nackten“ Geräts übernimmt.
Oft können mehrere Geräte gleichen Typs an einen Controller angeschlossen werden.
Was ist ein Controller?
Ein Controller ist ein Stück elektronische Hardware.
Für komplexere Geräte wie z.b. Eine Magnetplatte wird meist hierfür ein vollwertiger Prozessor verwendet, der auf einer Platine im Gehäuse des Plattenlaufwerks untergebracht ist.
Was ist ein Gerätetreiber?
Über einen Gerätetreiber (Software) kommuniziert das Betriebssystem mit den Controllern, die die Geräte steuern.
Welche Register besitzt ein Controller?
- Datenausgaberegister (Data-out)
Hierhin schreibt der Treiber Daten, die für den Controller bestimmt sind. - Dateneingangsregister(data-in),
in das der Controller Daten schreibt, die für den Gerätetreiber bestimmt sind. - Statusregister (Status):
hier kann der Treiber den Zustand des Geräts abfragen, ob es zum Beispiel noch beschäftigt ist, oder ob Daten aus dem Dateneingangsregister abgeholt werden können
Kontrollregister (Control):
hier hinterlegt der Treiber Befehle an den Controller, zum Beispiel einen Lesebefehl.
Was sind die Vorteile/Nachteile bei der Implementierung von Funktionen in Hardware?
Vorteil:
Effizienter
Dient der Abstraktion, weil die Details in der Hardware verschwinden
Nachteil:
Eine Implementierung in Software macht weniger Arbeit und lässt sich leichter ändern
Was wird als virtuelles Gerät bezeichnet?
Die konzeptionelle Einheit von
Gerätetreiber
Controller
Gerät
Welche Konzepte stehen im Modell des virtuellen Geräts?
Abstraktion
Kapsellung, auch Geheimprizip genannt
Schichtenmodell
Was bedeutet Abstraktion?
Abstraktion bedeutet, von technischen Details abzusehen und sich auf das Wesentliche zu konzentrieren.
Das Konzept der Abstraktion besagt, dass man auf höherer Ebne gewisse Details nicht zu kennen braucht.
Was ist das Prinzip der Kapselung?
Das Prinzip der Kapselung besagt man darf die Details in unteren Ebenen nicht kennen. Eine Alternative Bezeichnung hierfür ist Geheimnisprinzip
Was sind die Gründe für Kapselung?
Missbrauch verhindern
Änderungen erleichtern
Was ist das Schichtenmodell?
Bspl.
Oberste Schicht: in Software implementiert
mittlere Schicht: elektronische Hardware
Unterste Schicht: mechanische Hardware
Die Kommunikation mit der Außenwelt erfolgt nur in der obersten Schicht. In jeder Schicht werden von oben ankommende Aufträge bearbeitet und zur weiteren Bearbeitung an die nächsttiefere Schicht weitergeleitet. Wenn in der untersten Schicht der Auftrag vollst. Erledigt ist, wird dort eine Antwort generiert und durch alle Schichten wieder nach oben geleitet. Die oberste Schicht schickt dann die Antwort an den externen Auftraggeber.
Was sind die Vor und Nachteile vom Schichtenmodell?
Ansatz ist nur sinnvoll, wenn jede Schicht einen wesentlichen Beitrag zur Bearbeitung der Aufträge und Antworten leisten kann.
Vorteil:
Einfache Implementierung, weil nur die beiden Schnittstellen zur nächsthöheren und nächsttieferen Schicht realisiert werden müssen u. Weil im Inneren der Schicht nur eine klar umrissenen Teilaufgabe gelöst werden muss
Nachteil: sind die Schichten zu klein entsteht hoher Verwaltungsaufwand
Was ist poling?
Die CPU kann - neben ihrer anderen Arbeit - immer wieder das Statusregister des Controllers abfragen, um festzustellen, ob der Auftrag schon erledigt ist. Diesen Abfragebetrieb nennt man poling.
Liegen die Register im Hauptspeicherbereich, so lässt sich eine solche Abfrage zwar recht schnell erledigen, aber wenn sie immer wieder erfolglos bleibt, wird insgesamt viel CPU-Zeit damit verbracht
Was ist ein Unterbrechungsbetrieb?
Der Controller benachrichtigt die CPU, sobald er den Auftrag ausgeführt hat; hierzu unterbricht er die CPU bei ihrer augenblicklichen Arbeit.
Dieser Unterbrechungsbetrieb bildet die Grundlage für die Arbeitsweise moderner Computersysteme
Wie geht die CPU mit Unterbrechungen um?
Die CPU besitzt einen besonderen Eingang für Unterbrechungen.
Entdeckt die CPU ein Unterbrechungssignal, rettet sie den Inhalt des Befehlszählregisters (Adresse des nächsten auszuführenden Befehls) in einen systemeigenen Bereich des Hauptspeichers und lädt stattdessen die Anfangsadresse einer allgemeinen Prozedur zur Unterbrechungshandlung (interrupt Händler)
Wie wird mit Mehreren Unterbrechungen umgegangen?
Bei vielen Prozessoren lässt sich der Unterbrechungseingang vorübergehend außer Betrieb setzten, sodass weitere Unterbrechungssignale wirkungslos bleiben.
Zum anderen kann man jedem Unterbrechungswunsch eine Priorität zuordnen
Was ist ein trap?
Wenn Software Unterbrechungen im CPU-Betrieb auslöst
In welchen Fällen kommt es zu Software-Unterbrechungen der CPU
Ausnahmen, wie z.b. DIV/0
Verfahren zur Kontrollübergabe:
Systemaufrufe, diese bilden zusammen die Programmierschnittstelle zwischen den Anwenderprogrammen und dem Betriebssystem.
Was ist die unterbrechungsgesteuerte ein/Ausgabe?
Der Controller schreibt jeweils ein Wort in sein Dateneingangsregister und löst eine Unterbrechung aus.
Dadurch wird der Gerätetreiber gestartet.
Er veranlasst, dass das Wort von der CPU in Empfang genommen und in den Hauptspeicher geschrieben wird. Wenn ein Block 512 Bytes enthält und ein Wort zwei Bytes umfasst, Weide die CPU bei diesem Verfahren 256-mal unterbrochen, bevor der Datenblock endlich im Hauptspeicher steht
Was ist DMA?
Der direkte Speicherzugriff (direct memory Access).
Hierbei wird im Computer ein spezieller DMA-Controller eingesetzt, der selbstständig über den Bus Daten in den Hauptspeicher übertragen kann, ohne die CPU zu bemühen. Auch der Gerätecontroller muss für das DMA-Verfahren ausgelegt sein.
Was wird als handshaking bezeichnet?
Eine Kommunikation wie die zwischen DMA- und Gerätecontroller wird im Englischen als handshaking bezeichnet, sie stellt einen einfachen Fall eines Protokolls dar.
Was ist der Ur-Lader (bootloader)
Der Ur-Lader befindet sich in einem speziellen Teil des Hauptspeichers, der seinen Inhalt auch nach Abschalten des Stroms behält.
Der Ur-Lader lädt zunächst den eigentlichen Lader von der Magnetplatte.
Der Lader wird nun gestartet und lädt das Betriebssystem in den Hauptspeicher. Dieser Vorgang wird als hochfahren (booting) bezeichnet.
Welche Programme laufen im Benutzermodus?
Alle Anwendungsprogramme
Welche Befehle können nur im Systemmodus ausgeführt werden?
Privilegierte Maschinenbefehle
Kann ein Benutzer direkt auf ein gerät zugreifen?
Kein Benutzer kann direkt auf ein Gerät zugreifen; man muss zu diesem Zweck das mit höheren Rechten ausgestattete Betriebssystem um Hilfe bitten.
Was ist der Adressraum?
Bevor ein Programm gestartet wird, weist ihm das Betriebssystem einen bestimmten Bereich im Hauptspeicher zu, seinen Adressraum.
Das Programm darf nur auf solche Adressen zugreifen, die in seinem eigenen Adressraum liegen.
Was sind relokierbare Programme (relocable code)?
Zuerst wird bei der Übersetzung eines Programms vom Compiler in Maschinensprache eine relative Adresse gegeben.
Wird das Programm in seinen Adressraum geladen, stimmen die relativen Adressen nicht mit den absoluten Adressen überein.
Wenn das Programm eine Speicherzelle adressieren will, wird die im Programm enthaltene relative Adresse zur niedrigsten Adresse des Adressraums addiert
Somit können die Programme zusammen mit ihren Adressräumen beliebig im Hauptspeicher verschoben werden
Formel
absolute Adresse = (Basisregister) + relative Adresse
Wie heißt ein Programm, dass sich gerade in der Ausführung befindet?
Prozess
Aus was besteht der Prozesskontext und wo wird er verwaltet?
- den Registerinhalten, insbesondere
- Befehlszähler und
- Grenzen des Adressraums
- Seitentabelle
- Prozessnummer
- Priorität
Vom Betriebssystem im Prozesskontollblock.
Was ist PCB?
Der Prozesskontrollblock
In ihm werden Angaben zum Prozesskontext zusammen gefasst.
Es wird dort auch vermerkt ob der Prozess im System- oder Benutzermodus arbeitet.
Wieviele Prozesse können im Zustand „rechnend“ zeitgleich im Einprozessorsystem sein?
Nur einer - nur der Prozess, dessen Programm gerade von der CPU ausgeführt wird.
Welche Prozesszustände gibt es?
Erzeugt Bereit Blockiert Rechnend Beendet
Was bedeutet der Prozesszustand „bereit“
Der Prozess bewirbt sich mit den übrigen bereiten Prozessen um die Zuteilung der CPU
Was bedeutet der Prozesszustand „blockiert“
Er wartet darauf, dass seine Ein-/Ausgabeanforderung erledigt wird oder das ein anderes Ereignis eintritt
Was ist der CPU-Scheduler?
Der CPU-Scheduler entscheidet, welcher der bereiten Prozesse als nächster rechnen darf.
Folgende Strategien kann er anwenden:
FCFS (First-come, First-Server)
-> Nachteil früh eintreffender Prozess mit hohem Rechezeitbedarf oder einer Endlosschleife hält späteren Prozesse auf
SJF (shortest Job First)
-> Vorraussetzung: die benötigte Rechenzeit lässt sich gut vorhersagen
Was ist „Stapel- oder Batch-Betrieb“?
Der Rechner erhält einen ganzen Schub von Aufträgen (Jobs), die keine Interaktion mit dem Benutzer erfordern und regelmäßig auszuführen sind, so dass man ihre Laufzeiten in etwa kennt.
Was ist Time-Sharing-Betrieb?
Mehrere Benutzer können zur selben Zeit an einem Rechner arbeiten, und jeder kann gleichzeitig mehrere Programme laufen lassen
Tatsächlich arbeiten arbeiten die Programme jedoch nicht gleichzeitig bei nur einer CPU, sondern die Prozesse werden sehr schnell gewechselt.
Was ist das Verfahren „round Robin“?
Die bereiten Prozesse werden reihum bedient. Dazu kann man sie in der Reihenfolge ihres Eintreffens in einer kreisförmigen Warteschlange speichern.
Wie nennt man das Umschalten zwischen Prozessen?
Kontextwechsel (context switch)
Was macht der Dispatcher?
Er führt den Kontextwechsel durch (das Umschalten zwischen Prozessen)
Was passiert wenn ein rechnender Prozess auf ein bestimmtes Ereignis warten will?
Ein rechnender Prozess kann durch einen Systemaufruf mitteilen, dass er auf ein bestimmtes Ereignis warten will, er wird dann blockiert und kommt in eine spezielle Warteschlange, in der möglicherweise noch andere blockierte Prozesse stehen, die auf dasselbe Ereignis warten. Wenn dann dieses Ereignis eintritt, kann der Prozess, welcher es auslöst, ein Signal abschicken. Dieses Signal bewirkt, dass alle Prozesse aus der Warteschlange wieder in den Zustand bereit versetzt werden.
Beschreibe was bei der Ausführung des zu read zugehörigen Systemaufrufs in einem Prozess P geschieht.
- Eine Software-Unterbrechung wird ausgelöst, der Kontext von P wird zunächst gerettet, dann wird der Ein/Ausgabeteil des Betriebssystems aufgerufen.
- Dieser prüft zunächst, ob die benötigten Daten nicht schon im Cache im Hauptspeicher stehen, in dem Fall werden sie in den Adressraum von P kopiert, und nach der Rückkehr von der Software-Unterbrechung wird der Prozess P sofort wieder rechnend.
- Stehen die Daten nicht im Cache, ist ein Plattenzugriff erforderlich. Der Prozess P wird solange blockiert. Der Leseauftrag wird an die Geräte-Warteschlange des Plattenlaufwerks angehängt. Dann gibt es dem Gerätetreiber Bescheid.
- Sobald der Gerätetreiber frei ist, und rechnend wird, entnimmt er den Auftrag der Geräte-Warteschlange. Der Gerätetreiber reserviert im betriebssystemeigenen Bereich Speicherplatz für die zu lesenden Daten und schickt einen Lesebefehl an den Gerätecontroller. Dann führt der Treiber den Systemaufruf Warten aus und blockiert.
- Der Gerätecontroller bestimmt erst die physische Adresse, dann führt er den Leseauftrag aus und überträgt zusammen mit dem DMA-Controller die Daten in den reservierten Bereich im systemeigenen Speicher, währenddessen können auf der CPU beliebige andere Prozesse rechnen. Danach wird eine Unterbrechung ausgelöst.
- Mittels des Unterbrechungsvektors wird die Unterbrechungsroutine des Plattenlaufwerks gestartet. Sie schickt das Signal, auf das der Gerätetreiber wartet, und kehrt dann von der Unterbrechung zurück. Der Gerätetreiber wird dadurch bereit.
- Sobald der Gerätetreiber rechnend wird, sieht er in der Geräte-Warteschlange nach, von welchem Prozess der Leseauftrag stammte, gibt dem Ein-/Ausgabeteil des Betriebssystems Bescheid und geht in denn Zustand bereit
- Der Ein-/Ausgabeteil des Betriebssystems kopiert die Daten aus dem systemeigenen Speicher in den Adressraum des Prozesses P und versetzt P aus dem Zustand blockiert in den Zustand bereit.
- Sobald der Prozess P wieder rechnen darf, wird der Systemaufruf beendet, und P setzt seine Arbeit hinter dem read fort.
Was enthält der Kern (Kernel)
Der Kern (Kernel) des Betriebssystems enthält
Geräteunabhängige Teile für Blockeises Ein- und Ausgabe. Ein weiter Teil des Kerns ist für die Hauptspeicherverwaltung zuständig.
Den CPU Scheduler
In UNIX und Linux auch die Gerätetreiber
Und weitere Teile für die Erledigung anderer Aufgaben
Welche zwei Schnittstellen hat der Kern?
Controllerschnittstelle = Verbindung zur Hardware Programmierschnittstelle = Stellt die Dienste des Betriebssystems für die Programme zur Verfügung.
Welche groben Aufgabenbereiche haben die Systemaufrufe?
- Prozesse
- Dateien
- Information
- Kommunikation
Was muss passieren wenn in einem Prozess ein Fehler auftritt?
Wenn ein Fehler auftritt, muss der Prozess abgebrochen werden (Abort)
Dabei sollte es möglich sein, eine Fehlermeldung auszugeben oder den Inhalt von Registern und Adressraum für die Fehlersuche zu speichern (dump)
Was ist eine Datei?
Eine Datei ist grob gesagt eine Sammlung zusammengehöriger Information
Dateien befinden sich im Sekundär- und Teritärspeicher.
Was passiert beim öffnen einer Datei?
Durch das Öffnen wird die Datei in eine spezielle Liste eingetragen, bei den folgenden Zugriffen braucht dann nicht jedesmal aufs neue die physische Adresse der Datei bestimmt zu werden. Außerdem lässt sich damit verhindern, dass zwei Benutzer sich beim Zugriff auf dieselbe Datei stören.
Wie kann die Kommunikation zwischen Prozessen erfolgen?
Die Kommunikation zwischen Prozessen kann auf zwei verschiedene Arten erfolgen:
Versand von Nachrichten (Message Passung)
Über einen gemeinsamen Speicherbereich (Shared Memory)
Wie kann der Versand von Nachrichten zwischen den Prozessen erfolgen?
- verbindungslos (connectionless)
wie versenden eines Briefs - verbindungsorientiert (Connection-orientier)
Es wird eine Verbindung zwischen Sender und Empfänger aufgebaut, über die dann die Kommunikation erfolgt
Was sind pipes?
In UNIX und Linux wird der verbindungsorientierte Datenaustausch durch pipes realisiert.
Wozu dient die Benutzerschnittstelle?
Sie dient dem Benutzer zusammen mit den Schnittstellen der Anwendungsprogramme zur Kommunikation mit dem Rechner.
Aus was besteht die Benutzerschnittstelle?
Aus der Gesamtheit aller Systemprogramme.
Welchen Aufgabenbereichen lassen sich die Systemprogramme zuordnen?
- Programme
- Dateien und Verzeichnisse
- Information
- Kommunikation
Was ist Common Desktop Environment (CDE)?
Eine integrierte Oberfläche.
Es vereinigt viele Systemprogramme mit folgenden Funktionen in sich:
- Editor (Zum Schreiben der Programmtexte)
- Compiler/Interpreter (für die verwendete Programmiersprache)
- Binder/linker (fasst einzelne Module zu einem Lademodul zusammen)
- Lader/loader (Bringt das Lademodul in den Hauptspeicher)
- Debugger (für Fehlersuche)
Was machen Systemprogramme?
Systemprogramme helfen dem Benutzer Dateien anzulegen Dateien zu kopieren Dateien zu drucken Dateien umzubenennen Dateien zu löschen Zugriffsberechtigungen setzen
Was ist eine Directory?
Zusammengehörige Dateien werden in Verzeichnissen (directories) zusammen gefasst
Was ist der Unterschied im Aufgabenbereich von Systemaufrufen und Systemprogrammen?
Systemaufrufe:
Haben besonders mit der Kommunikation zwischen Prozessen zu tun
Systemprogramme:
Sind auf höherer Ebene für die Kommunikation zwischen Benutzern zuständig
Was ist der Kommandointerpreter (command Interpreter)?
Der Command Interpreter ist ein wichtiges Systemprogramme, der die Eingaben des Benutzers entgegennimmt und ihre Ausführung veranlasst.
Was ist eine Shell?
Einen für jeden Benutzer maßgeschneiderten Kommandointerpreter
Was ist ein Parallelrechner?
Multiprozessorsystem
Arbeit wird auf mehrere Prozessoren verteilt
Warum löst ein Multiprozessorsystem mit k Prozessoren ein Problem nicht unbedingt k mal so schnell wie ein Einzelprozessorsystem?
- Kommunikation zwischen den Prozessesoren benötigt zeit
- Einige Probleme sind nicht parallelisierbar
Was sind die Vorteile eines Parallelrechners?
- Effizienzsteigerung
- Kostenersparnis durch Zusammenfassung mehrerer CPU`s
- Störungssicherheit (bei Ausfall eines Prozessoren)
Wie ist das Verhältnis bei einem Parallelrechner von Prozessoren und Hauptspeicher?
Bei einem Parallelrechner teilen sich die Prozessoren einen gemeinsamen großen Hauptspeicher. Der Zugriff erfolgt entweder über einen Bus, oder der gemeinsame Hauptspeicher wird in kleiner Stücke zerlegt und ein Schaltwerk sorgt dafür, dass jeder Prozessor auf jedem Teil des Speichers zugreifen kann.
Was sind Verteilte Systeme?
Jeder Prozessor hat einen eigenen Speicher
Die Kommunikation zwischen den Prozessoren erfolgt durch den Versand von Nachrichten.
Sind bei verteilten Systemen die Prozessoren im selben Rechnergehäuse untergebracht?
Nicht zwingend -
Es kann auch aus vielen Einezlprozessorrechnern bestehen, die auf der ganzen Welt verteilt sind wie z.B. Das World Wide Web.
Was ist eine Hypercube-Architektur?
Beim d-dimensionalen Hypercube gibt es für jeden der 2^d möglichen Vektoren die man aus d Nullen und Einsen bilden kann, einen Prozessor.
Die Prozessoren sind nur an den Vektoren verbunden, die sich genau an einer stelle vom eigenen Vektor unterscheiden.
Bspl:
(10011000) und (10011010) haben eine Verbindung
(10011000) und (10111010) nicht
Was ist ein Relzeitsystem?
Hier ist es Teil der Korrektheitsanforderung, dass das Ergebnis innerhalb einer vorgegebenen Zeit berechnet wird.
Übungsaufgabe 1.1
Die Binärdarstellung einer natürlichen Zahl n >= 1 ist die Folge ak ak-1 … a1 a0 von Nullen und Einsen ai, für welche
n = ak2^k + ak-12^k-1 + … + a12^1 + a02^0
gilt und ak = 1; führende Nullen lässt man also fort. Welche Zal n wird durch 11011101 dargestellt?
Bestimmen sie die Binärdarstellung von 160
2^7 + 2^4 + 2^3 + 2^2 +2^0 = 157
n` := (n-a0)/2 = n div 2
Irritiert man das Verfahren ist a1 = n` mod 2
Es ergibt sich 10100000
Einfachere Beschreibung:
Gehe nach folgendem Verfahren vor:
(1) Teile die Zahl mit Rest durch 2.
(2) Der Divisionsrest ist die nächste Ziffer (von rechts nach links).
(3) Falls der (ganzzahlige) Quotient = 0 ist, bist du fertig,
andernfalls nimm den (ganzzahligen) Quotienten als neue Zahl
und wiederhole ab (1).
Übungsaufgabe 1.2
Beim Prozessor 68000 von Motorola beträgt die Wortlänge 2 Byte. Wie breit muss der Adressbus sein- das heißt: aus wie vielen Bits bestehen die Adressen bei einer Hauptspeicherkapazität von 16 MByte?
Teilt Mann 16 MByte in Worte der Länge 2 Byte auf, so entstehen:
(162^20)/2 = 82^20 = 2^23
Viele Worte. Der Adressbus muss also die Breite 23 haben.
Übungsaufgabe 1.3
Angenommen, ein Schreib- / Lesezugriff auf den Cache ist neun mal so schnell wie ein Zugriff auf den Hauptspeicher. Welchen Zeitvorteil ergibt die Verwendung eines Cache nach dem oben beschriebenen Algorithmus, wenn bei 80% aller Zugriffe die gesuchten Daten im Cache gefunden werden?
Sei c die Zeitdauer eines Schreib-/Lesezugriffs auf den Cache, dann fällt also in 80% aller Datenzugriffe ein Zeitaufwand von c Einheiten an. Bei den übrigen 20% der Fälle muss auf den Hauptspeicher zugegriffen werden, das kostet zusätzlich 9c Zeiteinheiten. Danach müssen die Daten noch in den Cache abgelegt werden, das benötigt noch c Zeiteinheiten. Im Mittel entsteht also bei Verwendung des Cache ein Zeitaufwand in Höhe von
(80/100)c + (20/100)(9c+2c) = (80 + 220)/100*c = 3c
Gegenüber 9c beim Betrieb ohne Cache. Bei den hier zugrunde gelegen Werten geht es mit Cache also drei mal so schnell.
Übungsaufgabe 1.4
Wir betrachten ein Plattenlaufwerk mit nur einer einzelnen Platte. Die Spuren sind mit 0 beginnend von außen nach innen durchnummeriert. Wenn dafür nun mehrere Aufträge vorliegen, kann man sie nach folgenden Strategien abarbeiten:
- FCFS (First-come, First-served) - bearbeitet die Aufträge in der Reihenfolge ihres Eingangs.
- SSTF (shortest-sek-Time-First) - bearbeitet jeweils denjenigen Auftrag als nächsten, dessen Spur der momentanen Position des Schreib-/Lesekopfs am nächsten liegt.
- SCAN - bewegt den Kopf abwechselnd von außen nach innen und von innen nach außen über die gesamte Platte und führt dabei die Aufträge aus, deren Spuren gerade überquert werden.
Angenommen, es sind Zugriffsaufträge für Sektoren in den Spuren
32, 185, 80, 126, 19, 107
In dieser Reihenfolge eingegangen. Der Kopf steht anfangs auf der Spur 98 und bewegt sich im Falle der SCAN-Strategie gerade nach außen. Welche Distanz muss der Kopf bei Anwendung der drei Strategien jeweils insgesamt zurücklegen, bis alle Aufträge erledigt sind?
Bei der Strategie FCFS ergibt sich als Gesamtdistanz
(98-32) + (185-32) + (185-80) + (126-80) + (126-19) + (107-19) = 565
SSTF:
Es werden nacheinander die Spuren 98, 107, 126, 80, 32, 19, 185 besucht, was eine Gesamtdistanz von 301 ergibt.
SCAN:
Führt von Spur 98 zunächst nach außen bis zur Spur 0 und dann wieder nach innen bis Spur 185 - hier beträgt die Gesamtdistanz 283.
Bei diesem Beispiel schneidet also die Strategie SCAN am besten ab. In der Praxis sind die Verhältnisse komplizierter, weil nicht alle Schreib-/ Leseaufträge im voraus bekannt sind. Vielmehr treffen immer neue Aufträge ein, während die ersten bereits abgearbeitet wurden.
Übungsaufgabe 1.5
Sortieren sie alle Ihnen bekannten Speicherformen nach Zugriffszeit.
Nach aufsteigender Zugriffszeit geordnet:
Prozessregister, Cache Hauptspeicher RAM-disk Magnetplatte BD HD DVD CD/DVD Diskette Magnetband
Übungsaufgabe 1.6
Nach jeder Ausführung eines Befehls überprüft die CPU, ob an ihrem Unterbrechungseingang ein Signal angekommen ist. Schleicht sich hier durch die Hintertür der ineffiziente Abfragebetrieb ein, den wir durch die Einführung des Unterbrechungsbetriebs eigentlich hatten vermeiden wollen?
Es stimmt zwar, dass beim regelmäßigen Überprüfen des Unterbrechungseingangs ein Abfragebetrieb vorliegt, diese Abfragen erfolgen aber im Inneren der CPU und benötigen deshalb viel weniger Zeit als das Lesen des Statusregisters des Controllers. Denn selbst bei speicherabgebildeter Ein-/Ausgabe werden hierfür mehrere CPU-Befehle benötigt.
Übungsaufgabe 1.7
Das Ziel des DMA-Verfahrens liegt in einer Entlastung der CPU. Wieso kann es trotzdem vorkommen, dass die Arbeit der CPU verzögert wird, während DMA-Vorgänge ablaufen?
Auch bei Einsatz des DMA-Verfahrens kann es zu Verzögerungen in der Arbeit der CPU kommen, weil der DMA-Controller während der Übertragung den Bus besetzt hält, die CPU also nichts auf den Hauptspeicher zugreifen kann.
Übungsaufgabe 1.8
Warum darf der Unterbrechungsvektor nicht im Adressraum eines Anwendungsprogramms liegen?
Läge der Unterbrechungsvektor im Adressraum eines Benutzerprogramms, so könnte der Benutzer die Anfangsadresse einer Unterbrechungsroutine so ändern, dass, wenn diese Unterbrechung eintritt, statt der Unterbrechungsroutine ein Teil des Benutzerprogramms gestartet wird. Die CPU währe dann im Systemmodus und der Benutzer hätte damit die vollständige Herrschaft über den Rechner erlangt.
Übungsaufgabe 1.9
Muss der Befehl, mit dem der Unterbrechungseingang der CPU außer Betrieb gesetzt wird, privilegiert sein?
Der Befehl zum Außerbetriebsetzen der Unterbrechungsleitung muss auf jeden Fall privilegiert sein. Wenn nämlich ein Benutzerprogramms diesen Befehl ausführen könnte und anschließend in eine Endlosschleife geriete, wäre es nur noch durch Abschalten des Rechners zu stoppen.
Übungsaufgabe 1.10
Gegeben sei eine feste Menge von endlich vielen Prozessen mit bekannten Rechenzeiten. Beweisen Sie, dass SJF die Gesamtwartezeit minimiert, also die Summe aller Wartezeiten der einzelnen Prozesse. Dabei ist die Wartezeit eines Prozesses diejenige Zeit bist zur Beendigung, in der sich der Prozess im Zustand bereit befindet.
Betrachten wir eine Ausführungsreihenfolge, bei der ein langer Prozess L vor einem kurzen Prozess K an die Reihe kommt. Wenn wir die beiden miteinander vertauschen, brauchen alle dazwischen liegenden Prozesse nicht mehr so lange zu warten. Für L verlängert sich bei diesem Tausch zwar die Wartezeit, aber die Verkürzung der Wartezeit von K ist größer! Alle übrigen Prozesse sind nicht betroffen. Also verkürzt solch ein Tausch die Gesamtwartezeit. Jede von SJF verschiedene Ausführungsreihenfolge lässt sich also noch verbessern. Folglich ist SJF optimal.
Übungsaufgabe 1.11
Zu welchem Problem kann es bei einem System mit SJF-Scheduling kommen, wenn einige längere Prozesse laufen und immer wieder kurze Prozesse gestartet werden? Wie kann man die SJF-Strategie modifizieren, sodass dieses Problem vermieden wird?
Bei SJF werden kürzere Prozesse vor längeren bearbeitet. Je mehr kurze Prozesse generiert werden, desto länger müssen die langen Prozesse warten. Wenn also immer neue kurze Prozesse erzeugt werden, kommen die langen Prozesse nie an die Reihe. Dieses Problem wird starvation genannt. Eine einfache Möglichkeit, starvation zu verhindern ist, beim Scheduling zusätzlich zu den erwarteten Laufzeiten auch Prioritäten zu berücksichtigen. Alle im System eintreffenden Prozesse erhalten zunächst die gleiche Priorität, die dann jedoch erhöht wird, je länger ein Prozess auf Prozessorzuteilung wartet. Der lange Prozess hätte dann irgendwann eine Priorität, und der Scheduler kann erkennen, dass der Prozess schon lange wartet und ihn bearbeiten, obwohl kürzere Prozesse im System sind. Diese Prioritätsanpassung wird auch als aging bezeichnet.
Muss der Zugriff auf das Register des Zeitgebers privilegiert sein?
Der Zugriff auf das Register, das die Anzahl der verbleibenden Zeiteinheiten der aktuellen Zeitscheibe enthält, muss privilegiert sein! Denn Sonst könnte ein Prozess sich selbst zusätzlich Rechenzeit verschaffen.
Übungsaufgabe 1.13
Welche Gefahren drohen, wenn beim Verfahren round Robin die Zeitscheiben zu dick oder zu dünn gewählt werden?
Prozesse mit großem Ein-/Ausgabebedarf könnten von extrem langen Zeitscheiben nicht profitieren: Meist blockieren sei lange bevor ihre Zeitscheibe abgelaufen ist, etwa um auf die nächste Benutzereingabe zu warten. Sie können aber sehr darunter leiden, wenn sie rechenzeitintensive Prozesse vor sich haben, die ihre dicken Zeitscheiben voll ausnutzen. Darum sind zu dicke Zeitscheiben nicht wünschenswert. Aber zu dünne Zeitscheiben sind auch ineffizient: Die CPU verbringt dann einen zu großen Teil ihrer Zeit mit unproduktiven Kontextwechseln , während es mit den Prozessen nur langsam voran geht.
Übungsaufgabe 1.15
Warum werden die gelesenen Daten erst im systemeigenen Speicherbereich abgelegt und nicht gleich im Adressraum des anfordernden Prozesses P?
Wollte man die gelesen Daten sofort in den Adressraum des Prozesses P übertragen, der sie angefordert hat, so müsste die Zieladresse vom Betriebssystem über den Treiber an den Controller weitergegeben werden. Außerdem dürfte der Adressraum von Prozess P im Hauptspeicher nicht bewegt werden, bis der Lesevorgang abgeschlossen ist. Beides wäre unzweckmäßig. Dem Controller die Zieladresse mitzuteilen, widerspricht den Prinzipien von Kapselung und Aufgabenteilung (separation of concerns). Blockierte Prozesse nicht bewegen oder auf die Magnetplatte auslagern zu können, würde die effiziente Verwaltung des Hauptspeichers behindern.
Übungsaufgabe 1.14
Warum wird nicht schon beim Compilieren die logische Datenbeschreibung durch die physische Beschreibung ersetzt?
Zwischen dem Compilieren und dem Ausführen eines Programms kann ein längerer Zeitraum liegen, in dem die Dateien verändert werden. Deshalb kann man logische Adressen erst zur Laufzeit auf physische Adressen abbilden.
Übungsaufgabe 1.16
Welcher gravierende Unterschied besteht zwischen einer verbindungsorientierten und einer verbindungslosen Übertragung, wenn eine sehr lange Nachricht vor dem Absenden in mehrere Teile zerlegt werden muss?
Wenn man eine lange Nachricht in mehreren Teilen überträgt, ist beim verbindungsorientierten Datenaustausch sichergestellt, dass die Teile in der richtigen Reihenfolge beim Empfänger ankommen. Beim verbindungslosen Austausch kann das nicht garantiert werden.
Übungsaufgabe 1.17
Über wieviele Zwischenstationen muss man beim de-dimensionalen Hypercube höchstens laufen, um von einem Prozessor zu einem anderen gelangen
Zwei beliebige Vektoren der Länge d unterscheiden sich im schlimmsten Fall an allen d Stellen. Wenn man also bei jedem Schritt einen Unterschied verschwinden lässt, indem man den entsprechenden Nachbarn aufsucht, sind insgesamt d Schritte über d-1 Zwischenstationen erforderlich.
Was ist ein Betriebssystem?
(Wiki) Ein Betriebssystem, auch OS (von englisch operating system) genannt, ist eine Zusammenstellung von Computerprogrammen, die die Systemressourcen eines Computers wie Arbeitsspeicher, Festplatten, Ein- und Ausgabegeräte verwaltet und diese Anwendungsprogrammen zur Verfügung stellt. Das Betriebssystem bildet dadurch die Schnittstelle zwischen den Hardware-Komponenten und der Anwendungssoftware des Benutzers
Wozu braucht man ein Betriebssystem?
Transparenz: Ein Betriebssystem soll die Details über Hardware vor Benutzern und Anwendungen verstecken. Benutzer sollen nur mit Anwendungsprogrammen mit einem Rechner interagieren.
Welche Aufgabe hat ein Betriebssystem?
- Bereitstellung von Schnittstellen für Anwendungen und Benutzer
- Aufteilung der CPU-Zeit für die einzelnen Prozesse
- Zuteilung des Hauptspeichers für die einzelnen Prozesse und Verwaltung des virtuellen Speichers
- Steuerung von Ein-/Ausgabegeräten
Welche Strategien und Mechanismen benutzt ein Betriebssystem um die Aufgaben zu lösen?
- Strategie:
- Ein Betriebssystem muss die Konrolle über das ganze System behalten
- Das Betriebssystem muss immer wieder aktiviert werden - Mechanismus:
- Durch Unterbrechungen wird das Betriebssystem aktiviert
Welche Schnittstellen werden vom Betriebssystem zur Verfügung gestellt?
- Programmierschnittstelle
- Benutzerschnittstelle
Welche Idee hatte von Neumann? Warum ist seine Idee ein Meilenstein für die Informatik?
Trennung der Hardware und Software
Universelle Maschine zur Ausführung von Programmen: Das auszuführende Programm ist nicht mehr fester Bestandteil des Rechners, es wird vor der Ausführung in den Speicher geladen und hinterher wieder entfernt
Welche Hardwarekomponenten hat ein moderner von-Neumann-Rechner?
- Prozessor (CPU = central processing unit)
- Hauptspeicher (main memory)
- Ein-/Ausgabegeräte (I/O devices)
Wie sieht eine CPU aus? Welche wichtigen Register hat die CPU?
- Befehlszähler (Program Counter, PC) enthält die Adresse derjenigen Speicherzelle, in der der als nächses auszuführende Befehl steht
- Befehlsregister (Instruction Register IR) speichert den aktuellen Befehl, der gerade bearbeitet wird
- PSW (Programmstatuswort) enthält ein besonderes Bit für Benutzer-/Systemmodus
- Speicheradressregister (Memory Adress Regiser MAR) enthält die Adresse derjenigen Speicherzelle, die als nächstes gelesen oder beschrieben werden soll
Akkumulator eines von vielen Datenregistern, speichert ein Zwischenergebnis einer berechnung
Welche Aufgabe haben die Register der CPU?
Um ein Wort aus einer Speicherzelle zu holen, hat die CPU einige wichtige Register, die als Zwischenspeicher verwendet werden
Was ist ein Programm im Hauptspeicher?
ein gerade auszuführendes Programm
Welche Schritte hat ein Befehlszyklus des Prozessors?
Die CPU arbeitet Befehle in Zyklen ab. Eine Befehlsausführung kann in zwei Phasen aufgeteilt werden:
1. Holphase (fatch stage):
Das Speicheradressregister übernimmt den Wert vom Befehlszähler und gibt die Adresse an den Adressbus weiter. Der Inhalt der Speicherzelle wird in das Befehlsregister geladen und interpretiert
2. Ausführungsphase (execution stage)
- geholte Befehl wird ausgeführt
- weitere Daten oder Adressen können von Speicherzellen geholt werden.
- Befehlszähler wird hochgezählt
Wie sieht ein Hauptspeicher aus?
- lange Folge von gleich großen Speicherzellen organisiert.
Welche Beziehung hat der Adressbus mit dem Hauptspeicher?
Der Hauptspeicher wird über den Adressbus des Prozessors angesprochen
Wie kann man aus der Größe des Hauptspeichers die Länge des Adressbusses berechnen?
Wir teilen die Größe des Hauptspeichers durch die Länge der Worte. Die Breite des Adressbusses ist dann der Exponent der 2er Potenz.
Beispiel: Hauptspeicher 16 MByte Worte haben die Länge 2 Byte, so ist
(162^30)/2=82^20=2^23
Warum hat der Hauptspeicher die Eigenschaft des wahlfreien Zugriffs?
(Wiki)
Die Bezeichnung des Speichertyps als „wahlfrei“ bedeutet in diesem Zusammenhang, dass jede Speicherzelle über ihre Speicheradresse direkt angesprochen werden kann. Der Speicher muss also nicht sequenziell oder in Blöcken ausgelesen werden. Bei großen Speicherbausteinen erfolgt die Adressierung jedoch nicht über die einzelnen Zellen, sondern über ein Wort, dessen Breite von der Speicherarchitektur abhängt
Wie ist eigentlich wahlfreier Zugriff des Hauptspeichers definiert?
Speicherzellen können einzeln adressiert werden.
Was ist ein Cache?
ein schneller Zwischenspeicher, in den häufig benutzte Daten kopiert werden, um die Zugriffszeit zu verringern.
Wozu ist ein Cache gut?
Zugriffszeit auf Daten und Programme zu verringern.
Welche Probleme entstehe, wenn ein Cache eingesetzt wird? Wie läuft der Cache-Algorithmus?
Konsistenz-Probleme
Cache-Algorithmus:
- Häufig benutzte Daten werden in den Cache kopiert
- Erst Suche im Cache - da schneller
- Wenn Suche erfolglos -> Hauptspeicher und Kopie in den Cache
Was ist ein Sekundärspeicher?
- Aufgabe der dauerhaften Speicherung
- Häufig Magnetplatte (Festplatte) und Flashspeicher
Wie ist eine Festplatte aufgebaut?
- Magnetplatte auf beiden Seiten mit einer magnetisierbaren Oberfläche beschichtet
- Magnetplatte dreht sich mit 100 Umdrehungen/Sekunde
- Jede Oberfläche einer Platte ist in einige tausend kreisförmige Spuren gleicher Breite unterteilt, die wiederum aus einigen hundert Sektoren bestehen
- übereinanderliegende Spuren bilden einen Zylinder
Welche Befehle kann die Festplatte ausführen?
? Lesen & schreiben?
Warum unterstützt eine Festplatte auch den wahlfreien Zugriff?
Jeder Sektor wird mit einer Adresse angesprochen
Was ist die Positionierungszeit, Latenzzeit, Übertragungszeit und Zugriffszeit bei einer Festplatte?
Positionierungszeit : Zeit für die Positionierung des Schreib-/Lesekopfes
Latenzzeit: Warten, dass der gesuchte Sektor am Kopf vorbeiläuft
Übertragungszeit: Lesen des Sektorinhalts und das Speichern in einen Puffer
Zugriffszeit: Positionierungszeit + Latenzzeit + Übertragungszeit
Welche Strategien gibt es, um die Aufträge für Plattenlaufwerke abzuarbeiten?
- FCFS (first-come, first served)
- SSTF (shortest-seek-time-first)
- SCAN - bewegt Kopf abwechselnd von außen nach innen und von innen nach außen über die gesamte Platte und fürh die Aufträge aus, deren Spuren überquert werden.
Welche Probleme kann es bei der Strategie SSTF geben?
Das Problem der Starvation betrifft die Strategie SSTF (shortest seek time first), da hier Aufträge, die weit von der aktuellen Position des
Schreib-/Lesekopfs entfernt sind, durch neue Aufträge, die nicht so weit entfernt sind, nach hinten geschoben und nicht bearbeitet werden.
Kann es passieren, dass ein Auftrag mit SSTF nicht bearbeitet wird?
Ja, da hier Aufträge, die weit von der aktuellen Position des
Schreib-/Lesekopfs entfernt sind, durch neue Aufträge, die nicht so weit entfernt sind, nach hinten geschoben und nicht bearbeitet werden.
Was ist der Unterschied zwischen einem Sektor und einem Block?
Ein Block ist die Nutzinformation eines Sektors.
Was ist ein parity bit?
Sie werden für die Fehlerkorrektur genutzt. Der Wert der partity bits ist die Summe der Werte bestimmter Datenbits. Beim Schreiben bzw. Lesen eines Sektors werden diese Summen berechnet und in die Prüfbits eigetragen bzw. mit den dort gespeicherten Werten verglichen. Ergeben sich Abweichungen, so ist ein Fehler aufgetreten.
Bei Verwendung geeigneter Codes knan man feststellen, welches Bit einen falschen Wert hat und den Fehler automatisch korrigieren
Was ist ein Tertiärspeicher?
Das wesentliche Merkmal von Teritärspeichern ist, dass sich der Datenträger preiswert herstellen und leich vom Rechner entfernen lässt.
Sie eignen sich gut für den Transfer von Daten zwischen nicht vernetzten Rechnern.
Beispiele: Diskette, CD, DVD, USB-Sticks
Was ist der Unterschied zwischen einem wahlfreien Zugriff und einem sequentiellen Zugriff?
sequentieller Zugriff:
Man kann nur auf die Blöcke direkt zugreifen, die sich gerade vor oder hinter dem Schreib-/Lesekopf befinden (vor/zurückspulen für Zugriff)
wahlfreier Zugriff:
Unter wahlfreiem Zugriff (englisch random access, auch „direkter Zugriff“, „Direktzugriff“) wird in der Informatik die Möglichkeit verstanden, in konstanter (oder unter-linearer) Zeit einen lesenden und/oder schreibenden Speicherzugriff auf ein beliebiges Element eines Datenspeichers oder einer Datenstruktur durchführen zu können.
Wie sieht die Speicherhierarchie aus?
CPU-Register
Cache
Primärspeicher (Haupspeicher, flüchtiger Speicher)
Sekundärspeicher (z.B. Magnetplatte, langfristige Speicherung)
Teritärspeicher (Medien wie CD, DVD, USB)
Welche Eigenschaft hat die Speicherhirachie?
zwei Beziehungen:
1. Was im Primärspeicher keinen Platz findet, kommt in den Sekundärspeicher, was dort nicht hineinpasst steht im Teritärspeicher.
- Jede Speicherschicht fungiert als Cache für die Schicht unter ihr
Wenn man über ein Ein-/Ausgabegerät spricht, meint man eigentlich ein virtuelles Gerät, warum?
Trennung von Hardware und Software
Welche Teile hat ein virtuelles Gerät?
Gerätetreiber (Software, Teil des Betriebssystems)
Controller (elektronisch)
Gerät (mechanisch)
Welche Aufgaben haben die einzelnen Teile eines virtuellen Geräts?
Gerätetreiber:
Die Anwendungsprogramme und andere Teile des Betriebssystems können nur über den Gerätetreiber auf das Gerät zugreifen.
Controller:
Der Gerätetreiber kommuniziert zur mit dem Controller, nicht mit dem Gerät. Zu diesem Zweck besitzt der Controller mehrere Register
Was sind die Vorteile eines virtuellen Gerätes? Was ist der Vorteil des Schichtenmodells?
Abstraktion
Kapselung (Geheimnisprinzip)
Die Implementierung einer einzelnen Schicht ist verhältnismäßig einfach, weil nur die beiden Schnittstellen zur nächsthöheren und zur nächsttieferen Schicht realisiert werden müssen und im Innern der Schicht nur klar umrissene Teilaufgaben gelöst werden müssen.
Wie kommuniziert die CPU mit einem Gerät?
Über den Controller, zwei Möglichkeiten:
- Für die Kommunikation mit dem Controller hat jedes seiner Register eine Portnummer als Adresse, mit der die CPU das Register ansprechen kann.
- speicherabgebildete Ein-/Ausgabe (memory-mapped I/O). Ein Teil des Hauptspeichers wird für die Speicherung von Inhalten der Register von Controller reserviert.
Wie kommuniziert der Treiber mit dem Controller?
über die Register des Controllers:
- Datenausgangsregister: Treiber schreibt Daten rein, die für Controller sind
- Dateneingangsregister: Controller schreibt Daten rein, für Treiber
- Statusregister: Treiber kann Zustand des Geräts abfragen
- Kontrollregister: Treiber hinterlegt Befehle für den Controller
Welche Register hat der Controller?
unter anderem
- Datenausgangsregister Treiber schreibt - Controller liest
- Dateneingangsregister: Controller schreibt - Treiber liest
- Statusregister: Treiber kann Zustand gerät erfragen
- Kontrollregister: Treiber hinterlegt Befehle an den Controller
Was ist memory-mapped I/O?
Technik für die Kommunikation zwischen CPU und Controller, die speicherabgebildete Ein-/Ausgabe.
En Teil des Hauptspeichers wird für die Speicherung von Inhalten der Register vom Controller reserviert.
Welche Möglichkeit hat die CPU, zu erfahren, ob ein z.B. Leseauftrag schon fertig ist?
Sie liest das Statusregister des Controllers aus
Wie kann die CPU wissen, welcher z.B. Leseauftrag fertig ist?
Durch einen Lesebefehl im Statusregister des Controllers
Was ist polling?
Abfragebetrieb, zyklische Abfrage
Was ist der Nachteil der Polling-Technik?
busy waiting - viel CPU Zeit
Was ist eine Hardware-Unterbrechung?
Unterbrechung, die druch ein externes Gerät verursacht wird (Auftrag ausgeführt, oder Fehler)
nicht reproduzierbar
Wie funktioniert eine Unterbrechung?
- CPU hat Eingang für Unterbrechungen
- Jede Hardwarekomponente kann über Bus ein binäres Signal an diesen Eingang hiterlegen.
- CPU entdeckt Unterbrechungssignal, und rettet den Inhalt ihres Befehlzählregisters (Adresse des nächsten auszuführenden Befehls) in Haupspeicher
- CPU lädt Anfangsadresse der Prozedur zur Unterbechungsbehandlung (interrupt handler)
- Interrupt handler stellt fest, welches Gerät Unterbrechung anfordert
- Die Nummer des Geräts wird nun als Index für den Unterbrechungsvektor verwendet (array der Adressen)
- hier wird die Startadresse der Unterbrechungroutine für das individuelle Gerät gefunden.
- Adresse wird ins Befehlszählregister geladen und die Unterbrechungsroutine wird gestartet.
-> aktiviert immer das Betriebssystem bei Unterbrechung da Unterbrechungsvektor und Unterbrechungsroutinen teile des Betriebssystem sind
Welche Funktionen hat der Unterbrechungsvektor?
ist ein array der Adressen. Mithilfe des Geräteindexes kann man die Startadresse der Unterbrechungsroutine des Geräts im Unterbrechungsvektor finden.
Da Unterbrechungsvektor Teil des Betriebssystems -> Aktivierung des Betriebssystems bei Unterbrechung
Was macht eine Unterbrechungsroutine?
Die Unterbrechungsroutine hat die Aufgabe, den Unterbrechungswunsch des Geräts zu bearbeiten.
Wie kann die CPU die entsprechende Unterbrechungsroutine finden?
Der Index des Geräts wird im Unterbrechungsvektor gefunden
Welche Aufgabe hat das Betriebssystem bei einer Unterbrechung?
Die Unterbrechungsroutine und der Unerbrechungsvektor gehören zum Betriebssystem.
Dies stellt sicher, dass das Betriebssystem aktiviert wird, und somit die Kontrolle der CPU behält
Warum muss der laufenden Prozess gerettet werden, bevor eine Unterbrechung bearbeitet werden soll?
Da die Unterbrechungsroutine in den das Befehlszählregister geladen wird, somit würde der laufende Prozess gelöscht werden und nach der Unterbrechung nicht mehr ausgeführt werden.
Wie kann man mit mehreren Unterbrechungen umgehen?
hier gibt es zwei Möglichkeiten
- der Unterbrechungseingang wird vorübergehend außer betrieb gesetzt, so dass weitere Unterbrechungssignale wirkungslos bleiben
- Priorisierung der Unterbrechungen
Polling ist ein aktives Warten und es ist ineffizient. Aber die CPU muss nach jeder Ausführung eines Befehls überprüfen, ob ein Unterbrechungssignal vorliegt. Ist das auch ein aktives Warten?
Was ist aber der Unterschied zu polling?
Es stimmt zwar, dass beim regelmäßigen Überprüfen des Unterbrechungseingangs ein Abfragebetrieb vorliegt; diese Abfragen erfolgen aber im Innern der CPU und benötigen deshalb viel weniger Zeit als das Lesen des Statusregisters eines Controllers. Denn selbst bei speicherabgebildeter Ein-/Ausgabe werden hierfür mehrere CPU-Befehle benötigt.
Warum ist die Unterbrechung für ein Betriebssystem so wichtig?
Damit es die Kontrolle über die CPU behält
Warum brauchen wir den Unterbrechungsmechanismus?
Damit das Betriebssystem aktiviert wird und damit die Kontrolle über die CPU übernimmt
Welche Unterbrechungen gibt es?
Hardwareunterbrechung - nicht reproduzierbar
Softwareunterbrechung (Trap) reproduzierbar
Was ist der Unterschied zwischen
Hardware-Unterbrechung und Software-Unterbrechung?
Hardware-Unterbrechung:
wird durch externes Gerät verursacht - nicht reproduzierbar
Software-Unterbrechung:
wird von einem gerade ausgeführten Programm verursacht - reproduzierbar
Wie funktioniert ein Systemaufruf?
- Systemaufruf führt trap aus - diese löst Unterbrechung aus
- Befehlszähler und Regiserinhale werden gerettet
- Routine des Betreibssystems wird für den übergebenen Parameter gestartet
- Bei systemaufrufen werden meistens Daten an das aufrufende Programm zurückgegeben
Welche Aufgaben der Betriebssysteme werden
durch den Unterbrechungmechnismus bewältigt?
- Faires Scheduling (Jedem Prozess wird in endlicher Zeit Rechenzeit der CPU zugeteilt)
- Ausnahmebehandlung
- Speicherschutz
- Systemaufruf
Welche Zwecke hat die Unterbrechung?
- Speicherschutz
- Ausnahmebehandlung
- Wechsel in Benutzer- Systemmodus
- Kommunikation mi IO-Geräten
- Scheduling
Was ist der Unterschied zwischen der programmierten Ein-/Ausgabe und
DMA? Wie arbeiten die zwei Techniken?
unterbrechungsgesteuerte Ein-/Ausgabe:
Controller schreibt jeweils ein Wort in Dateingangsregister und löst Unterbrechung aus.
Gerätetreiber wird gestartet und veranlasst, das Wort von der CPU in den Hauptspeicher geschrieben wird
-> CPU wird bei jedem Wort unterbrochen
DMA, direkter Speicherzugriff:
spezieller DMA-Controller, der selbstständig über den Bus Daten in den Hauptspeicher übertragen kann, ohne die CPU zu bemühen.
Warum kann DMA die CPU stören?
. Auch bei Einsatz des DMA-Verfahrens kann es zu Verzögerungen in der Arbeit der CPU kommen, weil der DMA-Controller während der Übertragung den Bus besetzt hält, die CPU also nicht auf den Hauptspeicher zugreifen kann.
Wie viele Register muss der DMA haben, damit er seine Aufgabe
machen kann?
- Speicheradressregister
- Bytezählregister
- ein oder mehrere Kontrollregister
Wie funktioniert ein Booting-Vorgang?
Der Ur-Lader (spezieller Teil des Hauptspeicher) lädt zunächst den eigentlichen Lader von der Magnetplatte.
Der Lader wird nun gestartet und lädt die wesentlichen eile des Betriebssystems in den Hauptspeicher
Was ist der Unterschied zwischen System- und Benutzermodus?
Alle Anwendungsprogramme laufen im Benutzermodus.
privilegierte Maschinenbefehle können nur im Systemmodus ausgeführt werden
Wozu ist es gut, dass es System- und Benutzermodus gibt?
Schutz von Speicher und Geräten
Wann findet die Umschaltung der Modi statt?
Wenn eine Unterbrechung bei einem Zugriff auf Haupt- oder Sekundärspeicher ausgelöst wird.
die privilegierte Prodzedur zur Unterbrechungsbehandlung schaltet den Prozessor in den Systemmodus
Welche Beziehung hat eine Unterbrechung mit einem Moduswechsel?
Wenn eine Unterbrechung auftritt, schaltet die priviligierte Prozedur zur Unterbrechungsbehandlung den Przessor in den Systemmodus und startet dann die entsprechende Unterbrechungsroutine
Wie wird der Schutz eines Adressraums eines Prozesses realisiert?
Bevor ein Programm gestartet wird, weist ihm das Betriebssystem einen Adressraum zu.
Programm hat nur auf seinen eigenen Adressraum Zugriff.
Wann immer das Programm zur Laufzeit versucht, auf eine Speicherzelle zuzugreifen, wird zunächst überprüft, ob die angegebene Adresse im erlaubten Bereich liegt. - nur dann Speicherzugriff, sonst Softwareunterbrechung
Was ist eine relative Adresse?
Wenn ein Programm vom Compiler in Maschinensprache übersetzt wird, steht noch nicht fest, wo im Hauptspeicher der Adressraum des Programms später liegen wird.
Der Compiler kann deshalb an die Befehle und die Daten zunächst eine relative Adresse vergeben
Welche Vorteile haben relative Adressen?
Wenn ein Programm vom Compiler in Maschinensprache übersetzt wird, steht noch nicht fest, wo im Hauptspeicher der Adressraum des Programms später liegen wird. Der Compiler kann deshalb an die Befehle und die Daten zunächst nur relative Adressen vergeben
Was ist eine absolute Adresse?
Die absolute Adresse berechnet sich nach der Formel
absolute Adresse = (Basisregister)+relative Adresse und wird erst zur Laufzeit vergeben
Welche Adresse kennen Prozesse?
die logische Adresse, da das Betriebssystem die physische Adresse erst zur Laufzeit berechnet, uns sich die physische Adresse auch ändern kann
Was ist ein Prozess?
Ein Prozess ist ein Programm in Ausführung
Was ist der Unterschied zwischen Programm und Prozess?
Ein Programm ist eine den Regeln einer bestimmten Programmiersprache genügende Folge von Anweisungen.
Ein Prozess ist ein Programm in Ausführung
Was gehört zu einem Prozess?
- Programmstück
- Programmkontext bestehend aus
- Registerinhalten
- Befehlszähler
- Grenzen des Adressraums
- Prozessnummer
- Priorität
Welche Informationen sind wichtig für einen Prozess?
- Adressraum
- Registerinhalt
- Priorität
- Zustand
- Zugriffsrechte
- Prozess-ID
- Befehlszähler
Wo werden die Informationen gespeichert, die für einen Prozess wichtig sind?
Prozesskontrollblock
Welche Zustände hat ein Prozess?
- erzeugt
- bereit
- blockiert
- rechnend
- beendet
Zeichnen Sie das Prozesszustandübergangsdiagramm!
Erklären Sie die Zustände und die Übergänge!
Nach der Erzeugung eines Prozesses, erhält er vom Betriebssystem die benötigten Ressourcen, wie z.B. einen Speicherbereich, den Prozesskontext und den PCB zugeteilt. Nun ist der Prozess bereit für die Bearbeitung und er geht in den Zustand bereit. Bei Einprozessorsystemen ist genau ein Prozess rechnend. Jeder andere existierende Prozes ist entweder bereit und bewirbt sich mit den übrigen bereiten Prozessen um die Zuteiltung der CPU oder er ist blockiert (wartet auf E/A oder ein bestimmtes Ereignis).
Was ist die Ursache, dass ein Prozess den Zustand wechselt?
erzeugt->bereit: wenn er die benötigten Resourcen vom Betriebssystem erhält
bereit -> rechnend: das Programm des Prozessors wird gerade von der CPU ausgeführt
bereit -> blockiert: wartet auf Ein-/Ausgabeanforderung oder auf ein bestimmtes Ereignis
rechnend -> beendet: wenn fertig
rechnend -> bereit: Prozess gibt CPU ab/CPU wird entzogen
Bei einem Einprozessorsystem läuft zu jedem Zeitpunkt genau ein Prozess.
Warum laufen die Prozesse trotzdem scheinbar parallel?
Der Eindruck von Gleichzeitigkeit entsteht dadurch, dass der Scheduler in schnellem Wechsel jedem bereiten Prozess ein gewisses Quantum an Rechenzeit zukommen lässt
Was macht der Scheduler?
.Der Scheduler legt die Strategie für die Rechenzeitvergabe fest
Wer entscheidet, welcher Prozess vom
Zustand bereit in den Zustand rechnend geht?
Welcher der bereiten Prozesse als nächster rechnen darf, entscheidet der CPU-Scheduler
Warum geht ein Prozess vom Zustand rechnend in den Zustand bereit?
Er muss irgendwann die CPU wieder abgeben
Welche zwei Möglichkeiten gibt es, dass ein Prozess vom Zustand rechnend in den Zustand bereit geht?
- Prozess gibt CPU freiwillig ab -> kooperativ
- CPU wird dem Prozess entzogen -> präemptiv
Warum geht ein Prozess nicht vom Zustand blockiert in den Zustand rechnend?
Was kann die Konsequenz sein, wenn das so wäre?
der Prozess muss sich wieder um die CPU bewerben.
Wenn der Prozess direkt in den Zustand rechnend gehen würde, hätte der Scheduler nicht mehr die Kontrolle
Welche Scheduling-Algorithmen gibt es?
nicht präemptiv:
- FCFS (first-come, first-served)
- SJF (Shortest job firs)
präemtiv
- Round Robin: Jeder Prozess im Zustand bereit bekommt vom Scheduler Zeitscheibe derselben Dicke, Prozesse werden reihum bedient
- Verbesserung Round Robin: Zeitscheibe hängt von Priorität ab
- Round Robin + dynamische Vergabe der Priorität
Wie funktioniert die SJF-Strategie?
die Prozesse im Zustand bereit werden in der Reihenfolge aufsteigenden Rechenzeitbedarfs bearbeit
Welche theoretische Eigenschaft hat die SJF-Strategie?
sehr effizient, wenn die benötigte Rechenzeit voraussagbar ist
Für welchen Betrieb ist die SJF-Strategie geeignet?
Warum?
Stapel- oder Batch-Betrieb.
keine Interaktion mit dem Benutzer und sind regelmäßig auszuführen, so dass man ihre Laufzeiten in etwa kennt
Welche Strategie benutzt man für einen Time-Sharing-Betrieb?
Round Robin
Wer macht der Prozesswechsel?
Der Dispatcher
Wie wird ein Prozess gestoppt, wann darf er weiter rechnen?
- Der Zeitgeber (Timer) wacht darüber, dass der Prozess sein Quantum nicht überschreitet
- Die Dicke der zugewiesenen Zeitscheibe wird in einem Register des Zeitgebers gespeichert
- Nach jeder verstrichenen Zeiteinheit wird der Inhalt dieses Registers um eins verringert
- Ist der Wert bei null angekommen, so ist die zugewiesene Zeitscheibe abgelaufen, und der Zeitgeber löst eine Unterbrechung der CPU aus.
- Der Prozess wird unterbrochen und wird wieder in die Menge der bereiten Prozesse eingereiht
Welche Hardware wird für den Prozesswechsel eingesetzt?
Timer=Zeitgeber
Warum braucht das Betriebssystem einen Timer?
Der Timer erlaubt dem Betriebssystem, Aufgaben regelmäßig zu erledigen. Dazu werden laufende Programme unterbrochen.
Welche Aufgaben hat der Dispatcher?
Der Dispatcher führt den eigentlichen Kontextwechsel (Umschalten zwischen Prozessen) durch
Was macht genau der Dispatcher?
Im Rahmen der Prozessverwaltung eines Betriebssystems dient der Dispatcher dazu, bei einem Kontextwechsel dem derzeit aktiven Prozess die CPU zu entziehen und anschließend dem nächsten Prozess die CPU zuzuteilen
Beschreiben Sie den Vorgang eines Prozesswechsels
Timer: Die Dicke der zugewiesenen Zeitscheibe (Quantum) wird in einem Register des Zeitgebers gespeichert, nach jeder verstrichenen Zeiteinheit wird der Inhalt des Registers um eins verringert
Unterbrechung: Ist der Wert bei 0 angekommen, löst Timer eine Unterbrechung aus. (Kontext des Prozesses wird gerettet)
Unterbrechungsvektor: Mithilfe des Unterbrechungsvektors wird die Unterbrechungsroutine des Prozesses gestartet.
Unterbrechungsroutine: arbeitet den Auftrag (bis zur nächsten Unterbrechung) ab.
Scheduler: legt die Strategie für die Rechenzeitvergabe fest
Dispatcher: führt den eigentlichen Kontextwechsel durch
Wie groß sollte man eine Zeitscheibe wählen?
zu dick: Prozesse mit großem Ein-/Ausgabebedarf können von lagen Zeitscheiben nicht profitieren
zu dünn: CPU verbringt zuviel Zeit für unproduktive Kontextwechsel
Was ist das Problem mit zu großer oder zu kleiner Zeitscheibe?
zu dick: Prozesse mit großem Ein-/Ausgabebedarf können von lagen Zeitscheiben nicht profitieren
zu dünn: CPU verbringt zuviel Zeit für unproduktive Kontextwechsel
Wie wird der Zugriff auf ein Gerät im Time-Sharing-Betrieb vom Betriebssystem organisiert?
Im Time-Sharing-Betrieb kann es vorkommen, dass viele Prozesse kurz nacheinander auf ein Gerät zugreifen wollen. Deshalb wird zu jedem Speichergerät eine eigene Geräte-Warteschlange eingerichtet, an die der E-/A-Teil des Betriebssystems Aufträge anhängen kann, jeder Auftrag wird mit der Nummer des Prozesses versehen. Der Gerätetreiber holt die Aufträge einzeln aus der Warteschlange ab und führt sie dem Controller zu.
Wie funktioniert es mit dem Drucken?
Bei Druckern werden die Ausgaben zunächst nach Prozessen getrennt in einer Spooler-Datei gesammelt, die erst dann gedruckt wird, wenn der Prozess seine Druckausgabe abgeschlossen hat.
Was macht ein Programm, wenn es einen Block auf der Festplatte lesen möchte?
Wie wird eine read-Operation ausgeführt?
https://www.dropbox.com/s/ae03uwza5jub4w8/MM_Systemaufruf_read.jpg?dl=0
Wir nehmen an, dass ein Programm einen read(f,b)-Befehl bei dem Datensatz b von der Datei f ausführt.
Wie kann dieser Lese-Befehl beim Gerätetreiber und Controller aussehen?
Der Gerätetreiber kennt nur die logische Blocknummer,
der Controller kennt nur die Zylinder-, Platten- und Sektornummer
Wie sieht die Struktur des Betriebssystems UNIX aus?
Schichtenmodel:
Benutzerschnittstelle: Benutzer kann mithilfe der Benutzerschnittstelle Dienstprogramme (Shell, Editor, Compiler) auf das Betriebssystem zugreifen
oder
Programmierschnittstelle: Anwendungsprogramme greifen auf das Betriebssystem mithilfe der Programmierschnittstelle zu
Die Schnittstelle zum Betriebssystem ist definiert durch Systemaufrufe (open, close, read, write, fork)
Betriebssystem kommuniziert dann mit der Hardware (CPU, IO-Geräte, Hauptspeicher,…)
Was bieten die Programmierschnittstelle und Benutzerschnittstelle an?
Programmierschnittstelle:
Stellt die Dienste des Betriebssystems für die Programme zur Verfügung (Systemaufrufe)
Benutzerschnittstelle:
Gesamtheit aller Systemprogramme oft mit GUI realisiert
Welche Hardware-Komponente unterstützt das Betriebssystem beim Speicherschutz?
Die MMU Memory Management Unit, enthalten in der CPU, ist für die Umrechnung der logischen in die physischen Adressen zuständig
Welche Adresse enthält das Basisregister?
Das Basisregister enthält die kleinste erlaubte physische AdresseDas Basisregister enthält die kleinste erlaubte physische Adresse
Warum müssen die logischen Adressen kleiner sein als der Inhalt des Grenzregisters?
Der Speicherschutz wird so gewährleistet und es wird gleichzeitig erreicht, dass die Abbildung auf die physischen Adressen flexibel ist, das heißt, dass Programme relokierbar bleiben
Wie ist das Vorgehen, wenn der Hauptspeicher zu klein wird, um alle Adressräume aufzunehmen?
In diesem Fall werden einige bereite oder blockierte Prozesse mit einem Abzug ihres Adressraums in den Externspeicher ausgelagert.
Was entscheidet über die Auslagerung eines Prozesses in den Externspeicher?
Der Langzeit-Scheduler
Kann einen ausgelagerten Prozess wieder rechnen lassen?
Nein- Bevor ein ausgelagerter Prozess weiterreichten kann, muss er erst wieder eingelagert werden
Was ist swapping?
Der Vorgang des Aus- und Einlagerns von Prozessen
Muss ein Prozess beim Einlagern wieder exakt an die selbe Stelle im Hauptspeicher, an der er vorher gestanden hat, geschrieben werden?
Nein- Beim Einlagern ist es dank der Relokierbarkeit nicht notwendig, den Prozess an exakt dieselbe Stelle im Hauptspeicher zu schreiben, an der er vorher gestanden hat
Was ist externe Fragmentierung?
Durch das ein und Auslagern der Prozesse ändert sich ständig die Menge der existierenden Prozesse. So entstehen zwischen den Adressräumen der Prozesse im Hauptspeicher zwangsläufig Lücken. Dieses Phänomen nennt man externe Fragmentierung.
Welche Strategien gibt es, um die externe Fragmentierung auszugleichen?
- Kompaktifizierung:
Die im Hauptspeicher eingelagerten Prozesse werden hin und wieder zusammen geschrieben - mit hohem Aufwand verbunden - Segmentation:
Jedem Prozess werden mehrere zusammenhängende Segmente im Hauptspeicher zugewiesen, die unterschiedlich lang sein dürfen. - Paging:
Der Hauptspeicher wird in viele kleine Stücke gleicher Größe aufgeteilt und jedem Prozess werden die erforderliche Anzahl solcher Stücke zugewiesen. Diese Stücke brauchen dabei im Hauptspeicher nicht hintereinander zu liegen.
Was versteht man unter paging?
Eine Lösung für die externe Fragmentierung:
Man teilt den logischen Speicher in gleichgroße Stücke auf, die Seiten (Pages) genannt werden. Der physische Speicher wird in Seitenrahmen (frames) aufgeteilt. Eine Seite passt genau in einen Seitenrahmen. Die Seitentabelle (page table) legt fest, welche Seite in welchem Seitenrahmen steht und liefert damit eine Abbildung vom logischen auf den physischen Speicher.
Wo befindet sich die Seitentabelle (paging)?
Die Seitentabelle ist Teil des Prozesskontextes.
Was ist die interne Fragmentierung?
Im Falle von paging, kann es vorkommen, dass ein Prozess eine Seite nur zum Teil beschreibt, dann bleibt dieser „Seitenrest“ ungenutzt.
Welche Auswirklungen hat es, wenn man die Seiten sehr groß oder sehr klein auslegt (paging)?
Wenn die Seiten des Hauptspeichers sehr groß sind, werden zwar die Seitentabellen der Prozesse kürzer, aber die interne Fragmentierung steigt. Sind die Seiten dagegen sehr klein, so werden die Seitentabellen lang, und dadurch sinkt die Effizienz der Speicherzugriffe.
Da die Seitentabellen oft recht groß werden, schnelle Hardwareregister jedoch teuer sind, hält man oft die gesamte Seitentabelle im Hauptspeicher und sieht im Prozessor einen Registersatz als Cache-Speicher für einige Einträge der Seitentabelle vor. Angenommen, die Zugriffszeiten für einen solchen Cache und den Hauptspeicher betragen 20 ns und 100 ns. Um wieviel Prozent steigt die durchschnittliche Zeit für einen Zugriff gegenüber einem System ohne Paging, wenn die Trefferrate für den Cache 80% (98%) beträgt?
Ein Speicherzugriff dauert 120 ns, wenn sich die Seitenrahmennummer im Cache befindet:
20 ns für den Cachezugriff plus 100 ns für den Zugriff auf das Datum im Hauptspeicher. Liegt die Seitenrahmennummer nich Tim Cache, so muss diese erst aus dm Hauptspeicher gelesen werden, was die Zugriffzeit um 100 ns auf 220 ns erhöht. Natürlich muss die Seitenrahmennummer noch in den Cache geschrieben werden. Also beträgt die Zugriffszeit insgesamt 240 ns.
Bei einer Trefferrate von 80% kann die Seitenrahmennummer mit einer Wahrscheinlichkeit von 0.8 aus dem Cache gelesen werden, mit einer Wahrscheinlichekit von 0.2 muss aus dem Hauptspeicher gelesen werden. Insgesamt ergibt sich für die durchschnittliche Zugriffszeit
0.8120ns+0.2240ns =122.4 ns
Hier also eine Zunahme von 22,4%
Ist es möglich, dass mehrere Prozesse auf einen gemeinsamen Speicherbereich zugreifen können?
Ja, man kann auch „öffentliche“ Bereiche einrichten, die von mehreren Prozessen gemeinsam benutzt werden können. Es genügt hierfür, bei jedem Segment oder jeder Seite zu vermerken, welche Prozesse Schreib- oder Leserecht daran haben.
Bspl:
Das Code-Segemnt eines Pascal-Compilers kann von mehreren Anwendern gleichzeitig benutzt werden, ohne dass jeder Prozess eine eigene Kopie des Compilerprogramms benötigt. Natürlich benötigt jeder Prozess sein eigenes Datensegment und Stacksegment. Außerdem kann man gemeinsame Speicherbereiche für die Kommunikation zwischen Prozessen benutzen.
Was ist ein virtueller Speicher (Virtual Memory)
Der virtueller Speicher kombiniert zwei Ansätze:
- Die Einteilung des physischen Speichers in Seiten
- die Idee, nur die Informationen im Hauptspeicher zu halten, die gerade benötigt werden.
Was sind die Vorteile bei einem virtuellen Speichers?
- Es können beliebig große logische Adressräume verwendet werden, ohne auf physische Grenzen achten zu müssen
- Ein breiter Prozess wird rechnend gemacht, auch wenn nicht alle seine Seiten in Seitenrahmen des Hauptspeichers stehen. Die fehlenden Seiten stehen im Sekundärspeicher und sind in der Seitentabelle entsprechend markiert.
Wie wird ein Zugriff auf eine Seite, die nicht im Hauptspeicher steht genannt, was passiert dann?
Seitenfehler
In diesem Fall wird eine Software-Unterbrechung (trap) ausgelöst. Die fehlende Seite wird von der Festplatte gelesen, danach kann der Prozess weiterreichten.
Diese Technik wird als demand paging bezeichnet
Wenn für einen Prozess nur eine bestimmte Anzahl von Seitenrahmen reserviert sind, kann es beim Einlesen einer Seite vorkommen, dass kein Rahmen mehr frei ist.
Wie kann dieses Problem gelöst werden?
Es muss eine andere Seite in den Sekundärspeicher ausgelagert werden. Für die Wahl der auszulagernden Seite gibt es verschiedene Strategien.
Was versteht man unter „Buddy Strategie“
Der Hauptspeicher besteht aus zusammenhängenden Stücken, die jeweils eine Zweierpotenz viele Seiten enthalten. Ein Stück ist entweder belegt oder frei. Wenn der Allokierer einen zusammenhängenden Bereich einer bestimmten Länge benötigt, nimmt er das kleinste freie Stück, das mindestens die erforderliche Länge aufweist.
Wenn es mehr als doppelt so lang ist wie der benötigte Bereich, so wird es halbiert, das eine halbe Stück wird benutzt, das andere - sein Buddy - bleibt frei. Wann immer ein Prozess terminiert und dadurch zwei bündiges frei werden, so Werden Sie wieder verschmolzen.
Was versteht man unter „kritischer Abschnitt“?
In der Informatik dient ein kritischer Abschnitt (engl. ‚critical section’) zur Kennzeichnung einer Ansammlung von Programmanweisungen zum Zwecke der Ablaufsteuerung. In ihm darf sich zu einer Zeit nur ein einziger Prozess/Thread aufhalten
Wie vermeidet man, dass zwei Prozesse zu selben Zeit in ihren kritischen Abschnitt eintreten?
Die Prozesse müssen synchronisiert werden.
Welche Möglichkeiten gibt es um Prozesse zu syncronisieren?
(Wiki) Lösungskonzepte für das Problem des Kritischen Abschnitts: Semaphor Mutex Lock Monitor
Wie funktioniert das Konzept des Semaphors?
Ein Semaphor S kann als abstrakter Datentyp spezifiziert werden. Der Zustand von S besteht aus der Anzahl freier Betriebsmittel, gespeichert in einer Zählervariablen count und eine Prozessmenge W. Falls count ≠ 0, so ist W leer, ansonsten enthält W alle Prozesse, die sich bisher vergeblich um ein Betriebsmittel bemüht haben und darauf warten, dass wieder eines frei wird.
Auf S sind zwei Operationen definiert, down und up.
Down: wird aufgerufen wenn ein Prozess ein Betriebsmittel benutzen will count-1
Up: wird aufgerufen wenn ein Prozess sein Betriebsmittel wieder freigibt.
Count+1
Mit welchem Befehl kann man sich in Unix eine Liste aller existierenden Prozesse und ihren Ressourcen Verbrauch ausgeben lassen?
Mit dem Befehl top
Was sind leichtgewichtige Prozesse (Threads)?
Wiki:
Ein (Kernel-)Thread ist ein sequentieller Abarbeitungslauf innerhalb eines Prozesses und teilt sich mit den anderen vorhandenen Threads (multithreading) des zugehörigen Prozesses eine Reihe von Betriebsmitteln:
Mehrere leichtgewichtige Prozesse (LWPs) teilen sich ein Programm, einen Adressraum und dieselben Dateien. Jeder LWP hat aber seine eingeben Registerinhalte - insbesondere seinen eigenen Befehlszähler und Stapel.
Wie bezeichnen wir eine Gruppe von leichtgewichtigen Prozessen?
Task (Aufgabe)
Schlage eine Anwendung vor, die von der Benutzung von Threads profitiert und eine, bei der dies nicht der Fall ist
Anwendungen für Threads sind z.B.
- einfache Parallelisierung von Programmen auf Mehrprozessorrechnern. Verschiedene Threads können jeweils einem eigenen Prozessor zugewiesen werden.
- Gerätetreiber für langsame Geräte. Der Prozessor im Controller kann schon die nächste Anfrage (Thread) bearbeiten, falls der Lese/Schreibkopf für die vorherige Anfrage positioniert wird, d.h. Die vorherige Anfrage (Thread) im Zustand blockiert ist
_ verteilte (Client/Server) Systeme. Ein Server bietet seine Dienste verschiedenen Clients an und nutzt dabei für jeden Client einen Thread.
Threads sind immer dann ungeeignet, wenn Daten lokal manipuliert werden müssen. Eine andere Art von Gegenbeispielen sind selbstmodifizierende Programme, die bei der Ausführung ihr eigenes Codesegement verändern. Solche Programme kann man z.B in Lisp oder Smalltak schreiben.
Wieviele Möglichkeiten gibt es, leichtgewichtige Prozesse zu implementieren?
2 Möglichkeiten:
1. Kernel-Threads werden im Betriebssystemkern realisiert.
- Benutzer-Threads hingegen im privaten Speicherbereich eines Prozesses.
Es gibt ebenso Mischformen aus beiden Implementierungen.
Was ist der Unterschied zwischen Kernel-Thrads und Benutzer-Treads?
Bei einer Implementierung als Kernel-Threads im Betriebssystemkern werden die leichtgewichtigen Prozesse genau wie die schwergewichtigen behandelt. Insbesondere wird jeder Prozesswechsel und das Scheduling vom Kern ausgeführt. Diese Situation liegt zum Beispiel in Linux vor. Bei der Generierung eines leichtgewichtigen Prozesses verwendet man nicht den Befehl fork, sondern Clown. Hierdurch wird ein Kindprozess erzeugt, der nicht nur sein Programm sondern auch seinen Speicherbereich vom Erzeugerprozess erbt.
Benutzer-Trhreds hingegen werden mit Hilfe von Bibliotheksprozeduren auf Benutzerebene implementiert. Wann immer ein LWP einen Systemaufruf ausführen möchte - zum Beispiel eine Semaphoroperation- so ruft er statt dessen eine Bibliothesprozedur auf. Sie entscheidet, ob der Leichtgewichtige Prozess suspendiert werden muss. Wenn das der Fall ist, vertauscht die Bibiliotheksprozedur die aktuellen Registerinhalte mit denen eines anderen bereiten LWPs, ohne dass der Betriebssystemkern involviert wird. Das Betriebssystem weiß also gar nichts von der Existenz der leichtgewichtigen Prozesse und behandelt den gesamten Task wie einen einzigen schwergewichtigen Prozess. So ergeben sich sehr kurze Umschaltzeiten beim Wechsel zwischen den leichtgewichtigen Prozessen. Außerdem lässt sich das Scheduling der LWPs bei diesem Ansatz von Benutzer steuern.
Welchen Nachteil haben Benutzer-Threads gegenüber Kernel-Threads?
Wenn ein leichtgewichtiger Prozess einende Tasks eine blockierenden Systemaufruf durchführt, wird der gesamte Task blockiert. Bei einer Implementierung leichtgewichtiger Prozesse im Betriebssystemkern könnte dagegen jetzt ein anderer LWP desselben Tasks rechnend gemacht werden.
Welche Art der Implementierung leichtgewichtiger Prozesse ist beim Dateiserver vorzuziehen?
Beim Dateiserver macht die Verwendung leichtgewichtiger Prozesse nur Sinn, wenn sie im Betriebssystemkern implementiert werden. Denn nahezu jeder Systemaufruf dient der Ein-/Ausgabe und ist somit blockierend. Bei einer Implementierung der LWPs mit Bibliotheksprozeduren auf Benutzerebene wäre dann immer der gesamte Server blockiert.
Angenommen Task T1 erhält nur einen leichtgewichtigen Prozess, und Task T100 enthält 100 LWPs. Wieviel CPU-Zeit entfällt bei den beiden Implementierungsarten auf diese Tasks, wenn wir round-Robin-Scheduling voraussetzen.
Bei Implementierung leichtgewichtiger Prozesse im Kern werden alle LWPs gleich behandelt, hier enthält also Task T100 einhundertmal so viel Rechenzeit wie Task T1. Wenn aber die leichtgewichtigen Prozesse auf Benutzerebene implementier sind, werden die beiden Tasks als schwergewichtige Prozesse angesehen und gleich behandelt. Hier bekommen beide gleich viel CPU-Zeit. Wie die zugewiesene Rechenzeit innerhalb von T100 an die 100 LWPs verteilt wird, hängt vom Scheduling auf Benutzerebene ab.
Beschreibe was eine Datei ist.
Eine Datei ist eine Folge von Datensätzen, die zusammengehörige Information enthalten.
Mit welchem Befehl kann man sich in Unix den nNamen einer Datei ausgeben, in dem man sich befindet?
PWD (print working directory)
Mit welchem Befehl kann man sich in Unix die Objekte ausgeben lassen, die im aktuellen Verzeichnis enthalten sind?
Mit dem Befehl ls.
Welche Ausgabe erzeugt der Befehl ls-ls?
Eine Liste des aktuellen Verzeichnisses mit folgenden Attributen:
- Größe in Blöcken
- Eine Kombination:
erste Buchstabe „d“= Directory „-„ = Datei;
Folgende 9 Buchstaben: beschreiben die Zugriffsberechtigungen für die verschiedenen Benutzerklassen in der Reihenfolge:
rwxrwxrwx
u g o - Anzahl der Verweise auf das Objekt
- Größe des jeweiligen Objekts
- letzter schreibender Zugriff
- Objektname
Übungsaufgabe 2.10.
Können Sie bei diesem Beispiel die Blockgröße in Byte bestimmen? Wie erklären sie sich die Abweichungen?
Block Größe in Bytes
8 4038
60 29718
4 1730
Teilt man die für die ersten drei Dateien jeweils die Größe in Byte durch die Größe in Blöcken, so ergeben sich die Quotienten 504,75, 495,17 und 432,5. Geht man davon aus, dass die Blockgröße in Byte eine Zweierpotenz ist, so kommt nur 512 in Frage. Die Abweichungen der Quotienten sind dann durch interne Fragmentierung erklärbar. Der letzte Block ist nicht vollständig belegt. Betrüge aber die Blockgröße 1024 Byte, so wären zum Beispiel bei der 3. Datei 4x1024-173 = 2366 Bytes ungenutzt, also mehr als zwei Blöcke. Das ist bei einem sparsam wirtschaftenden Dateisystem unmöglich.
Wie werden in Unix die Zugriffsrechte auf eine Datei oder ein Verzeichnis festgelegt?
Es werden die Systembenutzer in drei Klassen unterteilt:
User -> Eigentümer des Objekts
Group -> Arbeitsgruppe, der der User angehört
Other -> alle anderen
Außerdem wird zwischen den Rechten unterschieden:
Read: Lesen
Write: Schreiben und damit auch löschen
Execute: Ausführen
Die Rechte können im aktuellen Arbeitsverzeichnis verwendet werden.
Übungsaufgabe 2.11
Kann Benutzer Müller die Datei flip editieren, wenn Müller und Fischer Mitglieder der Gruppe bteam sind?
..-rw-r- - - - - ..Fischer.. bteam..flip
User Fischer darf lesen und schreiben, aber nicht ausführen
Gruppe bteam darf nur lesen
Da Müller der Gruppe bteam angehört, darf er nur lesend auf die Datei zugreifen, jedoch nicht schreibend oder ausführend.
Was ermöglicht der Befehl Chmod g+w myprogram?
Ein Nutzer kann so allen Mitgliedern der Arbeitsgruppe am Programm myprogram mitzuschreiben.
Chmod= Change Mode g = Gruppe +w Schreibwichte hinzufügen
-w Schreibrechte entfernen
Die Rechte kann nur der Eigentümer des Objekts oder ein Superuser ändern.
Übungsaufgabe 2.12.
Was bewirkt der Befehl chmod go+rw entwurf.tex?
Allen Nutzern (Gruppe und Others) wird auf Entwurf.tex ein lese und Schreibrecht zugeteilt
Wie ist eine Datei aus physischer Sicht aufgebaut?
Während eine Datei sich aus logischer Sicht als eine Folge von Datensätzen darstellt, ist sie aus physischer Sicht eine Folge von gleich großen Blöcken. Auf der Magnetplatte wird jeder Block mit Zusatzinformation versehen und in einem Sektor gespeichert.
Weswegen ist es wünschenswert, die Blöcke einer Datei möglichst hintereinander auf der Platte zu speichern?
- Bei sequentiellem Zugriff auf mehrere aufeinander folgende Blöcke wird dadurch die Zeit für die Bewegung der Schreib-/leseköpfe minimiert.
- Bei wahlfreiem Zugriff auf einzelne Blöcke kann man leicht die Blocknummern berechnen: Wenn der i-te Block der Datei gelesen werden soll, und die Datei den Block b beginnt, so muss der Gerätetreiber einen Leseauftrag für den Block mit der Nummer b+1 erhalten.
Werden heutzutage Dateien zusammenhängend gespeichert
Nein - dies führt zum Problem der externen Fragmentierung. Eine Kompaktivizierung ist ineffizient.
Die Blöcke werden einzeln gespeichert, wo gerade Platz frei ist.
Was ist FAT?
FAT: file-allocation table:
Eine Liste die, die physischen Blockadressen von Datei-Blöcken verkettet.
Übungsaufgabe 2.14
Wieviel Platz belegt die file-allocation table einer Partition von 32 MByte bei einer Blockgröße von 512 Byte? Können Sie eine allgemeine Formel aufstellen die den Platzbedarfs der FAT in Blöcken angibt?
Eine Partition der Größe 32 MByte = 2^25 Byte besteht aus 2^16 Blöcken zu 512 = 2^9 Byte, eine Blockadresse ist also 16 Bit lang. Die FAT hat somit 2^16 Einträge der Länge 2^4 Bit und belegt dann 2^20 Bit = 128 KByte, entsprechend 256 Blöcken. Allgemein gilt: Hat die Partition b Blöcke, so ist eine Blockadresse log2b Bits lang, ein Block mit B Bits kann also
B/log2b
Viele Adressen enthalten. Demnach entfallen b x (log2b/B) Blöcke auf die file-allocation table. In unserem Beispiel ist log2b = 16 und B =2^12, also
B/log2b=2^8
Wie werden in Unix Dateien verwaltet?
Unix verwendet eine Variante des Indexprinzips.
Für jede Datei und für jedes Verzeichnis gibt es eine Struktur die als inode (Index-Knoten) bezeichnet wird.
Am Anfang eines inode stehen die Attribute des Objekts (Zugriffsrechte, Eigentümer, Gruppe, Zeitstempel Größe, Anzahl der Verweise,…) Es folgen die physischen Adressen der ersten 12 Blöcke der Datei.
Dann kommt die Adresse eines Blocks, der die Adressen der nächsten logischen Dateiblöcke enthält - ein einfach-indirekter Index. Daran schließen die Adressen eines zweifach-indirekten und schließlich eines dreifach-indirekten Indexblocks an, dieser enthält die Adressen von zweifach-indirekten Indexblöcken, von denen jeder die Adressen einfa-indirekter Indexblöcke enthält.
Übungsaufgabe 2.15
Angenommen, wir haben eine Partition von 32 MByte bei einer Blockgröße von 512 Byte. Wie lang darf eine Datei sein, damit sie sich durch einen inode beschreiben lässt?
Wir stellen gleich eine allgemeine Formel auf.
Die Partionion besteht aus b Blöcken zu je B Bits, dann kann ein Block B/log2b viele Blockadressen enthalten. Ein inode kann also insgesamt
12+ b/log2b+ (b/log2b)^2 + (B/log2b)^3 viele Blöcke adressieren. Durch Einsetzen ergibt sich
12+2^8+2^16+2^24;
Selbst wenn eine Datei alle 2^16 Blöcke der Partition belegen würde, kämen wir bei diesen Parametern ohne die dreifach-indirekte Indizierung im inode aus!
Unterstützt inodes wahlfreien Zugriff?
Ja, durch inodes wird wahlfreier Zugriff recht gut unterstützt.
Das Schema bietet mehrere Vorteile. Zum einen sind alle wesentlichen Informationen über eine Datei oder ein Verzeichnis im inode auf beschränktem Raum zusammengefasst, im Unterschied zu FAT wird aber nur für die wirklich vorhandenen Objekte Speicherplatz belegt.
Auf kurze Dateien - oder allgemeiner: auf die ersten 12 Blöcke jeder Datei - kann man sehr effizient zugreifen. Allgemein genügen maximal 5 Externzugriffe, um einen beliebigen Block einer langen Datei zu lesen.
Wie können bei dem inodekonzept eine Übersicht gestalten, welche Blöcke noch frei sind?
Man kann zu diesem Zweck zusätzlich einen langen Bitvektor verwenden, der für jeden Block ein Bit enthält, welches angibt, ob der Block frei oder belegt ist.
Ein Prozess braucht Speicherplatz im Hauptspeicher.
Welche Zuweisungsverfahren gibt es?
ein zusammenhängendes Stück,
mehrere zusammenhängende Segmente, Buddy, Paging
Welche Verfahren verursachen interne und (oder) externe Fragmentierung?
zusammenhängender Hauptspeicherbereich: interne + externe Fragmentierung
Paging: interne Fragmentierung
Buddy-Strategie: interne Fragmentierung
Was bedeutet die interne und die externe Fragmentierung?
zusammenhängender Hauptspeicherbereich
Wir teilen jedem Prozess den genau den Speicher zu, den er benötigt. Wenn nun der Speicherbereich von einem Prozess nicht mehr benötigt wird, so entsteht hier eine Lücke, mitten im zusammenhängenden Speicherbereich, dies nennt man externe Fragmentierung.
Paging:
Wir teilen den Haupstpeicher in gleich große Pages auf. Dabei werden wir nicht das Glück haben, dass jeder Prozess genau diese Page-Größe benötigt. Diese ungenutzte Lücke innerhalb der Page nennen wir interne Fragmentierung
Wie könnte man mit dem Problem der internen und externen Fragmentierung umgehen?
Vermeidung externe Fragmentierung:
- Kompaktifizieren
- Paging
- Virtueller Speicher (mit Paging)
Vermeidung interne Fragmentierung:
- Segmentation (Hauptspeicher wird in Segmente geteilt, die so groß sind, wie für den Prozess benötigt)
Ein Prozess braucht nur logische Adressen statt physische Adressen zu kennen, d.h. ein Prozess arbeitet nur mit logischen Adressen.
Die physischen Adressen werden erst zu dem Zugriffszeitpunkt auf den Hauptspeicher umgerechnet,
warum ist das vorteilhaft?
Unabhängigkeit zwischen Programmen und Rechnern, Relokierbarkeit
Wie wird eine logische Adresse auf die physische Adresse
abgebildet? Welche Hardware wird bei der Umrechnung gebraucht?
Basis- und Grenzregister bei der zusammenhängenden Zuweisung, Seitentabelle bei Paging, Mit Hilfe von Hardware
Was ist Paging? Wie funktioniert es?
Seiten: Logischer Speicher wird in Seiten aufgeteilt
Rahmen: Hauptspeicher wird in gleich große Rahmen aufgeteilt.
Rahmen sind auf dem Hauptspeicher irgendwo verteilt.
Seite passt genau in den Rahmen.
Seitentabelle:
Zuordnung der Logischen Seitennummern auf die Rahmennummern
Was sind die Vorteile von Paging?
Seiten gemeinsam benutzen: shared memory, ohne externe Fragmentierung, einfache Verwaltung des Hauptspeichers, Realisierung vom virtuellen Hauptspeicher
Wie viele Zugriffe auf den Hauptspeicher werden bei Paging mindestens benötigt, wenn ein Wort gebraucht wird?
- Seitentabelle befindet sich im Hauptspeicher (PCB)
- Berechnung der physischen Adresse mithilfe des Basisregisters
- Grenzregister
- Zugriff auf die physische Adresse
Welche Probleme können entstehen, wenn man eine Seite zu groß oder zu
klein wählt?
größere interne Fragmentierung bei der größeren Seite, lange Seitentabelle bei der kleineren Seite
Was ist der Ansatz vom virtuellen Speicher?
Unabhängigkeit der Programmen und Rechner, Programme zu schreiben, ohne Wissen von der Größe des Hauptspeichers, nur die Seiten im Hauptspeicher zu halten, die gerade gebraucht werden, der Rest bleibt im Sekundärspeicher
Welche Vorteile und Nachteile hat der virtuelle Speicher?
Vorteile:
- Programmierer kann beliebig große Programme schreiben (unabhängig von physischer Größe)
- keine externe Fragmentierung
- bereiter Prozess kann rechnend gemacht werden, auch wenn nicht alle Daten im Haupspeicher stehen
Nachteil:
- Softwareunterbrechung bei Seitenfehler (lange Zugriffszeit auf die Festplatte)
- Höherer Verwaltungsaufwand für Scheduling
Für die Realisierung des virtuellen Hauptspeichers muss man die folgenden Probleme lösen:
a) . wann eine Seite in den Hauptspeicher geholt werden soll. Demand paging ist eine Möglichkeit. Was ist demand paging?
b) . welche Seite ausgelagert werden soll, wenn der Hauptspeicher voll ist. Nach welchen Kriterien könnte man die auszulagernde Seite auswählen?
demand-paging Seite wird erst im Hauptspeicher eingelagert, wenn sie benötigt wird
Strategien für die Wahl der auszulagernden Seiten:
• Optimale Strategie lagert die Seite aus, die am weitesten in der Zukunft wieder benötigt wird -> Information nicht bekannt, nicht möglich
• LRU (least recently used) letzte Benutzung liegt am weitesten zurück
• dirty-bit Seite wurde seit der letzten Einlagerung nicht mehr verändert.
dirty-Bit wird bei jeder Schreiboperation gesetzt. = nicht vorhanden = kein Schreibzugriff.
Vorteil: Seite muss nicht mehr auf den Sekundärspeicher zurückgeschrieben werden.
Was passiert, wenn eine Seite nicht im Hauptspeicher vorhanden ist?
Seitenfehler: die MMU liest den Eintrag in der Seitentabelle für die Seite und merkt, dass das present-Bit nicht gesetzt ist, sie löst eine Unterbrechung aus.
Es gibt für den Seitenfehler eine Unterbrechungsnummer, diese Nummer wird als Index verwendet, um im Unterbrechungsvektor nach der Startadresse der Unterbrechungsroutine zu suchen.
Was ist ein Seitenfehler?
Bei einem Seitenfehler wird auf eine Seite (Page) zugegriffen, die sich nich in dem Hauptspeicher befindet.
Wie wird ein Seitenfehler behandelt?
Die MMU liest den Eintrag in der Seitentabelle für die Seite und merkt, dass das present-Bit nicht gesetzt ist, sie löst eine Unterbrechung aus.
Es gibt für den Seitenfehler eine Unterbrechungsnummer, diese Nummer wird als Index verwendet, um im Unterbrechungsvektor nach der Startadresse der Unterbrechungsroutine zu suchen.
Welche Aktionen gibt es, um die fehlende Seite in den Hauptspeicher zu holen?
Seitenfehler: die MMU liest den Eintrag in der Seitentabelle für die Seite und merkt, dass das present-Bit nicht gesetzt ist, sie löst eine Unterbrechung aus.
Es gibt für den Seitenfehler eine Unterbrechungsnummer, diese Nummer wird als Index verwendet, um im Unterbrechungsvektor nach der Startadresse der Unterbrechungsroutine zu suchen.
Wie merkt das Betriebssystem, dass eine Seite nicht im Hauptspeicher liegt?
fehlende Seiten stehen im Sekundärspeicher und sind in der Seitentabelle entsprechend markiert (Present-Bit).
Bei Linux wird die Hauptspeicherzuweisungsstrategie Buddy eingesetzt, wie funktioniert sie?
- Hauptspeicher besteht aus zusammenhängenden Stücken mit jeweils einer Zweierpotenz vielen Seiten
- Stück ist belegt oder frei
- wenn Allokierer zusammenhängenden Bereich einer bestimmten Länge benötigt, nimmt er das kleinste freie Stück, das mindestens die erforderliche Länge hat
- Wenn es mehr als doppelt so lang ist wie der benötigte Bereich -> halbieren
- Ein Stück wird verwendet, anderes = Buddy bleibt frei
- Wenn ein Stück frei ist und Buddy ist frei -> Verschmelzung
Welche Fragmentierung hat die Buddy Strategie?
Interne Fragmentierung
Warum herrschen Wettkampfbedingungen (Race Conditions) zwischen Prozessen, wenn sie auf die gleiche Variable zugreifen?
Parallelität von Prozessen, Scheduling, Scheduler
Was bedeutet race conditions?
Eine Race condition entsteht, wenn
Zwei oder mehr Threads/Prozesse einen gemeinsamen Speicherbereich lesen und schreiben und
Das Ergebnis von der zeitlichen Reihenfolge der Ausführung der Prozesse abhängt.
Was ist ein kritischer Abschnitt?
Ein kritischer Abschnitt ist ein Abschnitt im Programm, in dem
- Gemeinsame Resourcen wie z.B. Variablen und Datenstrukturen benutzt werden
- Auf die mehrere Prozesse lesend und schreibend zugreifen, sodass
Eine Rache condition entstehen kann.
Warum ist die Prozesssynchronisation wichtig?
Ein Programm muss deterministisch sein, d.h.
das Ergebnis darf nicht von der Ausführungsreihenfolge der
Prozesse abhängen
Welche Probleme können entstehen, wenn z.B. die Prozesse Beobachter und Berichterstatter nicht synchronisiert werden?
Dass eine Race-Condition entsteht und Inkonsistenz entsteht
Welche Probleme gibt es, wenn man die Prozesse Beobachter und
Berichterstatter mit einer Synchronisationsvariable switch synchronisiert?
busy waiting, abwechselnd in ihrer kritischen Abschnitte
Was passiert, wenn die Synchronisationsvariable switch mit 1 initialisiert wird und der Prozess Beobachter eine höhere Priorität beim Scheduling als der Prozess Berichterstatter hat?
Beobachter wartet, dass Switch auf 0 steht, da er höher priorisiert ist, kommt Berichterstatter nicht zum Zug - somit entsteht ein dead lock
Was ist ein Semaphor?
eine globale Variable mit einer Warteschlange
Welche Operationen darf man auf einen Semaphor ausführen?
nur Initialisierung, down und up
Was machen die Operationen down und up bei einem Semaphor?
Atomare Operation down(s)
zum Eintritt, entspricht enter_critical_section(), ggf. Warten im blockierten Zustand.
Atomare Operation up(S)
zum Verlassen des kritischen Abschnitts, entspricht leave_critiacal_section().
Wie kommt ein Prozess wieder aus der Warteschlange eines Semaphors aus, wenn er bei der Ausführung von down blockiert?
Indem ein anderer Prozess mit der up-operation die count-variable wieder hochzählt
Was macht der Prozess, der aus der Warteschlange eines Semaphors auskommt?
Der Prozess tritt direkt in den kritischen Abschnitt ein, ohne dabei down nochmal aufzurufen.
Welche Vorteile hat ein Semaphor?
Blockierte Prozesse reihen sich in die Warteschlange ein, und werden wieder erweckt, wenn up aufgerufen wird. Dies vermeidet das busy waiting einer Synchronisationsvariable ohne Semaphor
Warum enthalten down und up auch einen kritischen Abschnitt?
Wenn die down-Operation unterbrochen wird, direkt nach der Abfrage der count Variable ohne dass count herunter gezählt wird
Wenn die up-Operation unterbrochen wird, wenn sie feststellt, dass die Warteschlange leer ist. und ein anderer Prozess down aufruft, so ist die Warteschlange nicht mehr leer, aber die up-Operation wird beim else-Zweig aufgerufen, und weckt damit den Prozess nicht wieder auf.
Wie kann man die unteilbare Operationen bei einem
Einprozessorsysytem realisieren? Was ist die Gefahr?
Man müsste den Unterbrechungsbetrieb aussetzen.
Somit kann ein Prozess beliebig viel Rechenzeit beanspruchen.
Was macht der Systemaufruf fork?
In unixoiden Betriebssystemen ist fork der Name eines Systemaufrufs, anhand dessen der aufrufende Prozess (Elternprozess) eine Kopie von sich selbst erzeugt, einen sog. Kindprozess. Der Kindprozess übernimmt dabei die Daten, den Code, den Befehlszähler und die Dateideskriptoren vom Elternprozess und erhält vom Kernel (wie der Elternprozess und jeder andere Prozess auch) eine eigene Prozessnummer, die PID (engl. „Process IDentifier“). In der Folge verwaltet das Betriebssystem den Kindprozess als eigenständige Instanz des Programms und führt ihn unabhängig vom Elternprozess aus.
Was sind Threads?
Konzept vom Prozess: ein Prozess hat einen Adresseraum und einen Ausführungspfad, der durch Befehlszähler beschrieben wird.
Konzept von Threads: erlaubt einen gleichen Adressraum, aber mehrere Ausführungspfade
Was haben die Threads eines Prozesses gemeinsam und was nicht?
Alle Threads benutzen das selbe Datensegment und Programmsegment hat aber einen eigenen Stack, Programmzähler und Registriersatz.
Welche Vorteile haben Threads im Vergleich zu Prozessen?
Kommunikation durch das gemeinsamen Datensegment
Wo kann man Threads einsetzen?
Wenn man einen Prozess in mehrere Ausführungspfade unterteilen kann.
Was ist der Unterschied zwischen Benutzer-Threads und Kernel-Threads?
Benutzer-Threads: sie sind dem Betriebssystem nicht bekannt. Der Prozess muss sich um das Scheduling seiner Threads kümmern. Wenn ein Thread blockiert, dann blockiert der ganze Prozess. Von einem Prozess kann immer nur ein Thread gerade rechnend sein.
Kernel-Threads: Jeder ist dem Betriebssystem bekannt. Wenn ein Thread blockiert, kann ein anderer Thread desselben Prozesses trotzdem rechnend sein. Das Betriebssystem kümmet sich um das Scheduling. Threads von einem Prozess können auf unterschiedlichen Prozessen laufen, sogar gleichzeitig.
Was ist ein Dateisystem?
Dateisysteme dienen der Verwaltung von Dateien (files) Dateisysteme dienen der Verwaltung von Dateien (files)
Wozu ist ein Dateisystem gut?
Der Benutzer braucht sich nicht mit der Festplatte auseinanderzusetzen,
ein Dateisystem bietet den Benutzern eine logische Sicht von Dateien an
Welche Informationen gibt es in den Attributen einer Datei?
- Zugriffsrechte
- Eigentümer/Gruppe
- Zeitstempel
- Größe
- Anzahl der Links
Was sind die Hardlinks?
Ein Hardlink ist einfach ein Name einer Datei. Jede Datei hat einen inode kann aber mehrere Namen haben. Ein Datei kann mit mehreren Namen angesprochen werden, jeder Name ist ein Hardlink
Wie sehen die Zugriffsberechtigungen einer Datei bei UNIX aus?
- read leserecht
- write Schreibzugriff mit überschreiben und löschen
- execute Benutzer darf dieses Verzeichnis zum akuellen Arbeitsverzeichnis machen oder die Datei ausführen
Wie werden die Zugriffsrechte ausgewertet, wenn ein Prozess einen Zugriff startet?
Jedem Prozess ist die BenutzerID und die GruppenID bekannt, jede Datei haben die Zugriffs-Bits für Benutzer, Gruppen und Others, somit können diese bei Zugriff verglichen werden
Wer vergibt die Zugriffsrechte?
Der Ersteller der Datei oder der Superuser kann Zugriffsrechte vergeben
Ein Dateisystem muss eine Folge von Datensätzen in Blöcke auf dem Sekundärspeicher abbilden. Wie macht das Dateisystem FAT?
für jeden Block auf der Festplatte gibt es einen Eintrag in FAT
Wie groß ist die FAT?
die Anzahl der Blöcke auf der Festplatte mal die Länge der Blockadresse
Wie kann man die Lokalisierung eines Blocks einer Datei auf der Festplatte mit FAT feststellen?
sequenzielle Suche in der FAT
Was sind die Nachteile von FAT bei großen Dateien?
Man benötigt viele Links um ans Ende der Datei, zudem ist die FAT auf 32 Bit Adressierung <4 GB begrenzt.
Wie macht das Dateisystem inode bei LINUX/UNIX?
Für jede Datei wird ein Index angelegt, Ein Index is eine Tabelle, die zu jeder logischen Blocknumemer die zugehörige physische Blocknummer enthält.
Diese Indextabelle wird selbst auch im Externspeicher abgelgt. Konkret wird dies bei UNIX mit einem Inode realisiert:
Attribute in Inode
dann Block 1-12 direkt adressiert
13 1-Fach indirekt adressiert
14 2-Fach indirekt adressiert
15 3-Fach indirekt adressiert
Was steht in einem inode?
Attributte und 13 Adressen
Wie groß kann ein inode sein?
128 Byte in Linux (ext2)
Wie kann man die Lokalisierung eines Blocks einer Datei auf der Festplatte mit inode feststellen?
Durch die Adressierung (direkt, einfach-indirekt, zweifach-indirekt, dreifach-indirekt)
Wie viele Zugriffe auf die Festplatte höchstens benötigt man, um einen Datenblock zu lokalisieren, wenn der inode schon im Hauptspeicher liegt?
Vier; drei für die Indexblöcke und einer für den Datenblock
Welche Probleme sind bei der Verwaltung von Prozessen zu lösen?
Interprozesskommunikation
Speicherschutz
Beschreibung der Verwaltung zusammenhängender Hauptspeicherbereiche.
- Der Hauptspeicher wird fest in zusammenhängende Bereiche unterschiedlicher Größe aufgeteilt und jeder Prozess bekommt einen davon (Problem: interne Fragmentierung)
- Jeder Prozess bekommt einen zusammenhängenden Bereich genau der Größe, die er auch angefordert hat
Was sind Parallelrechner und wie funktionieren sie?
Sie haben mehrere Prozessoren, die sich einen gemeinsamen großen Hauptspeicher teilen. Der Zugriff erfolgt entweder über einen Bus oder der gemeinsame Hauptspeicher wird in kleinere Stücke zerlegt und ein Schaltwerk sorgt dafür, dass jeder Prozessor auf jeden Teil des Speichers zugreifen kann.
Vorteile:
- Effizenzsteigerung
- Kosteneinsparung
- Fehlertoleranz
Nachteile:
- das Problem muss sich parallelisieren lassen
- höherer Verwaltungsaufwand für Kommunikation
Wie funktioniert die Hauptspeicherverwaltung?
- Unterteilung in feste zusammenhängende Bereiche
- Prozesse bekommen einen zusammenhängen Bereich, genau der Größe die sie brauchen
- Paging
Welche Auslagerungsstrategie gibt es?
- optimale Strategie: diejenige Seite, die am weitesten in der Zukunft wieder benötigt wird
- LRU (least recently used): die Seite, die am längsten nicht benutzt wurde
- dirty-bit: Seiten ohne Schreibzugriff werden ausgelagert (müssen nicht zurückgeschrieben werden)
Was ist ein Deadlock?
Wenn man beim Erzeuger- oder Verbraucherprozess die Reihenfolge der up-Aufrufe vertauscht, hat das keinen Einfluss auf die Korrekthiet. Vertauscht man aber die Reihenfolge der down-Aufrufe, kann eine Verklemmung (deadlock) entstehen. Wenn zum Beistpiel der Erzeuger bei vollem Puffer zunächst down(Zugriff) ausführt, ist der Zugang zum Puffer, dadurch für den Verbraucher gespert, dieser hat also gar nicht die Möglichkeit, ein Objekt aus dem Puffer zu entnehmen. Deshalb wird der Verbraucher beim folgenden Aufruf down(Frei) für alle Zeiten blockiert
Wie wird die Seitennummer beim Paging bestimmt?
Die logischen Adressen werdenin zwei Abschnitte aufgeteilt:
Seitennummer (vorderen 3 Bit)
Offset (hinteren 7 Bit)
Wie funktioniert die Prozesssynchronisation?
Um zu verhindern das Prozesse zur gleichen Zeit in kritische Abschnitte eintreten, muss durch Synchronisation der exklusive Zutritt garantiert werden:
- Synchronisationsvariable (busy waiting, wird ein Prozess innerhalb des kritischen Abschnitts unterbrochen, kann der andere den Abschnitt nie wieder betreten)
- Semaphor
Was ist für die CPU-Verwaltung verantwortlich?
Das Betriebssystem
Wie nennt man ein laufendes Programm?
Prozess
Was tut man, wenn alle Seitenrahmen belegt sind?
Auslagern bestimmter Prozesse (Abzug des Adressraums) oder Seiten in den Externspeicher (swapping)
Warum braucht man Prozesssynchronisierung?
Erzeuger-Verbraucher-Problem,
Inkrementieren einer Variable durch zwei Prozesse
Wer teilt den Prozessen die CPU zu?
Dispatcher
Welches Problem gibt es, wenn mehrere Prozesse gleichzeitig ablaufen?
Prozesssynchronisation
Interprozesskommunikation
Was passiert, wenn ein Prozess mehr Seiten benötigt, als zur Verfügung stehen?
Durch den virtuellen Speicher, können beliebig große logische Adressräume verwendet werden, die Seiten, die im Hauptspeicher keinen Platz finden, stehen im Sekundärspeicher. Die fehlenden Seiten werden bei Bedarf in den Hauptspeicher eingelagert (demand paging)
Was versteht man unter LRU?
- LRU (least recently used): die Seite, die am längsten nicht benutzt wurde wird ausgelagert
Was unterscheidet Threads von Prozessen?
Zum Kontext eines Prozesses, gehören neben den Registerinhalten auch Informationen über seinen Adressraum. Die Verwaltung dieser Informationen kostet beim Prozesswechsel Rechenzeit.
Nun gibt es Problemen, bei deren Lösung man mehrere Prozesse einsetzen möchte, die quasi-parallel ablaufen und alle auf den selben Speicherbereich zugreifen, Threads
Was ist der Unterschied zwischen Scheduler und Dispatcher?
Scheduler: Legt die Strategie für die Rechenzeitvergabe fest
Dispatcher: Führt den Kontextwechsel durch
Welche Daten enthält der Prozesskontrollblock?
- Prozesskontext: Registerinhalte, Befehlszähler, Grenzen des Adressraums, Prozessnummer, Priorität
- Benutzer- oder Systemmodus
- Prozesszustand (z.B. bereit)
Wie erfolgt der Prozesswechsel durch den Dispatcher?
Der Dispatcher führt den Kontextwechsel durch, dazu wird der Prozesskontext gesichert und der Prozesskontext des neuen Prozesses in den Prozessorkern geladen
Angenommen, es gäbe keine Interrupts - welche Alternative hätte man?
nicht präemptive Systeme, bei der Prozesse die CPU freiwillig abgeben (kooperative Systeme)
- FCFS (first come, first served)
- SJF (shortest job first)
Welche Komponente überwacht Zeitscheibe bei Ausführung?
Hardware Zeitgeber (Timer), eigener Chip im Rechner, der an den Takt der CPU angeschlossen ist
Wann wird der Dispatcher aktiv?
beim Kontextwechsel
Wird bei Round-Robin ein Scheduler benötigt?
Ja, zur Überwachung, dass kein Prozess sein Quantum der Zeitscheibe überschreitet
Warum gibt es keine „Referentielle Integrität“ bei Betriebssystemen?
.
Wohin werden die Register beim Prozesswechsel gesichert?
In den Proxesskontext im Hauptspeicher, ist dieser voll werden bereite oder blockierte Prozesse in den Externspeicher ausgelagert.
Woher wird der PCB beim Prozesswechsel geladen?
Aus dem Hauptspeicher
Was passiert, wenn die Unterbrechungsroutine vollständig durchlaufen wurde?
Es wird ein spezieller Befehl ausgeführt, der die Rückkehr von der Unterbrechung bewirkt, worher werden die alten Registerinhalter und der alter Wert des Befehlszählregisters wiederhergestellt.
Sind Unterbrechungen synchron oder asynchron?
Hardwareunterbrechungen: asynchron
Softwareunterbrechungen: synchron
Wie kommen die Daten aus dem Puffer des Gerätes in den Hauptspeicher?
- Unterbrechungsgesteuerte Ein-/Ausgabe: der Controller schreibt jeweils in Wort in sein Dateneingangsregister und löst eine Unterbrechung aus. Der Gerätetreiber veranlasst, dass das Wort von der CPU in Empfang genommen und in den Hauptspeicher geschrieben wird
- DMA, direkter Speicherzugriff:
Der DMA-Controller überträgt über den Bus Daten in den Hauptspeicher
Braucht das Betriebssystem pinned pages und forced output und wenn ja/nein, warum?
Wie bei virtuellen Speichern tritt bei Datenbanken das Problem auf, welche Seite überschrieben werden darf oder zurückzuschreiben ist, wenn eine neue Seite angeforder wird, im Systempuffer aber kein Platz mehr vorhandne ist. Die Seitenverwaltung in Datenbanksystem muss jedoch zusätzliche Anfoderungen erfüllen:
- Pinned pages: im Zusammenspiel mit der Recovery dürfen Seiten nicht beliebig in die Datenbank geschrieben werden. Solche Seiten nennen wir pinned
- Forced output: Ebenfalls im Zusammenahng mit Recovery müssen gelegentlich Seiten auf den Externspeicher zurückgeschrieben werden, obwohl der Platz im Systempuffer gar nicht benötigt wird
Dirty Bit
Kennzeichnet Seiten, auf die ein Schreibzugriff stattgefunden hat
Wofür braucht das BS die Registerinhalte im PCB?
Im PCB sind die Adressräume, die Prozessnummer, die Priorität, ob der Prozess im System- oder im Benutzermodus arbeitet und Zugriffsberechtigungen vermerkt
Kann ein Prozess auf seinen eigenen Prozesskontext zugreifen?
Nein, da sonst ein nicht priviligierter Prozess, sich z.B. eine höhere Priorität zuweisen könnte
Wo ist der Prozesskontext untergebracht?
Im Prozeskontrollblock
Alle aktuellen Prozesse stehen in einer kerneleigenen Tabelle der Prozesstabelle, bei der Erzeugung eines neuen Prozesses wird darin ein Prozesskontrollblock als neuer Eintrag angelegt.
Was limitiert die Größe des Adressraums?
Basis- und Grenzregister
Was heißt faires Scheduling?
Wenn ein rechenbereiter Prozess in endlicher Zeit rechnen darf
Bei einem Einprozessorsystem laufen Prozesse nicht parallel. Wie läuft es dann ab?
Der Scheduler weist jedem bereiten Prozess im schnellen Wechsel ein gewisses Quantum an Rechenzeit zu.
Bräuchte es bei einem Stapelbetrieb ein Befehlszählregister?
Nein, da ja der Auftrag nach einander abgearbeitet wird.
Wozu braucht man den Stack?
hier werden Registerinhalte gespeichert
Was steht in der Prozesstabelle?
Enthält pro laufenden Prozess einen Eintrag, den Prozesskontollblock.