ich war hier: BSys02Funktion

Version [22379]

Dies ist eine alte Version von BSys02Funktion erstellt von RonnyGertler am 2013-03-26 14:19:20.

 (image: http://wdb.fh-sm.de/uploads/QualipaktLehre/BMBF_Logo_klein.jpg)

Betriebssysteme (Betriebssystemtheorie) - Kapitel 2 - Funktionsweise eines Betriebssystems


Inhalte von Dr. E. Nadobnyh

2.1. Programmausführung


Programmentwicklung


Ausgangspunkt jedes Programms ist sein Quellcode, der mit passenden Dienstprogrammen in den Binärcode umgewandelt wird. Die CPU interpretiert den Binärcode als Instruktionscode.

Zu den Dienstprogrammen gehören: Editor, Präprozessor, Compiler, Assembler, Linker, Lader, C-Run-Time System, Java Virtual Machine (JVM).

Vor dem Programmstart lädt der Lader den Binärcode in den Hauptspeicher.


Programmentwicklung. Beispiel mit gcc


 (image: https://ife.erdaxo.de/uploads/BSys02Funktion/BSys02.gif)


Adressraumbelegung


Ein Adressraum ist eine Menge aller möglichen Adressen.

Beispiel:
Verwendet ein Prozessor einen 32-Bit Adressbus, besteht die Menge aller möglichen Adressen aus
{0, 1, 2, ..., 232 -1}. Die Adressraumgröße ist 4GB.

Der Adressraum wird meist vom Compiler in 4 Bereiche aufgeteilt:
Stack, Code, Data, Heap.


Speicherbereiche


1.Stack (Stapel, Keller) enthält:
  1. Parameter,
  1. lokale Variablen,
  1. Funktionsergebnis der aufgerufenen Funktionen,
d )Rücksprungadressen.
Der Stack wächst mit dem Aufruf einer Funktion.

2.Code-Bereich enthält Programmcode.

3.Data-Bereich enthält die globalen Variablen sowie die statischen Datenkomponenten.

4.Heap (Haufen) wird für dynamische Speicherreservierung (Allozierung) bereitgestellt. Der Heap wächst mit dem Aufruf von new.


Prinzipbeispiel für Adressraumbelegung


 (image: https://ife.erdaxo.de/uploads/BSys02Funktion/BSys03.gif)


Ausführung des Programms


Einfaches Modell des Von-Neumann-Rechners:

1.Die CPU (Central Processing Unit) holt die Maschinenbefehle nacheinander aus dem Speicher und interpretiert sie (Instruktionsausführung).

2.Der Speicher enthält die Maschinenbefehle und die zu verarbeitende Daten.

3.Das Transportsystem (bus) transferiert die Maschinenbefehle und Daten.

4.Die Ein-/Ausgabe (Input/Output, I/O) verbindet die Peripheriegeräte mit der CPU und stellt mehrere Schnittstellen bereit.


CPU-Registersatz


Ein Registersatz ist ein kleiner aber schneller Speicher in der CPU, um Maschinenbefehle auszuführen.

1. Allgemeine Register (Registerblock) werden als Zwischenspeicher für Operanden, Resultate und Adressen verwendet.

Beispiel: Pentium-Prozessor hat sieben allgemeine Register.

2.Folgende drei Steuerregister enthalten die Informationen des Programmablaufs:
  1. SP - Stapelzeiger,
  1. PC - Programmzähler,
  1. PSW - Programmstatuswort .


Steuerregister


1.SP - Stapelzeiger enthält die Adresse des aktuellen oberen Endes des Stacks. Synonyme: Stack Pointer, Kellerzeiger.

2.PC – Programmzähler legt fest, welcher Befehl als nächster zu holen und auszuführen ist.
Synonyme: Program Counter, Programmzählerregister, Befehlszähler, IC-Instruction Counter, IP-Instruction Pointer.

3.PSW - Programmstatuswort enthält:
a)aktuellen CPU-Modus,
b)Operanden und Resultate der Vergleichsoperationen,
c)weitere Kontrollbits und Flags.

Synonyme: Program Status Word, Statusregister, Flag Register, FR.


Befehlsverarbeitung in der CPU


Instruktionszyklus:

 (image: https://ife.erdaxo.de/uploads/BSys02Funktion/BSys04.gif)

1) Verzweigungen: if, switch,
2) Schleifen: for, while,
3) Unbedingter Sprung: goto,
4) Sondere Sprünge: break, continue.
5) Aufruf: call, f1();
6) Rückkehr: return,
7) Exception: throw,


Aufruf und Rückkehr


In der Execute-Phase der Aufruf-Instruktion werden zwei Schritte hardwaremäßig ausgeführt:

(1) PC-Inhalt wird auf dem Stack abgelegt. PC zeigt auf die Instruktion, welche nach der Aufruf-Instruktion folgt.

(2) PC wird mit der Sprungadresse geladen. Die Sprungadresse ist die Startadresse des aufzurufenden Unterprogramms.

Im Unterprogramm werden folgende Schritte softwaremäßig ausgeführt:

(3) SP-Inhalt wird auf dem Stack abgelegt.

(4) Die lokalen Variablen usw. werden auf dem Stack abgelegt. Dabei wird SP geändert.

Vor der Rückkehr werden im Unterprogramm folgende Schritte softwaremäßig ausgeführt:

(5) SP wird mit altem SP-Inhalt vom Stack geladen. Damit werden lokale Variablen usw. freigegeben.

(6) return holt eine Rücksprungadresse vom Stack.


2.2. Unterbrechung


Hardware-Parallelität


Hardware-Parallelität bedeutet die gleichzeitige Arbeit mehrerer Kontroller.

Arten der Parallelität:
a) unabhängige Prozessoren (Multiprozessoren),
b) verschiedene Peripheriegeräte,
c) CPU und Peripheriegerät,
d) Teile der CPU, z.B. Pipeline.


Parallelität von CPU und Peripherie-Gerät


 (image: https://ife.erdaxo.de/uploads/BSys02Funktion/BSys05.gif)

IRQ - Interrupt-Request (Unterbrechungsanforderung)


Unterbrechung


Unterbrechung (Interrupt) ist ein Mechanismus, der:
1)die Ausführung des laufenden Programms unterbricht und
2)die Kontrolle an eine ISR übergibt.

ISR (Interruptservice- Routine) ist ein spezieller Programmteil des Betriebssystems , der ein aufgetretenes Ereignis (z.B. I/O-Ende) unverzüglich behandelt. Es gibt mehrere ISR für verschiedene Ereignisse. Die Sprungadressen werden hardwaremäßig zugeordnet.

Nach der Rückkehr aus der ISR muss das unterbrochene Programm weitergeführt werden, als wenn es nie unter brochen worden wäre. Die Rückkehr wird deswegen zusammen mit der Unterbrechung betrachtet.


















CategoryBSys
Diese Seite wurde noch nicht kommentiert.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki