Operating Systems I (Bachelor) - SoSe 2014 |
Lab 3: Remote Shell
Abgabetermin: Montag, 09.06.2014, 09:00 Uhr
Lernziele.
Unix Systemschnittstelle (API)
Prozessmanagment: fork(), exec(), exit()
File-I/O: Filedescriptoren, fctrl(), dup()
Netzwerk-I/O: socket(), bind(), accept(), connect(), Client-Server-Modell
Serverarchitektur
Aufgabenstellung.
Implementieren Sie einen Server, der über das Netzwerk Kommandos entgegennimmt und diese ausführt. Der Server soll dazu über ein TCP-Port erreichbar sein. Er soll mehrere Verbindungen von unterschiedlichen Clienten entgegennehmen und verarbeiten können.
Implementieren Sie einen Clienten, der sich mit dem Server verbindet und eine Eingabe (Kommandozeile) zur Verfügung stellt. In der Kommandozeile des Clienten soll der Benutzer kommandos, eingeben können, welche auf dem Server ausgeführt werden. Dabei gibt es zwei Arten von Kommandos:
Programme (Kommandozeilenanwendungen auf dem Server)
Bei Programmen soll die Standardausgabe des server-seitig gestarteten Programms an den Clienten geleitet werden.
Zusatzaufgabe.
Implementieren Sie die Kommandos "get" und "put". Mit den Kommandos "get" und "put", soll der Client eine Datei zum Server hochladen / herunterladen können, ähnlich ftp.
Analysieren Sie das Laufzeitverhalten Ihres Systems. Verbinden Sie sich dazu mit unterschiedlich vielen (2-6) Clienten mit dem Server. Führen Sie nun folgende Experimente durch:
Eine große Datei von allen Clienten runterladen lassen
Ein CPU-lastiges Programm durch alle Clienten starten
Viele lange dauert sie Ausführung des Programms bzw. das Herunterladen in Abhängigkeit von der Anzahl der Clienten?
Nutzen Sie für die Implementierung folgende Vorlage lab-3.tar.
Abgabe der Lösung.
Quelltexte als .tar-Datei (make pack)
Hinweise.
Ressourcen.
Folien aus den UE-Stunden