• Keine Ergebnisse gefunden

Praktische ¨Ubung in Betriebssysteme (BTS) SS2007

N/A
N/A
Protected

Academic year: 2021

Aktie "Praktische ¨Ubung in Betriebssysteme (BTS) SS2007"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Praktische ¨ Ubung in Betriebssysteme (BTS) SS2007

Aufgabenstellung

Entwickeln Sie einen Teil eines gr¨oßeren Echtzeitsystems, das aus vier Prozessen besteht:

1. Conv. Dieser Prozess liest Messwerte von A/D-Konvertern (Ana- log/Digital) ein. Er pr¨uft die Messwerte auf Plausabilit¨at, konvertiert sie gegebenfalls und schreibt sie in einen Speicherbereich Mess. Wir lassen Conv in Ermangelung eines physischen A/D-Konverters Zufallszahlen er- zeugen. Diese m¨ussen in einem bestimmten Bereich liegen, um einen A/D- Konverter zu simulieren.

2. Log. Dieser Prozess liest die Messwerte des A/D-Konverters aus dem Speicherbereich Mess und schreibt sie in eine Datei auf der Festplatte.

3. Stat. Dieser Prozess liest die Messwerte des A/D-Konverters aus dem Speicherbereich Mess und berechnet statistische Daten, unter anderem Mittelwert und Summe. Die statistischen Daten werden in einen Speicher- bereich Statistik geschrieben.

4. Report. Dieser Prozess greift auf den Speicherbereich Statistik zu und gibt die statistischen Daten aus. Eigentlich sollte dies auf einem Drucker geschehen. Wir geben die Daten der Einfachheit wegen auf dem Monitor, also in der Shell aus.

Bez¨uglich der gemeinsamen Daten im Speicherbereich Mess gelten als Synchroni- sationsbedingungen: Conv muss erst in den gemeinsamen Speicherbereich Mess die Werte eintragen, bevor Log und Stat die Messwerte auslesen k¨onnen.

Bez¨uglich der gemeinsamen Daten im Speicherbereich Statistik gelten als Syn- chronisationsbedingungen: Stat muss erst Statistikdaten in Statistik eintragen, bevor Report die Daten aus Statistik lesen kann.

Entwerfen und implementieren Sie das vorgestellte Realzeitproblem in C mit den entsprechenden Systemaufrufen und realisieren Sie den Datenaustausch zwi- schen den vier Prozessen einmal mit Pipes, Message Queues und Shared Memory und Semaphore. Am Ende der praktischen ¨Ubung m¨ussen drei Implementierungen des Programms in der Programmiersprache C mit den ent- sprechenden Systemaufrufen existieren.

Anzufertigen ist eine schriftliche Ausarbeitung mit einer Beschrei- bung der Aufgabe und L¨osung sowie der Quellcode der drei Imple- mentierungsvarianten und eine Diskussion der Vor- und Nachteile der drei Implementierungsvarianten.

Die Funktionalit¨at der Programme muss in der ¨Ubung demonstriert werden!

Bitte beachten Sie, dass Sie die praktische ¨Ubung nur alleine ausfertigen und abgeben k¨onnen!

1

(2)

Vorgehensweise

Die Prozesse Conv, Log, Stat, und Report sind parallele Endlosprozesse, das bedeutet, sie werden als Endlosprozesse realisiert. Schreiben Sie ein Ger¨ust zum Start der Endlosprozesse mit dem Systemaufruffork. Beobachten und ¨uberwa- chen Sie mit geeigneten Programmen wie top, psund pstree Ihre parallelen Prozesse und stellen Sie die Vater-Kindbeziehungen fest.

Das Programm kann mit der Tastenkombination Ctrl-C abgebrochen werden.

Dazu m¨ussen Sie einen Signalhandler f¨ur das Signal SIGINT implementieren.

Beachten Sie bitte, dass Sie beim Abbruch des Programmes alle von den Pro- zessen belegten Betriebsmittel (Message Queues, Shared Memory, Semaphoren) freigegeben werden.

Entwerfen Sie die Speicherbereiche zwischen den Prozessen und die Synchroni- sationsbedingungen zum Zugriff auf die Speicherbereiche in folgenden frei Va- riationen:

• ImplementierungsvariantePipes: Benutzen Sie zum Datenaustausch zwi- schen den Prozessen Pipes. Pipes sind Verbindungskan¨ale zwischen zwei Prozessen und funktionieren nach dem FIFO-Prinzip. Ein Prozess (Pro- duzent) kann in eine Pipe Daten ablegen und ein anderer Prozess (Kon- sument) kann aus der Pipe Daten entnehmen.

• Implementierungsvariante Message Queues: Benutzen Sie f¨ur die ge- meinsamen Daten eine Botschaftenwarteschlange (Message Queue) in die die Produzenten-Prozesse mitsend(mgssnd)Nachrichten ablegen und die Konsumenten-Prozesse mitreceive(msgrcv)Nachrichten entnehmen.

• ImplementierungsvarianteShared Memory und Semaphore: Legen Sie die gemeinsamen Daten von zwei Prozessen in einen gemeinsamen Spei- cher, auf den die Prozesse zugreifen. Damit es beim gleichzeitigen Zugriff von zwei Prozessen auf einen gemeinsamen Speicher nicht zu Inkonsis- tenzen kommt, implementieren Sie die Synchronisationsbedingungen mit Hilfe von Semaphoren.

Uberwachen Sie die Message Queues, Shared Memory Bereiche und Semaphoren¨ mit dem Programmipcs. Mitipcs k¨onnen Sie auch Message Queues, Shared Memory Bereiche und Semaphoren wieder freigeben, wenn Ihr Programm dieses bei einer inkorrekten Beendigung vers¨aumt hat.

Literatur

• Betriebssysteme,Albrecht Achilles, Springer-Verlag (2006)

• Betriebssysteme,Erich Ehses, Lutz K¨ohler, Petra Riemer, Horst Sten- zel, Frank Victor, Pearson Studium (2005)

2

Referenzen

ÄHNLICHE DOKUMENTE

  Für eine beendete Befundprüfung an einem unter den Schlüsselzahlen 4.1… oder 4.2… aufgeführten Messgerät ist eine Rahmengebühr zu erheben. Die für die

Jede Gruppe muss die geforderte grafische Anwendung f¨ur eine der folgenden Platt- formen entwickeln.. Als Plattformen

Aus der Pulsfrequenz lässt sich auf die körperliche Aktivität schlie- ßen: Schläft, sitzt oder bewegt sich der Träger des Fitness-Trackers!. Der Pulssensor kann daher die

 Die Auswertung der Daten des Basis-Monitorings und des Standard-Monitorings erfolgen aggregiert und anonym.  Eine Nutzung der erhobenen Daten außerhalb der

Die dabei vorgefundenen Installationen waren insbesondere zu Beginn der Installationen nicht immer fach- gerecht ausgeführt und wiesen zum Teil erhebliche Mängel auf

Erst dann strebt der Regelungstechniker an, die Regeldifferenz zu null zu machen, auch wenn eine Störgröße z in einer für den Regler unvorhersehbaren Weise auf die

This page was generated automatically upon download from the ETH Zurich Research Collection. For more information please consult the Terms

This entry point is used to read a message placed by the caller in a queue message segment incremental to another message placed by the caller in that