Friedrich-Alexander-Universität UnivisSuche FAU-Logo
Techn. Fakultät Willkommen am Department Informatik FAU-Logo
Logo I4
Lehrstuhl für Informatik 4
Betriebssysteme
 
  Vorlesung
    - UnivIS-Infos
    - Inhalt
    - Folien
 
  Übungen
    - UnivIS-Infos
    - Inhalt
    - Ergänzendes Material
    - Terminübersicht
    - Aufgaben
       * Umgebung
       * Typische Fehler
       * A 1
       * A 2
       * A 3
       * A 4
       * A 5
       * A 6
       * A 7
 
  Evaluation
Department Informatik  >  Informatik 4  >  Lehre  >  WS 2007/08  >  Betriebssysteme  >  Übungen  >  Aufgaben  >  Aufgabe 4  >  Struktur toc

Struktur toc

Einordnung in die Gesamtstruktur

Modul
machine
Erstellungszeitpunkt
Aufgabe 4 (zum Teil vorgegeben)
Dateien
toc.h toc.inc toc.asm toc.c

Beschreibung

Die Struktur toc dient dazu, bei einem Koroutinenwechsel die Werte der nicht-flüchtigen Register zu sichern.

Die Initialisierung, das Sichern und Wiederherstellen der Register wird von den Funktionen toc_settle(), toc_go und toc_switch übernommen.

Strukturelemente

void *ebx, *esi, *edi, *ebp, *esp;

Funktionen

void toc_settle (struct toc* regs, void* tos, void (*kickoff)(void*), void* object);
Diese Funktion bereitet die Struktur toc für die erste Aktivierung vor. Dazu müssen Registerinhalte und Stack so initialisiert werden, dass bei der ersten Aktivierung die Ausführung mit der Funktion kickoff beginnt, die wiederum den Zeiger object als ersten Parameter auf dem Stack vorfinden muß.
void toc_go (struct toc* regs);
Diese Funktion lädt die Prozessorregister mit den Inhalten der Struktur regs.
void toc_switch (struct toc* regs_now, struct toc* regs_then);
Diese Funktion führt einen Kontextwechsel durch. Dazu brauchen nur die aktuellen Registerwerte in regs_now gesichert und durch die Werte von regs_then ersetzt werden.

Anmerkung

Die Vorgabe enthält die Dateien toc.h und toc.inc, die die Struktur toc für den Gebrauch aus C/C++ und Assemblerfunktionen heraus definieren. An diesen Dateien solltet ihr nichts verändern.

Die Funktion toc_settle kann in C implementiert werden, für toc_go und toc_switch wird Assembler benötigt.
Nähere Informationen zu den Aufgaben und der Implementierung von toc_settle, toc_go und toc_switch erhaltet ihr im nächsten Seminar.

  Impressum   Datenschutz Stand: 2007-11-23 08:56   AG, WH