PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN



Ähnliche Dokumente
PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

Systemnahe Programmierung in C/C++

8.3 Sonstiges/Signalbehandlung

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

1 Vom Problem zum Programm

Synchronisierung. Kommunikationstechnik, SS 08, Prof. Dr. Stefan Brunthaler 73

1 Einleitung. Lernziele. automatische Antworten bei Abwesenheit senden. Einstellungen für automatische Antworten Lerndauer. 4 Minuten.

Zugang zum Online-Portal mit Passwort Benutzeranleitung (Stand 01/2015)

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

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

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

Zahlen auf einen Blick

DELFI. Benutzeranleitung Dateiversand für unsere Kunden. Grontmij GmbH. Postfach Bremen. Friedrich-Mißler-Straße Bremen

Abwesenheitsnotiz im Exchange Server 2010

Datenbank LAP - Chefexperten Detailhandel

Kreativ visualisieren

Kurzanleitung snom 370

Anwahlprogramm. zur. Modem-Schnittstelle TH004

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

Zwischenablage (Bilder, Texte,...)

Anleitung zum Öffnen meiner Fotoalben bei web.de

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

Professionelle Seminare im Bereich MS-Office

Word 2010 Schnellbausteine

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

Gesprächsführung für Sicherheitsbeauftragte Gesetzliche Unfallversicherung

Installationsanleitung FRITZ!BOX Fon 7270

Hinweise zum Übungsblatt Formatierung von Text:

Beispiel(unten ist der Spielfeldrand):

BENUTZERHANDBUCH für. Inhaltsverzeichnis. 1. Anmeldung. 2. Rangliste ansehen. 3. Platzreservierung. 4. Forderungen anzeigen

15.3 Bedingte Wahrscheinlichkeit und Unabhängigkeit

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

Umgang mit Schaubildern am Beispiel Deutschland surft

Inhalt. Allgemeine Einführung. Argumentationsvermögen. Räumliches Vorstellungsvermögen. Begabungen und Fähigkeiten messen

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

Dokumentation IBIS Monitor

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Anleitung über den Umgang mit Schildern

SWOT Analyse zur Unterstützung des Projektmonitorings

Verarbeitung von ZV-Dateien im Internetbanking. Inhalt. 1. Datei einlesen Datei anzeigen, ändern, löschen Auftrag ausführen...

KabelKiosk NDS CI+ Modul Fehlercode-Liste

Statuten in leichter Sprache

Lizenzierung von SharePoint Server 2013

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Angaben zu einem Kontakt...1 So können Sie einen Kontakt erfassen...4 Was Sie mit einem Kontakt tun können...7

Glaube an die Existenz von Regeln für Vergleiche und Kenntnis der Regeln

Elternzeit Was ist das?

Widerrufsbelehrung der Free-Linked GmbH. Stand: Juni 2014

Der Gabelstapler: Wie? Was? Wer? Wo?

Vorbereitung einer Grafik zum Druck einer Glotze aus, Stadion an! -Zaunfahne Torsten Bunde, Stand 5. Juli 2014

1) Farbsteuergerät in der Nikobus-Software unter Modul zufügen hinzufügen.

Mediator 9 - Lernprogramm

LPT1 Anschluss mit PCMCIA Karte

IBM SPSS Statistics Version 23. Einführung in Installation und Lizenzierung

LDAP Konfiguration nach einem Update auf Version 6.3 Version 1.2 Stand: 23. Januar 2012 Copyright MATESO GmbH

Lehrer: Einschreibemethoden

Benutzung der LS-Miniscanner

Version smarter mobile(zu finden unter Einstellungen, Siehe Bild) : Gerät/Typ(z.B. Panasonic Toughbook, Ipad Air, Handy Samsung S1):

Online Bestellsystem Bedienungsanleitung

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

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

Integrated Services Realtime Remote Network

White Paper - Umsatzsteuervoranmeldung Österreich ab 01/2012

Die elektronische Rechnung als Fortsetzung der elektronischen Beauftragung so einfach geht es:

Liebe Interessierte an technischen Lösungen für die Sicherheit zu Hause,

Das Festkomitee hat die Abi-Seite neu konzipiert, die nun auf einem (gemieteten) Share Point Server

WINLINK 2000 SPAM-KONTROLLE UND NACHRICHTEN PRIORITÄTEN Aktualisiert 27. März 2012

Lizenzierung von SharePoint Server 2013

Deutsches Rotes Kreuz. Kopfschmerztagebuch von:

Evident VDDS-Anbindung von MIZ

Einführungskurs MOODLE Themen:

Hochschule Ravensburg-Weingarten. Technik Wirtschaft Sozialwesen. Projektarbeit

C.M.I. Control and Monitoring Interface. Zusatzanleitung: Datentransfer mit CAN over Ethernet (COE) Version 1.08

Chemie Zusammenfassung KA 2

Erstellen eigener HTML Seiten auf ewon

4D Server v12 64-bit Version BETA VERSION

Anleitung für das Online Update

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

Einstellungen für SEPA-Lastschriften in der VR-NetWorld-Software

Alcatel-Lucent 500 DECT Handset

Pädagogik. Melanie Schewtschenko. Eingewöhnung und Übergang in die Kinderkrippe. Warum ist die Beteiligung der Eltern so wichtig?

teamsync Kurzanleitung

Erste Schritte ANLEITUNG Deutsche Sportausweis Vereinsverwaltung Schnittstelle zum Portal des Deutschen Sportausweises unter

TeamSpeak3 Einrichten

Mobilgeräteverwaltung

Browsereinstellungen für moneycheck24 in Explorer unter Windows

Handbuch Programmierung teknaevo APG

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

ONLINE-AKADEMIE. "Diplomierter NLP Anwender für Schule und Unterricht" Ziele

etax.schwyz: Suche nach Steuerfalldateien

ACHTUNG: Es können gpx-dateien und mit dem GP7 aufgezeichnete trc-dateien umgewandelt werden.

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

Papierverbrauch im Jahr 2000

Tutorial about how to use USBView.exe and Connection Optimization for VNWA.

Einführung in die Programmierung

Transkript:

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN UNIX/Linux-Interprozesskommunikation 8. UNIX/Linux-Signale Wintersemester 2015/16

UNIX/Linux-IPC-Mechanismen Nachrichtenbasierter Informationsaustausch: 5. 1. Nachrichten(warte)schlangen ( message queues ) ç System V IPC 2. Sockets ç BSD-UNIX Speicherbasierter Informationsaustausch: 6. 3. Gemeinsame Speicherbereiche ( shared memory ) ç System V IPC 7. 4. Pipes (Named Pipes und FIFOs) ç Version 7 Signale: 8. 5. Asynchrone UNIX-Signale ç Version 7 Synchronisationsmechanismen: 6. UNIX-Semaphore ç System V IPC ws 2015/16 H.-A. Schindler Folie: 8-2

Signale: Grundsätzliches Ursprung: Ø erstmalig in (Bell Labs) UNIX Version 7: als unzuverlässige Signale Zweck: Prozess(e) (ohne längere Botschaft) über Auftreten bestimmter Ereignisse informieren Signale sind nummeriert: Ø ein bestimmter Ereignistyp ist jeweils fest an ein bestimmtes Signal gekoppelt Ø der Interruptmechanismus auf Prozess-Ebene (vergl. Vorlesung) mögliche Ereignisse: 1. (synchrone) Fehlerereignisse 2. asynchrone Ereignisse 3. nutzerdefinierte Ereignisse (neuer) ws 2015/16 H.-A. Schindler Folie: 8-3

Fehler-Ereignisse Ursache: können bei Ausführung eines Prozesses entstehen, also synchron zu dessen Abarbeitung Beispiele: Prozess spricht unzulässige Speicheradresse an Prozess will ungültige Anweisung ausführen (nichtexistierender Befehlscode, z.b. durch versehentliche Abarbeitung von Daten). Division durch Null... ws 2015/16 H.-A. Schindler Folie: 8-4

Asynchrone Ereignisse Ø haben mit Ausführung eines Prozesses nichts zu tun Ø treten unabhängig davon und folglich asynchron dazu auf Beispiele: ein Prozess aus Menge kooperativ arbeitender Prozesse sendet anderen (vereinbartes) Signal, um auf internes Ereignis bei ihm selbst aufmerksam zu machen (z.b. Zwischenergebnisse fertiggestellt) Abbruch eines Kinderprozesses bewirkt Signal an seinen Elternprozess Gerätetreiber kann Signal an einen Prozess senden (z.b. bei Fehler) Wenn ein Prozess einen Alarm-Zeitpunkt gesetzt hat, sendet Betriebssystem ein Alarm-Signal, wenn die programmierte Zeit vergangen ist.... ws 2015/16 H.-A. Schindler Folie: 8-5

Signale: Funktionsweise Ø Signale über Betriebssystem-Kern an jeweiligen Prozess gesendet Ø außer durch Ereignisse kann Kern auch durch Systemaufrufe kill(.. ) sigsend(..) [in neueren Systemen] veranlasst werden, an spezifizierten Prozess Signal zu senden. UNIX-Signale: UNIX (u. Linux) definieren Menge von Signalen Standardmäßig: jedes Signal an bestimmten Ereignistyp gekoppelt Außerdem: 2 Signale, denen Nutzer selbst Bedeutung zuweisen kann Jedes Signal kann an jeden Prozess gesendet werden. Empfängerprozess kann seine Reaktion auf bestimmtes Signal in Signal- Behandlungsroutine ( signal handler ) selbst festlegen ws 2015/16 H.-A. Schindler Folie: 8-6

Signale: Funktionsweise weiter UNIX-Signale: Signal-Behandlungsroutine ( signal handler ) davon gibt es 2 Ausnahmen ohne bzw. ohne aktivierte Signalbehandlungsroutine: Ø für jedes Signal Standard-Reaktion definiert Ø Verfahrensweise erinnert an Interrupt-Behandlung in Betriebssystemen, daher auch als Interruptbehandlung auf Prozessebene bezeichnet. ws 2015/16 H.-A. Schindler Folie: 8-7

Tabelle: Signale Nr. symbol. Beschreibung Standard-Reaktion 1 SIGHUP Verbindung unterbrochen ( hangup ) Prozess beenden 2 SIGINT Unterbrechung ( Interrupt ) d. Prozesses Prozess beenden 3 SIGQUIT Programmabbruch Prozess beenden + Core 4 SIGILL nichtdeutbarer ( illegal ) Befehl Prozess beenden + Core 5 SIGTRAP Hardwarefehler ( trace trap ) Prozess beenden + Core 6 SIGABRT abnormale Prozessbeendigung ( abort ) Prozess beenden + Core 7 SIGEMT Hardwarefehler ( emulate instruction executed ) Prozess beenden + Core 8 SIGFPE Gleitkommafehler ( floating point exception ) Prozess beenden + Core 9 SIGKILL bedingungsloser Prozessabbruch ( kill ) Prozess beenden 10 SIGBUS Bus-Fehler ( bus error ) Prozess beenden + Core 11 SIGSEGV Speicherzugriff unzulässig Prozess beenden + Core ( segmentation violation ) ws 2015/16 H.-A. Schindler Folie: 8-8

Tabelle: Signale Nr. symbol. Beschreibung Standard-Reaktion 12 SIGSYS nichtexistier. Systemaufruf ( system call ) Prozess beenden + Core 13 SIGPIPE Schreiben in Pipe ohne Reader ( pipe ) Prozess beenden 14 SIGALRM Wecker ( alarm ) Prozess beenden 15 SIGTERM Beenden ( terminate ) Prozess beenden 16 SIGURG wichtige Socketbedingung ( urgent condition ) Ignorieren 17 SIGSTOP Prozess anhalten ( stop ) Prozess anhalten 18 SIGTSTP Stopsignal von Tastatur ( terminal stop ) Prozess anhalten 19 SIGCONT angehaltenen Prozess fortsetzen ( continue ) Fortsetzen/Ignorieren 20 SIGCHLD Statusänderung bei Kindprozess ( child ) Ignorieren 21 SIGTTIN Hintergrund-Leseversuch von Terminal Prozess anhalten 22 SIGTTOU Hintergrund-Schreibversuch auf Terminal Prozess anhalten ( tty out ) ws 2015/16 H.-A. Schindler Folie: 8-9

Tabelle: Signale Nr. Symbol Beschreibung Standard-Reaktion 23 SIGIO asynchrone E/A möglich ( I/O ) à fcntl(2) Ignorieren 24 SIGXCPU max. CPU-Zeit überschritten à setrlimit(2) Prozess beenden 25 SIGXFSZ max. Dateigröße überschritten à setrlimit(2) Prozess beenden 26 SIGVTALRM Timer f. virtuelle Zeit abgelaufenà setitimer(2) Prozess beenden 27 SIGPROF Profiling-Timer abgelaufen à setitimer(2) Prozess beenden 28 SIGWINCH Größenänderung Terminalfenster ( window change ) Ignorieren 29 SIGINFO Statusanforderung von der Tastatur Ignorieren 30 SIGUSR1 nutzerdefiniertes Signal 1 Prozess beenden 31 SIGUSR2 nutzerdefiniertes Signal 2 Prozess beenden rot markierte Signale können weder abgefangen noch ignoriert werden blau markierte Signale Bedeutung muss durch Nutzer definiert werden Tabelle zusammengestellt unter Verwendung der Bücher: [Ehses+2005] S.164 / [Stevens95] S.299 / [Goodheart+94] S.276/277 (vergleiche Teil Literaturhinweise ) ws 2015/16 H.-A. Schindler Folie: 8-10

ACHTUNG: VORSICHT!! Ø Bei Signalen gibt es größere Unterschiede zwischen Implementierung verschiedener UNIX-Varianten I!! Vergabe der Signal-Nummern Anzahl der Signale Reaktionsweise auf Signale, z.b. sysv-typisch und bsd-typisch ws 2015/16 H.-A. Schindler Folie: 8-11

Signalempfang: Datenstrukturen im UNIX-PCB Array: enthält für jedes mögliche Signal ein Bit Array: enthält für jedes mögliche Signal Platz für eine (virtuelle) Adresse è Bei vorhandener und aktivierter Behandlungsroutine ist dies die Adresse der Signal-Behandlungsroutine ws 2015/16 H.-A. Schindler Folie: 8-12

Signale: Auslösung Aufruf im Programm: <rv_kill> = kill(<process_id>, <signal_number>); rv_kill (int) Rückkehrwert =0: O.K. = -1: Fehler process_id (int) Nummer des Prozesses signal_ (int) Nummer oder symbolische Bezeichnung des Signals number Aufruf-Beispiel: xx = kill(1257, SIGALRM); // Alarm-Signal Aufruf mit Kommando (Terminal/Shell): kill -<signal_number> <process_id> Aufruf-Beispiel: kill -9 1257 // bedingungloser Abbruch von Prozess 1257 ws 2015/16 H.-A. Schindler Folie: 8-13

Singnale: Anbinden einer Signalbehandlungsroutine Aufruf im Programm: <rv> = signal(<signal_number>, <signal_handler>); rv (int) Rückkehrwert: =0: O.K. = -1: Fehler signal_ (int) Nummer oder symbolische Bezeichnung des Signals number signal_ (*int) Adresse der Signalbehandlungsroutine handler Aufruf-Beispiele: rv = signal(2, handler); rx = signal (SIGINT, signalroutine); ws 2015/16 H.-A. Schindler Folie: 8-14

Signale: Systemaufruf alarm( ) Aufruf im Programm: alarm(<time>); time (int) Zeitangabe (in Sekunden) Aufruf-Beispiel: alarm(12); Wirkung: Ø aufrufender Prozess erhält nach time Sekunden (im Beispiel 12) vom Betriebssystem ein Alarmsignal Bemerkung: Ø andere Reaktion des Prozesses als Standard-Reaktion (=Prozessabbruch) muss in Signalbehandlungs-Routine spezifiziert sein ws 2015/16 H.-A. Schindler Folie: 8-15

Signale: Systemaufruf pause( ) Aufruf im Programm: pause(); Aufruf-Beispiel: pause(); Wirkung: Ø Ausführung des aufrufenden Prozesses wird bis zum Eintreffen eines Signals ausgesetzt (suspendiert) Bemerkung: Ø betreffendes Signal muss durch Behandlungs-Routine abgefangen werden. ws 2015/16 H.-A. Schindler Folie: 8-16

Beispiel 1: Abfangen von Signal 2 main() { int i; void handler(); /* Spezifikation Behandlungsroutine*/ printf("test: Signale\n\n ); signal(2, handler); M: printf("x ); i=0; while(i<15000)i++; /* Verzoegerung */ goto M; } void handler() / * Routine zur Signalbehandlung */ { printf("so kannst Du mich nicht abbrechen!!!...\n ); } ws 2015/16 H.-A. Schindler Folie: 8-17

Beispiel 2: Behandlung von Signal 12 main() { int i; void handler(); /* Spezifikation Behandlungsroutine */ printf("test: Signale\n\n ); } signal(12, handler); execl(); /* fehlerhafter Systemaufruf */ void handler() /* Routine zur Signalbehandlung */ { printf("systemaufruf mit falschem Parameter\n ); signal(12, handler); /*eventuell Routine neu ankoppeln */ } Hinweis zur Behandlungsroutine: Bei einigen UNIX-Versionen ist die Signalbehandlung nach einmaliger Benutzung rückgesetzt und muss neu gesetzt werden! ws 2015/16 H.-A. Schindler Folie: 8-18

Nicht erwähnte relevante Systemaufrufe bzw. Manualeinträge Im Manual-Abschnitt 2: 1. killpg(2) Signal an Prozessgruppe 2. sigaction(2) neuer anstelle signal(..) 3. signalfd(2) 4. sigpending(2) 5. sigprocmask(2) untersuche bzw. ändere geblockte Signale 6. sigqueue(2) 7. sigsuspend(2) ws 2015/16 H.-A. Schindler Folie: 8-19

Nicht erwähnte relevante Systemaufrufe bzw. Manualeinträge im Manual-Abschnitt 3: 1. bsd_signal(3) BSD-typisches Verhalten 2. sysv_signal(3) Bell-Lab-typisches Verhalten 3. raise(3) 4. siginterrupt(3) 5. sigsetops(3) 6. sigvec(3) im Manual-Abschnitt 7: 1. signal(7) alle jeweils definierten Signale 2. feature_test_macros(7) ws 2015/16 H.-A. Schindler Folie: 8-20

Aufgabenstellung (Anregungen) 1. Analysieren Sie die Programme signal2a.c und signal2b.c. Vergleichen Sie beide Programme! Untersuchen Sie, ob die Programme unterschiedlich reagieren, wenn Sie beide jeweils mehrmals mit Crtl/C oder anderweitig mit Signal 2 abzubrechen versuchen. 2. Experimentieren Sie jetzt mit Programm pause.c. Untersuchen Sie, nach welchen Signalen nach der Pause weitergearbeitet wird. Was muss getan werden, um auch nach anderen Signalen eine Weiterarbeit zu ermöglichen? Kann auch nach Signal 9 eine Weiterarbeit ermöglicht werden? Experimentieren Sie zu diesem Punkt auch mit signale2u9.c! 3. Analysieren Sie jetzt Programm signal-alarm.c und führen Sie dieses nach der Kompilierung aus! Wozu kann der Alarm-Mechanismus sinnvoll eingesetzt werden? 4. Mit signale-fehler.c können Sie mit Fehlern beim Aufruf von Signal- Systemaufrufen experimentieren. Beispiele sind vorgegeben. ENDE 8 ws 2015/16 H.-A. Schindler Folie: 8-21