Sie befinden sich hier: Termine » Prüfungsfragen und Altklausuren » Prüfungen im Bachelor-Studium (1. - 5. Semester) » Lösungsvorschlag   (Übersicht)

Lösungsvorschlag

Aufgabe 3:

a.

void bbPut(BNDBUF *bb,int value){
 
 
 
    P(bb->Sem_full);
    P(bb->Erz);//synchonisierung für die Erzeuger. Wird mit 1 initialisiert.
 
    bb->space[b->freeNextSpace++] = value; /
 
    bb->freeNextSpace= (bb->freeNextSpace)%(bb->SpaceLenghth);
 
    V(bb-Erz);
 
    V(bb->SEM_empty);
 
    }else{
 
    return;
 
    }
 
 void bbGet(struct data *data){
 
        int i =0;
 
        P(bb->Sem_empty);
 
    data= space[readPos];
 
    P(bb->Ver);.
 
    readPos=(reasPos+1)% (bb->SpaceLength);
 
    V(bb->Ver);
 
    V(bb->SEM_FULL);
    }
 
 

b.

Die Verwendung blockierender Synchronisatzionsverfahren ist nicht immer Unproblematisch. Beschreiben sie 3 Problembereiche,die blockierende Synchronisation

1. „spinn lock“ reduziert ggf. massiv die Busbreite

2.Robustheit: EIn im kritischen Zustand scheiternder Prozess kann im worst case das ganze System lahmlegen

3.Einplanung: wird behindt sich bringen kann.buddyworst-fit er/nicht durchgesetzt,weniger wichtige Prozesse können wichtige ausbremesen⇒prioritätenumkehr

4. Verklemmung einer oder mehrere Prozesse c. Im get() in dem Bespiel aus den Übungen haben wir iN(nächster Freier Platz) und iNnext (der Berechnete neue Platz) durch CAS geschützt,CAS prüft in einer Schleife, ob die kritische Variable nebenläufig verändert wurde. Im allg. können wir bb→Erz und bb→Ver mit nicht blockierender synch. ersetzen. d. Hab ich oben eigentlich schon erklärt^^

Aufgabe 4:

Beschreiben sie die unterschiedlichen Arten von Gewichtsklassen von Prozessoren - schwergewichtiger Prozess: Prozessinstanz und Benutzeradressraum bilden eine Einheit; horizontale Isolation: jeder Faden besitzt eigenen Adressraum, Umschaltung nur mit BS - leichtgewichtiger Prozess: Prozessinstanz und Adressraum voneinander gekoppelt; vertikale Isolation: Steuerbefehle und Syscalls an den Betriebssystemkern - federgewichtiger Prozess: Prozessinstanzen und Adressraum bilden eine Einheit; eigentlicher Kontrollfluss(Thread), keine Isolation Die Gewichtsklassen sollen hinsichtlich der folgenden Kriterien verglichen werden:

  Ist es möglich auf gemeinsame Daten zuzugreifen?s
  1. Schwer: Nein
  1. Leicht: Ja
  1. Feder: Ja
  Wie teuer ist die Erzeugung?
  1. Schwer: Schwer. Der gesammte Prozess muss kopiert werden.
  1. Leicht: Leichter. Die Daten müssen in diesem Fall nicht kopiert werden. Trozdem seperate lokale Variablen und Programmzähler
  1. Feder: Im Grunde nicht vorhanden bzw. vom Programm abhängig.
  Wie teuer ist die Umschaltung zwischen Aktivitätsträgern derselben Gewichtsklasse?
  1. Schwer:teuer, weil man im kern umschalten und adressraum wechseln muss
  1. Leicht:mittelteuer, weil systemaufruf
  1. Feder: billig, da nur funktionsaufruf
  Wer sorgt für die Einplanung (das Scheduling)?
  1. Schwer: BS
  1. Leicht: BS
  1. Feder: Programm
  Ist es möglich, mehrere dieser Aktivitätsträger parallel auf mehreren CPUs auszuführen?
  1. Schwer: Ja
  1. Leicht: Ja
  1. Feder: Nein
  Was passiert mit den anderen Aktivitätsträgern, wenn einer eine blockierende Operation ausführt und in den Zustandblockiert übergeht?
  1. Schwer: Nichts, potentiell werden sie aktiv
  1. Leicht: Nichts, potentiell werden sie aktiv
  1. Feder: Alle Aktivitätsträger blockieren