Systemprogrammierung I - Aufgaben zur Erlangung der Klausurzulassung für Informatiker und Wirtschaftsinformatiker



Ähnliche Dokumente
MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Lehrer: Einschreibemethoden

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

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Erstellen der Barcode-Etiketten:

1 topologisches Sortieren

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

Grundlagen der Theoretischen Informatik, SoSe 2008

NEUES BEI BUSINESSLINE WINDOWS

Dateimanagement in Moodle Eine Schritt-für

Anleitung über den Umgang mit Schildern

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

Erstellen von x-y-diagrammen in OpenOffice.calc

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

Erweiterung AE WWS Lite Win: AES Security Verschlüsselung

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien

HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG

Um die Patientenverwaltung von Sesam zu nutzen, muss man die Patienten natürlich zuerst in die Kartei eintragen.

4.1 Wie bediene ich das Webportal?

Benutzerhandbuch - Elterliche Kontrolle

Stammdatenanlage über den Einrichtungsassistenten

Aufklappelemente anlegen

Hinweise zur Datensicherung für die - Prüfmittelverwaltung - Inhalt

MARCANT - File Delivery System

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen

AutoCAD Dienstprogramm zur Lizenzübertragung

Übernahme von Daten aus einem bestehenden Outlook-Profil bzw. einem anderen Exchange Server

Filialpreisverwaltung

Hilfedatei der Oden$-Börse Stand Juni 2014

teamsync Kurzanleitung

TR75E002-A FA / Bedienungsanleitung Industrie-Handsender-Verwaltung IHV DEUTSCH

sidoku sidoku EXPRESS Release Stand: erstellt von: EXEC Software Team GmbH Südstraße Ransbach-Baumbach

Objektorientiertes Programmieren mit Suse Linux

Sichern auf den zentralen TSM-Servern unter Windows. Sichern auf den zentralen TSM-Servern unter Windows

Print2CAD 2017, 8th Generation. Netzwerkversionen

SMS/ MMS Multimedia Center

Antolin-Titel jetzt automatisch in WinBIAP kennzeichnen

etax.schwyz: Suche nach Steuerfalldateien

SelfLinux cron

Import und Export von Übergängern

Kurzanleitung der Gevopa Plattform

Windows 7 Ordner und Dateien in die Taskleiste einfügen

GEVITAS Farben-Reaktionstest

CodeSaver. Vorwort. Seite 1 von 6

Kurzanleitung zur Updateinstallation von SFirm 3.1

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

Barcodedatei importieren

Warenwirtschaft Handbuch - Administration

STRATO Mail Einrichtung Mozilla Thunderbird

Anzeige von eingescannten Rechnungen

2. Im Admin Bereich drücken Sie bitte auf den Button Mediathek unter der Rubrik Erweiterungen.

Vorabversion. Schulung am Homepage Administration und Pflege

Workflows verwalten. Tipps & Tricks

Das Modul ARTIKEL-BARCODE ermöglicht den Druck von Barcode-Etiketten der EAN-Codes 8 und 13.

StudyDeal Accounts auf

FEUERWEHR KAMERADEN LEHRGÄNGE 4 DRUCKEN 5

Parks > Authorization Manager. Versionshinweise

Adminer: Installationsanleitung

Installation OMNIKEY 3121 USB

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

Umzug der abfallwirtschaftlichen Nummern /Kündigung

Step by Step Webserver unter Windows Server von Christian Bartl

3 Wie bekommen Sie Passwortlevel 3 und einen Installateurscode?

Dokumentenverwaltung

Datenexport aus JS - Software

Anleitung für die Online-Bewerbung über LSF auf Lehrveranstaltungen aller Lehramtsstudiengänge

Anleitung vom 4. Mai BSU Mobile Banking App

2. Im Admin Bereich drücken Sie bitte auf den roten Button Webseite bearbeiten, sodass Sie in den Bearbeitungsbereich Ihrer Homepage gelangen.

Internationales Altkatholisches Laienforum

Anleitung Administration Alterssiedlungen Basel. So aktualisieren Sie Ihre Daten. Version:

Nutzer-Synchronisation mittels WebWeaver Desktop. Handreichung

Starten Sie Eclipse: Hier tragen sie Ihr Arbeitsverzeichnis ein. Zu Hause z.b. c:\workspace.

Gibt Daten im erweiterten Format aus. Dies beinhaltet die Angabe von Zugriffsrechten, Besitzer, Länge, Zeitpunkt der letzten Änderung und mehr.

KSN-WEBMAIL-BASICS. November Grundlagen zum Thema Webmail TEIL A. Benutzen von Webmail

Datenbank LAP - Chefexperten Detailhandel

E Mail Versand mit der Schild NRW Formularverwaltung

Hardware - Software - Net zwerke

STRATO Mail Einrichtung Apple Mail 8

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Leichte-Sprache-Bilder

Netzwerkversion PVG.view

Installation von Druckern auf dem ZOVAS-Notebook. 1. Der Drucker ist direkt mit dem Notebook verbunden

Wie halte ich Ordnung auf meiner Festplatte?

Tutorial -

FORUM HANDREICHUNG (STAND: AUGUST 2013)

1 Die Bado Schleswig-Holstein

1. So beginnen Sie eine Kalkulation

Bereich METIS (Texte im Internet) Zählmarkenrecherche

Datenbanken Kapitel 2

SMS-Dienst SMS-Dienst procar informatik AG Stand: FS 04/2011 Eschenweg Weiterstadt 1

Fachhochschule Fulda. Bedienungsanleitung für QISPOS (Prüfungsanmeldung, Notenspiegel und Bescheinigungen)

Schuljahreswechsel im Schul-Webportal

Anleitung für die Hausverwaltung

Newsletter (Mailinglisten) Serien- s versenden Mailinglisten-Tool verwenden

Dokumentation. Black- und Whitelists. Absenderadressen auf eine Blacklist oder eine Whitelist setzen. Zugriff per Webbrowser

Evident VDDS-Anbindung von MIZ

ACDSee 10. ACDSee 10: Fotos gruppieren und schneller durchsuchen. Was ist Gruppieren? Fotos gruppieren. Das Inhaltsverzeichnis zum Gruppieren nutzen

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

Nutzerhandbuch Zentrale Klassenverwaltung

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

Transkript:

Systemprogrammierung I - Aufgaben zur Erlangung der Klausurzulassung für Informatiker und Nachfolgend finden Sie die drei Aufgaben, die Sie als Zulassungsvoraussetzung für die Scheinklausur am 18.7.2001 lösen müssen. Die Aufgaben müssen bis zum 9.7.2001 8:00 Uhr abgegeben werden. Sollten Fragen zu den Aufgabenstellungen und/oder zu den Lösungsmöglichkeiten auftauchen, dann stehen wir Ihnen jederzeit zur Verfügung. Aufgabe 1: Schreiben Sie ein Programm search, mit dem sie ähnlich wie mit dem UNIX- Kommando find(1) Dateibäume rekursiv durchsuchen können. Der Name des Verzeichnisses, in dem die Suche startet, wird dabei in der Kommandozeile übergeben. Von diesem Verzeichnis aus wird rekursiv in Unterverzeichnisse abgestiegen, wobei Symbolic-Links nicht verfolgt werden. Im Gegensatz zum UNIX find soll search aber den Dateibaum nicht zuerst in die Tiefe verfolgen, sondern in die Breite, d.h. es wird nicht sofort bis zu den Blättern abgestiegen, sondern schichtenweise: search find Das Programm soll außerdem folgende Kommandozeilen-Optionen verstehen, durch die es in seiner Funktionalität beeinflußt wird: a) -print: Die Namen aller Dateien im Startverzeichnis und allen Unterverzeichnissen werden auf den Standardausgabekanal geschrieben. Hinter dem Dateinamen steht in Klammern immer der Hinweis um welchen Typ von Datei es sich handelt, also etwa (R) für eine reguläre Datei, (D) für Directory usw. Verwenden Sie dazu dieselben Buchstaben wie das Kommando ls(1). Systemprogrammierung I 1

b) -depth n: Statt eines unbegrenzten Abstiegs wird hier die Suche auf n Ebenen beschränkt. Sollten weitere Unterverzeichnishierarchien existieren, so werden sie durch das Programm ignoriert. c) -user uname: Es werden nur diejenigen Dateien beachtet, die dem Benutzer uname gehören. Der Benutzer kann dabei entweder durch seine UID oder durch seinen Benutzernamen spezifiziert werden. d) -group gname: Wie bei der Option -user, nur stattdessen mit den Gruppennamen, bzw. der GID. e) -exec command [options]: Für jede gefundene reguläre Datei wird das Kommando command aufgerufen. Dem Kommando werden dabei die nachfolgenden Optionen (options), sowie der Name der gefundenen Datei als Kommandozeile übergeben. "-exec" darf deshalb immer nur als letzte Option für search angegeben werden. f) -name file: Es wird nach der Datei file gesucht und ihr kompletter Pfad ausgegeben, wenn sie existiert. Beachten Sie, daß alle Optionen gleichzeitig angegeben werden können und sich dann ergänzen. So werden etwa bei "print" dann nur diejenigen Dateien angezeigt, die allen angegebenen Kriterien genügen. Systemprogrammierung I 2

Aufgabe 2: Entwerfen und programmieren Sie ein Programm yash (yet another shell), das ähnlich einer einfachen UNIX-Shell zum Starten von Programmen verwendet werden kann. Ihre Shell soll dazu das Prompt yash> ausgeben und auf die Eingabe durch den Benutzer warten. Sobald dieser seine Eingabe mit return bestätigt, wird das angegebene Kommando mit allen Optionen durch Ihre Shell gestartet. Die Shell wartet dabei üblicherweise bis das Kommando beendet ist und fragt erst anschliessend nach dem nächsten Kommando. Durch die Eingabe von Ctrl-Z (Stop-Signal, SIGTSTOP) von der Tastatur soll der gerade im Vordergrund laufende Prozeß in den Hintergrund geschickt werden und die Shell mit dem Promptsymbol ein neues Kommando anfordern. Alternativ dazu kann ein Kommando auch sofort als Hintergrundprozeß gestartet werden, indem in der Eingabezeile als letztes Zeichen ein & angegeben wird. Weiterhin existieren die folgenden Kommandos, die von der Shell direkt interpretiert werden, d.h. keine anderen Programme starten: a) jobs: Die Shell gibt eine Liste aller noch laufenden Hintergrundprozesse sortiert nach ihren Startzeiten aus, wobei die Prozesse mit Nummern versehen werden sollten. b) fg [n]: Der Hintergrundprozeß n wird in den Vordergrund geholt. Falls keine Nummer spezifiziert wurde, wird der zuletzt gestartete Hintergrundprozeß ausgewählt. c) kill [-signal] jobnumber: Dem Hintergrundprozeß mit der angegebenen Jobnummer wird ein Signal zugestellt. Falls eine Signalnummer spezifiziert wurde, wird dieses Signal zugestellt, sonst standardmäßig SIGTERM. d) exit: Die Shell terminiert. Systemprogrammierung I 3

Aufgabe 3: Programmieren Sie ein Erzeuger-Verbraucher-System, das Daten über einen Ringpuffer überträgt. Der Erzeugerprozeß liest von der Standard-Eingabe und schreibt in den Ringpuffer, der Verbraucherprozeß liest aus dem Ringpuffer und schreibt auf die Standard-Ausgabe. Im einzelnen sollen Erzeuger und Verbraucher die folgende Funktionalität haben: Erzeuger: Der Prozeß erzeugt ein Shared-Memory-Segment und die für die Koordinierung benötigten Semaphore. Der Key für diese Datenstrukturen soll mittels ftok(3) aus dem Homedirectory gewonnen werden. Am Anfang des Shared-Memory-Segments soll eine Verwaltungsdatenstruktur angelegt werden, die alle Daten enthält, die für die Verwaltung der Kommunikation benötigt werden. Außerdem liegt der Kommunikationspuffer im Shared-Memory. Der Puffer soll als Ringpuffer (Erzeuger schreibt bis zum Ende des Puffers und fängt dann wieder vorne an) benutzt werden. Die Größe des Ringpuffers soll über eine Macro-Definition in einer include-datei festgelegt werden. Testen Sie Ihr Programm mit den Pufferlängen 1024, 12, 2 und 1. Die Schreiboperationen auf dem Ringpuffer müssen über Semaphore geeignet mit den Leseoperationen des Verbrauchers koordiniert werden! Sollte bereits ein Erzeuger-Prozeß laufen, sollen weitere Erzeuger-Starts mit einer Fehlermeldung abbrechen. Shared-Memory-Segment und Semaphore bleiben auch nach dem Ende des Programmlaufs, in dem sie erzeugt wurden, im Betriebssystem liegen. Sie müssen deshalb dafür sorgen, daß bei Beendigung des Erzeugers (auch bei Abbruch durch die Signale SIGHUP, SIGINT, SIGQUIT und SIGTERM!) aufgeräumt wird (shmctl(2), semctl(2)). Ein evtl. vorhandener Verbraucherprozeß soll im Rahmen der Aufräumaktion mit dem Signal SIGPIPE beendet werden. Dabei muß allerdings gewartet werden, bis der Verbraucher alle Daten aus dem Ringpuffer gelesen und ausgegeben hat. Mit Hilfe des Kommandos ipcs(1) können Sie sich ausgeben lassen, welche dieser Betriebsmittel angelegt wurden, mit ipcrm(1) können Sie im Ernstfall (z. B. wenn Ihr Programm mit Segmentation Fault abgebrochen ist) über eine Kommandozeile aus der Shell aufräumen. Achten Sie beim Erzeugen von Shared-Memory und Semaphoren darauf, daß Sie ausreichend Zugriffsrechte vergeben (am besten Read für alle). Systemprogrammierung I 4

Verbraucher: Der Verbraucherprozeß attached das Shared-Memory-Segment und überprüft, daß noch kein Verbraucher existiert. Existiert bereits ein Verbraucher, terminiert er mit einer Fehlermeldung. Existiert noch kein Verbraucher, schreibt er seine Prozeß-Id in die Verwaltungsstruktur (Koordinierung hier nicht vergessen, es könnten mehrere Verbraucher gleichzeitig loslaufen!) und beginnt aus dem Ringpuffer zu lesen und die Daten auf dem Standardausgabekanal auszugeben. Am Ende der Datenübertragung wird er vom Erzeuger mit dem Signal SIGPIPE terminiert. Er muß sich nicht weiter um Aufräumarbeiten kümmern. Es soll möglich sein, den Verbraucher mit dem Signal SIGINT abzubrechen. In diesem Fall meldet sich der Verbraucher ab (er signalisiert mit Prozeß-Id "-1" in der Verwaltungsstruktur, daß kein Verbraucher mehr vorhanden ist!) und terminiert. Danach soll es möglich sein, das Verbraucher-Programm neu zu starten. Dieser Prozeß klemmt sich wieder am Puffer an und gibt dessen Inhalt weiter aus. Beachten Sie hierbei, daß SIGINT an beliebiger Stelle eintreffen kann, auch während gerade Daten aus dem Ringpuffer gelesen werden. Die Verwaltungsdaten (z. B. Schreib/Lese-Indizes/Semaphore) dürfen dabei auf keinen Fall in einen inkonsistenten Zustand geraten! Systemprogrammierung I 5