Systemsoftware Praktikum



Ähnliche Dokumente
SS 08. Systemprogrammierung unter Linux. Client Server Projekt. Elektronische Tafel. Seite

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

FORUM HANDREICHUNG (STAND: AUGUST 2013)

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Leichte-Sprache-Bilder

ICS-Addin. Benutzerhandbuch. Version: 1.0

Netzwerkversion PVG.view

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

Lizenzen auschecken. Was ist zu tun?

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11

IMAP Backup. Das Programm zum Sichern, Synchronisieren, Rücksichern und ansehen von gesicherten Mails. Hersteller: malu-soft

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Whitepaper. Produkt: combit Relationship Manager / address manager. Dateiabgleich im Netzwerk über Offlinedateien

Druck von bzw. Scan auf USB-Stick

Netzwerk einrichten unter Windows

ecaros2 - Accountmanager

INDEX. Öffentliche Ordner erstellen Seite 2. Offline verfügbar einrichten Seite 3. Berechtigungen setzen Seite 7. Öffentliche Ordner Offline

Exchange Export. Mailbox Export

Whitepaper. Produkt: address manager David XL Tobit InfoCenter AddIn für den address manager Zuordnung

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Primzahlen und RSA-Verschlüsselung

Nutzung von GiS BasePac 8 im Netzwerk

CMS.R. Bedienungsanleitung. Modul Cron. Copyright CMS.R Revision 1

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Tutorial -

Artikel Schnittstelle über CSV

Leitfaden zur Einrichtung za-mail mit IMAP auf dem iphone

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel für Mac. amac-buch Verlag

Handbuch für Easy Mail in Leicht Lesen

iphone- und ipad-praxis: Kalender optimal synchronisieren

Drucken aus der Anwendung

Version Deutsch In diesem HOWTO wird beschrieben wie Sie Ihren Gästen die Anmeldung über eine SMS ermöglichen.

Installationsanleitung für CashPro im Mehrbenutzerzugriff/Netzwerkbetrieb

Adminer: Installationsanleitung

Funktions-Postfach (Shared Mailbox) in Outlook 2010/2013 einrichten

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Installation eblvd (Fernwartung)

PC CADDIE Web-SMS-Service

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Karten-Freischaltung mit dem UNLOCK MANAGER

S TAND N OVEMBE R 2012 HANDBUCH DUDLE.ELK-WUE.DE T E R M I N A B S P R A C H E N I N D E R L A N D E S K I R C H E

.procmailrc HOWTO. zur Mailfilterung und Verteilung. Stand:

Professionelle Seminare im Bereich MS-Office

Dokumentation IBIS Monitor

Prozeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen

Step by Step Webserver unter Windows Server von Christian Bartl

Online-Zugang zum EOM. Anleitung

Öffnen Sie den Internet-Browser Ihrer Wahl. Unabhängig von der eingestellten Startseite erscheint die folgende Seite in Ihrem Browserfenster:

icloud nicht neu, aber doch irgendwie anders

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Print2CAD 2017, 8th Generation. Netzwerkversionen

Synchronisations- Assistent

Hilfedatei der Oden$-Börse Stand Juni 2014

Netzwerkeinstellungen unter Mac OS X

Zahlen und das Hüten von Geheimnissen (G. Wiese, 23. April 2009)

Einrichten eines Postfachs mit Outlook Express / Outlook bis Version 2000

Fax einrichten auf Windows XP-PC

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Proxy. Krishna Tateneni Übersetzer: Stefan Winter

Migration NVC 5.x auf NEM/NPro (Migration eines bestehenden, produktiven NVC Verteilservers auf NEM/NPro)

Anleitung: VPN-Verbindung zum Schulserver einrichten

Bedienungsanleitung für den Online-Shop

Internet Kurs. Suchmaschinen

Update-Anleitung für SFirm 3.1

Kontakte Dorfstrasse 143 CH Kilchberg Telefon 01 / Telefax 01 / info@hp-engineering.com

Rillsoft Project - Installation der Software

SHAREPOINT Unterschiede zwischen SharePoint 2010 & 2013

Grafstat Checkliste Internetbefragung

Installation Hardlockserver-Dongle

Updateanleitung für SFirm 3.1

PC CADDIE SMS Versand

EasyWk DAS Schwimmwettkampfprogramm

Erfolgreiche Verbindung. 3. Anmeldung: Bitte geben Sie Ihren Benutzernamen und Ihr Kennwort ein.

Verwendung des IDS Backup Systems unter Windows 2000

FrogSure Installation und Konfiguration

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Internationales Altkatholisches Laienforum

Gezielt über Folien hinweg springen

robotron*e count robotron*e sales robotron*e collect Anmeldung Webkomponente Anwenderdokumentation Version: 2.0 Stand:

Schulungsunterlagen zur Version 3.3

1. Bearbeite Host Netzgruppen

BlueEvidence Services in Elexis

Leitfaden zur Durchführung eines Jahreswechsels in BüroWARE 5.x

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Kleines Handbuch zur Fotogalerie der Pixel AG

Softwaretechnologie -Wintersemester 2013/ Dr. Günter Kniesel

Neue Steuererklärung 2013 erstellen

Adressen der BA Leipzig

EnergyDataView. Benutzerhandbuch. Version Thüga AG MeteringService

Agentur für Werbung & Internet. Schritt für Schritt: Newsletter mit WebEdition versenden

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

Mind Mapping am PC. für Präsentationen, Vorträge, Selbstmanagement. von Isolde Kommer, Helmut Reinke. 1. Auflage. Hanser München 1999

Beschreibung Regeln z.b. Abwesenheitsmeldung und Weiterleitung

Informatik Kurs Simulation. Hilfe für den Consideo Modeler

Transkript:

Praktikum Client-Server-Projekt : Textretrievalsystem Übungsziel: Prozesserzeugung und Interprozesskommunikation unter UNIX / Linux Softwareerstellung im Team In dem Projekt soll eine Client - Server Architektur realisiert werden. Der Server ist ein eigenständiger Prozeß, der Aufträge von mehreren Client-Prozessen entgegen nimmt, diese ausführt und dem Client sein Ergebnis zurückmeldet. Im vorliegenden Fall soll der Server für Textdateien im ASCII-Format einen Wortindex verwalten, so daß ein Client den Server abfragen kann in welcher Datei ein bestimmtes Wort vorkommt. Ein Wort kann dabei in mehreren Textdateien vorkommen. Der Server durchsucht seinen Index, in dem das gesuchte Wort ( Schlüssel ) und die Dateien, in dem das Wort zu finden ist, abgelegt ist. Der Index wird über eine Schlüsseltransformation ( Hashing ) berechnet ( siehe dazu /1/, /2/ oder vergleichbare Literatur). Ein dritter Prozess Monitor überwacht die Kommunikation zwischen Client und Server bei der Auftragsausführung. Befehle Client Kommandointerpreter Klient shared memory Aufträge Auftragswarteschlang Server Rückmeldewarteschlang Hashtabelle Meldungen Ausgabeprozesse Textdateien Darstellung auf Bildschirm Monitor Logfile Server, Monitor und Klienten werden als unabhängige Prozesse gestartet und laufen in eigenen Konsolen, d.h. in unterschiedlichen Terminalfenstern. Seite 1 von 6

Funktionalität Server Es soll gewährleistet werden, dass immer nur ein Server existiert. Der Server kann immer nur nach einem Wort suchen. Der Server verwaltet eine Liste aller aktiven Klienten d.h. jeder Klient muss sich beim Start beim Server anmelden und beim Terminieren wieder abmelden. Die Hashtabelle ist statisch, d.h. es können maximal 991 unterschiedliche Worte indiziert werden. Die Hashfunktionen werden zu Verfügung gestellt ( siehe letzte Seite ). Der Server soll durch eine zeitliche Verzögerung der Auftragsannahme und Rückmeldung eine Netzwerkverbindung zwischen Klient und Server simulieren. Dazu soll der Server drei unterschiedliche Netzgeschwindigkeiten simulieren ohne Netz, d.h. Server und Klient laufen auf einem Rechner, schnelles Netz d.h. geringe zeitliche Verzögerung und langsames Netz. Die Simulation soll online zur Laufzeit des Servers eingestellt werden können. Die Umstellung der Zeitverzögerung soll über ein Server-Thread realisiert werden. Funktionalität Client Es können sich mehrere Klienten mit Server und Monitor verbinden. Der Client ist ein kleiner Kommandointerpreter der folgende Kommandos kennt: I <dateiname> S wort S wort1 wort2.. wortn FLAG : K -pid : Indiziere die Textdatei "dateiname". Eine Pfadangabe in dateiname soll möglich sein. : Nenne mir alle Textdateien in denen das Wort "wort" vorkommt. 1 < n <=5 ( d.h. maximal 5 Suchworte ) Suche nach mehreren Worten in Textdateien. Der letzte Parameter FLAG gibt an, ob die angegebenen Suchworte UNDverknüpft bzw. ODER-verknüpft werden sollen. Bei UND-Verknüpfung sucht man nach Textdateien, in denen alle angegebenen Worte vorkommen müssen. Bei ODER-Verknüpfung sucht man je Wort alle Dateien in denen mindestens dieses Wort vorkommt. : Anzahl von aktiven Client-Prozesse anzeigen. Option pid, PID aller aktiven Client-Prozesse anzeigen Q Beenden des aktuellen Client ( sich selbst beenden ) E Beenden des Servers, des Monitors und aller laufenden Client-Prozesse mit Aufräumen des Systems Im Falle von Suchaufträgen, die mit ODER verknüpft werden, sollen alle Dateien angezeigt werden, in denen ein Suchwort vorkommt. In der Ausgabe soll das Suchwort und alle Dateien, in denen es vorkommt angezeigt werden ( siehe Beispiel unten ). Beispiel: S sonne scheint ODER Ergebnis: sonne kommt vor in dateia.txt,dateib.txt,datc.txt scheint kommt vor in dateia.txt, datc.txt Seite 2 von 6

Im Falle von Suchworten mit UND-Verknüpfung sollen die Dateien angezeigt werden, in denen alle Worte vorkommen. Beispiel: S sonne scheint UND Ergebnis: sonne scheint kommt vor in dateia.txt,datc.txt Ein universeller Kommandointerpreter, der an die geforderten Kommandos angepasst werden kann wird zu Verfügung gestellt und soll benutzt werden ( siehe letzte Seite ). Nach der Erkennung eines korrekten Kommandos erzeugt der Client einen Auftrag, der durch eine eindeutige Nummer gekennzeichnet wird. Dieser Auftrag kann 1.. n Serveraufträge bewirken. Da der Server immer nur nach einem Wort suchen kann tritt dieser Fall im Befehl S auf, wenn nach mehreren Worten zu suchen ist. In diesem Fall muss im Auftrag für jedes Suchwort ein entsprechender Serverauftrag erzeugt werden. Die Serveraufträge zu einem Auftrag werden vom Kommandointerpreter selbst oder von einem Unterprozess an den Server weitergeleitet. Ein Auftrag mit allen seinen Parametern, den erzeugten Serveraufträgen und allen erhaltenen Ergebnissen wird in einer shared memory abgelegt. Es soll nur eine shared memory existieren, auf die alle Klienten zugriff haben. Für die shared memory ist eine Speicherverwaltung für Aufträge zu realisieren. Für jeden Auftrag erzeugt der Kommandointerpreter einen Ausgabe-Sohnprozess ( Systemfunktion fork() ), der auf die Rückmeldungen des Servers wartet und diese Rückmeldungen zu seinem Auftragsdaten in der shared memory ablegt. Sind alle Rückmeldungen zu seinem Auftrag vorhanden werden diese auswertet und danach eine formatierte Ausgabe am Bildschirm erzeugt. Danach kann der Auftrag aus der shared memory gelöscht werden und der Ausgabeprozess terminiert. Durch die Erzeugung von Sohnprozessen, die auf die Rückmeldungen des Servers warten und die Ausgabe auf der Konsole übernehmen ist es möglich, dass ein neues Kommando eingelesen und an den Server geschickt wird, abwohl das letzte Kommando noch nicht fertig bearbeitet ist ( Kommandoeingabe und Ausgabe laufen in parallelen Prozessen ). Dieser Fall kann vor allem dann auftreten, wenn Klient und Server auf zwei Rechnern laufen und ein langsames Netzwerk dazwischen liegt. Diese Situation soll im Server simuliert werden, in dem Zeitverzögerungen eingebaut werden. Funktionalität Monitor Um die laufenden Aufträge beobachten zu können wird ein Monitorprozess in einer eigenen Konsole gestartet, der die shared memory beobachtet und deren Inhalt auf der Konsole anzeigt. Zusätzlich erstellt der Monitor ein Logfile, in dem jeder fertig Auftrag, der aus der shared memory gelöscht wird protokolliert wird. Konsolenausgabe und Logfile sind nützlich für ihren späteren Systemtest. Die Klient-Server-Anwendung soll wahlweise mit oder ohne Monitor laufen können. Der Monitor soll jederzeit ohne Neustart von Server und Klienten aktivierbar sein. Seite 3 von 6

Interprozeßkommunikation: Kommandointerpreter / Ausgabeprozess/ Monitor: Datenaustausch über shared memory. Für die shared memory ist eine Speicherverwaltung für Aufträge zu realisieren. Die Synchronistion zwischen den Prozessen, die Zugriff auf die shared memory haben soll über binäre und allgemeine Semaphore realisiert werden. Das Synchronisationsprotokoll ist so zu wählen, dass alle Prozesse parallel arbeiten können. Kommandointerpreter / Server : asynchrone Nachrichten. Hierbei soll eine Nachrichten-FIFO ( UNIX MessageQueue ) für die Aufträge an den Server eingerichtet werden. Ausgabeprozess / Server : asynchrone Nachrichten. Hierbei soll eine Nachrichten-FIFO ( UNIX MessageQueue ) für die Rückmeldungen des Servers an den Ausgabeprozess eingerichtet werden Server / Client: Der Auftrag E soll bewirken, dass alle laufenden Prozesse terminieren und alle reservierten Betreibsmittel wieder freigegeben / gelöscht werden. Mit dem Server müssen daher auch alle Klienten, deren Sohnprozesse und der Monitor terminieren. Durch senden eines Signales mit der Systemfunktion kill() kann der Server dem Klienten mitteilen, dass er sich beenden soll. Der Klient muss dann vor dem beenden alle Sohnprozesse beenden, den Monitor zum beenden veranlassen sowie alle IPC-Objekte löschen. Zur Interprozeßkommunikation sind die IPC-Funktionen von UNIX System V und Signale zu verwenden. Projektdurchführung Bevor Sie Ihr Projekt realisieren ist ein Entwurf auszuarbeiten. Dieser Entwurf wird vor der Realisierung abgegeben. In ihrem Entwurf sollen die logischen Abläufe der Prozesse, die zeitliche Synchronisation zwischen den Prozessen und die Informationen, die die Prozesse untereinander austauschen dokumentiert sein. Der Entwurf muß also unter anderem das Synchronisationsprotokoll zwischen Client- Prozessen und Monitor beschreiben. Diese Beschreibung soll grafisch mit einem Petrinetz erfolgen. Zu realisieren sind folgende unabhängigen Prozesse: 1 Serverprozess mit zwei Threads, der "Textdatenbank" und Umstellung verzögerungszeit 1..m Klienten "Textretrieval", diese erzeugen je Auftrag einen Sohnprozess Ausgabe (UNIX Sohnprozesse ) 1 Monitorprozess Seite 4 von 6

Ihr Projekt setzt sich aus mehreren Softwaremodulen zusammen: Modul : Server Module: Hashing und Stack Modul(e) : Client und alle Module des Kommandointerpreters Modul: Auftragsausgabe Modul: Monitor Sollten die Module zu umfangreich werden, sind weitere Module zu erzeugen, die Teilaufgaben ( Funktionen ) erledigen. So können z.b. die Semaphoroperationen P, V und Init in ein eigenen Modul gelegt werden. Die Funktionen zum Empfangen/Senden von Aufträgen und Rücksenden/Empfangen Nachrichten zwischen Subklient und Server können ebenfalls in eigenen Modulen definiert werden. Zur Realisierung des Prozesses Client sollte der Kommandointerpreter aus Programmieren 3 ( 3. Übung ) verwendet werden. In diesem Fall besteht der Kommandointerpreter nicht aus einem, sondern mehreren Modulen Zur Realisierung des Hashing stehen die Module hash.c und stack.c schon zu Verfügung Wie man ein modulares Programm erstellt und verwaltet, können Sie dem Skript zu Programmieren 2, Kapitel Modulares Programmieren, entnehmen. Dieses Skript finden Sie unter der Homepage von Prof. Keller ( http://erde.fbe.fh-weingarten.de/keller ) unter dem Link Programmieren 2. SW-Module die sie für das Projekt zu Verfügug gestellt und benutzen sollen: 1. Kommandointerpreter In diesem Programm werden die Kommandos über eine Tabelle definiert. Sie müssen dieses Programm an die in der Aufgabe geforderten Kommandos anpassen. Die Erläuterungen zu dem Kommandointerpreter finden sie unter http://erde.fbe.fh-weingarten.de/keller. 2. Hasching Der Index zu einem Wort wird über eine Hashfunktion H(Schlüssel ) berechnet. Das Hashing-Modul verwendet folgende Hashfunktion: Schlüssel ist ein Wort. Das Wort enthält Zeichen c1... cn, 1<=n<=14. Im Index werden nur die ersten 14 Zeichen berücksichtigt. Index(c1,..,cn) =H(ci)= n 1 ci mod M mit M= 991 Diese Funktion ist nicht eindeutig, d.h. für zwei unterschiedliche Worte kann der gleiche Index auftreten. Man spricht von einer Kollision. Zur Kollisionsbehandlung ist die Methode des quadratischen Sondierens /1/,/2/ zu wählen. Die Kollision wird hierbei durch folgendes Vorgehen gelöst: Index 0 (Schlüssel) = H(Schlüssel) Index 1 (Schlüssel) = (H(Schlüssel +1 2 ) mod M Index 2 (Schlüssel) = (H(Schlüssel) -1 2 ) mod M Seite 5 von 6

Index 3 (Schlüssel) = (H(Schlüssel) + 2 2 ) mod M Index 4 (schlüssel) = (H(Schlüssel) -2 2 ) mod M.. Index 2i-1 (Schlüssel) = ( H(Schlüssel) + i 2 ) mod M Index 2i (Schlüssel) = ( H(Schlüssel) - i 2 ) mod M 1 <= i <= (M-1)/2 Ist der errechnete Index 0 schon vergeben wird Index 1 versucht. Ist dieser vergeben wird Index 2 versucht usw. Das Hashing müssen Sie nicht selbst realisieren. Es werden Ihnen einige Funktionen schon zu Verfügung gestellt, die Sie in Ihr Programm einbinden können. Mehr Informationen zu Thema Hashing erhalten sie im Skript zu Programmieren 2. Dieses Skript finden Sie unter der Homepage von Prof. Keller ( http://erde.fbe.fh-weingarten.de/keller ) unter dem Link Programmieren 2. Literaturverzeichnis /1/ Wirth, Niklaus: Algorithmen und Datenstrukturen /2/ Güting, R.H.: Datenstrukturen und Algorithmen, Teubner Stuttgart 1992 /3/ W. Richard Stevens: Programmierung von UNIX-Netzen, Grundlagen, Programmierung, Anwendung, Carl Hanser Verlag,, 1992, ISBN 3-446-16318-2 /4/ W. Richard Stevens: Programmierung in der Unix Umgebung, Addison Wesley, ISBN 3-89319-814-8 /5/ Bach, Maurice J.: UNIX - Wie funktioniert das Betriebssystem, Carl Hanser Verlag, 1991, ISBN 3-446-15693-3 /6/ RRZN Unix ( Benutzung ), kann beim Asta erworben werden /7/ RRZN Unix Systemverwaltung,kann beim Asta erworben werden /8/ Banahan & Rutter,: UNIX lernen, verstehen, anwenden, Carl Hanser Verlag, 1987, ISBN 3-446-13975-3 /9/ Gulbins, Jürgen : UNIX, 3. Auflage, Springer Verlag, 1988, ISBN3-540-13242-2 /10/ Rochkind, M.: UNIX Programmierung für Fortgeschrittene, Hanser Verlag, 1991 /11/ H. Herold: Linux - Unix Systemprogrammierung, Addison Wesley ISBN 3-8273-1512-3 /12/ Gampp,Keller Unterlagen zum praktikum, http://erde.fbe.fh-weingarten.de/keller Seite 6 von 6