Echtzeitbetriebssysteme

Ähnliche Dokumente
Gliederung Hardware fuer die Zeitmessung Zeitmanagement auf Uniprozessorsystemen. Timing Measurements. Timo Schneider. 4.

POSIX Echtzeit: Kernel 2.6 und Preempt-RT

Protokollbeschreibung Modbus TCP für EMU TCP/IP Modul

Mobile App Development. - Alarm -

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

4D Server v12 64-bit Version BETA VERSION

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Mitarbeiter-Alarm. 1x Taster mit Kabel zum Anschluss an den seriellen Com-Port (optional) 1x Installationsprogramm auf CD 1x Lizenz

Im Folgenden wird die Konfiguration der DIME Tools erläutert. Dazu zählen die Dienste TFTP Server, Time Server, Syslog Daemon und BootP Server.

Daten-Synchronisation zwischen Mozilla Thunderbird (Lightning) / Mozilla Sunbird und dem ZDV Webmailer

Dokumentation IBIS Monitor

Anleitung Grundsetup C3 Mail & SMS Gateway V

Toshiba Tools Im folgenden Text erhalten Sie eine Übersicht über die Funktion der folgenden Toshiba - Tools

ecaros2 Automatische Katalogaktualisierung

Dämon-Prozesse ( deamon )

Witbox. Anleitung Repetier-Host. Witbox

Zunächst empfehlen wir Ihnen die bestehenden Daten Ihres Gerätes auf USB oder im internen Speicher des Gerätes zu sichern.

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Inventur / Jahresabschluss

Auto-Provisionierung tiptel 30x0 mit Yeastar MyPBX

Internet online Update (Internet Explorer)

NetVoip Installationsanleitung für Grandstream GXP2000

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

How-to: Webserver NAT. Securepoint Security System Version 2007nx

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

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein: - Ein Bootimage ab Version Optional einen DHCP Server.

WARY Notariat Urkundenrolle V2013

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

Man liest sich: POP3/IMAP

WINDOWS 8 WINDOWS SERVER 2012

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

QUICK INSTALLATION GUIDE

MODBUS/TCP und Beckhoff Steuerelemente

imove Fax and Speech 2.1

ecaros-update 8.2 Update 8.2 procar informatik AG 1 Stand: DP 02/2014 Eschenweg Weiterstadt

An integrated total solution for automatic job scheduling without user interaction

HIT-Software Installieren und Starten der Netzwerklizenz als Download-Anwendung

Anlegen eines SendAs/RecieveAs Benutzer unter Exchange 2003, 2007 und 2010

Lizenzierung von System Center 2012

ZEITSYNCHRONISATION IM DS-WIN EINRICHTEN

Powermanager Server- Client- Installation

Fragen zur GridVis MSSQL-Server

Netzwerkeinstellungen unter Mac OS X

Tech Note: SYSTEMVARIABLEN SIO_RJ11_BAUDRATE. Tel.: +43 (0) 3159/ Products: SLS Produkte A-8344 Bad Gleichenberg

ARAkoll 2013 Dokumentation. Datum:

Service & Support. Wie kann ein WinCC (TIA Portal) Projekt über Ethernet auf ein Bediengerät übertragen werden? WinCC (TIA Portal) FAQ Februar 2012

Kurzanleitung So geht s

RTEMS- Echtzeitbetriebssystem

SolarWinds Engineer s Toolset

ISAP Kundencenter. Alles. Einfach. Online. Das Handbuch zum neuen ISAP Kundencenter ISAP AG. All rights reserved.

Installationsanleitung

Lizenzen auschecken. Was ist zu tun?

VMware vrealize Log Insight- Entwicklerhandbuch

Aufbau und Funktion eines VPN- Netzwerkes

Lizenz-Server überwachen

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

Die DeskCenter Management Suite veröffentlicht neue Version 8.1

Werden automatisch beim Start erstellt.

CORBA. Systemprogrammierung WS

Motivation. Inhalt. URI-Schemata (1) URI-Schemata (2)

Anleitung: Confixx auf virtuellem Server installieren

System-Update Addendum

MESONIC WINLine Jahreswechsel. Umstellung des Wirtschaftsjahres SMC IT AG

Sie können diesen Service verwenden, um fast beliebig große Dateien auch über 2 GB zu versenden.

ITF2XML. Transferservice. Version 1.1. Tel.: 044 / Fax: 044 / CH-8005 Zürich

3.14 Die Programmieroberfläche Programmierung

Senden von strukturierten Berichten über das SFTP Häufig gestellte Fragen

Task: Nmap Skripte ausführen

HowTo: Ereigniseinrichtung

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

Anleitung zum Prüfen von WebDAV

K-TAG Master. Dateientschlüsselung/ Dateiverschlüsselung für Slaves. Version 1.0

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

KNX BAOS Gadget. Installations- und Bedienanleitung. WEINZIERL ENGINEERING GmbH. DE Burgkirchen Web:

RESTful Web. Representational State Transfer

Einführung in die C-Programmierung

ArchivCam / MotionCam

1. Einführung. 2. Weitere Konten anlegen

Prozesse und Logs Linux-Kurs der Unix-AG

> Mozilla Firefox 3. Browsereinstellungen optimieren. Übersicht. Stand Juli Seite. Inhalt. 1. Cache und Cookies löschen

Die Volljährigkeitsprüfung in [:lo.pro:]

Bearbeiten elektronische Rechnungen (Invoices)

Software zur Anbindung Ihrer Maschinen über Wireless- (GPRS/EDGE) und Breitbandanbindungen (DSL, LAN)

Konfigurationsanleitung SIP Phone zum SIP Provider Funkwerk. Copyright Stefan Dahler Oktober 2008 Version 1.0.

Lokale Installation von DotNetNuke 4 ohne IIS

Schedulingalgorithmen Rechenzeitverteilung auf Betriebssystemebene. Andi Drebes Fachbereich Informatik Universität Hamburg

Lavid-F.I.S. Ablaufbeschreibung für. Arbeitszeiterfassung. Lavid-F.I.S.

Security. Stefan Dahler. 4. Internet Verbindung. 4.1 Einleitung

Persönliches Adressbuch

Modul 2.2: Zugang zu Ihren Teilnehmer-Ordnern via ftp (zum Dateientransfer):

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

snom Auto-Provisioning

GeoPilot (Android) die App

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

Die Installation von D-Link WLAN Karten unter Windows Vista

How-to: HTTP Proxy mit Radius Authentifizierung an einem Windows 2003 Server. Securepoint Security System Version 2007nx

FTP Server unter Windows XP einrichten

4.4 Umgang mit Zeiten

Eine Anwendung mit InstantRails 1.7

Transkript:

Weiter geht s mit Zeitdiensten... 7-1 12-1

Zeitdienste Zeiten spielen in einem Echtzeitsystem eine wesentliche Rolle Aufgaben von Zeitdiensten Zyklische Interruptgenerierung Zeitmessung Watchdog (Zeitüberwachung) Zeitsteuerung für Dienste Werkzeuge zur Zeitbestimmung (Zeitgeber) Realzeituhren Timer 7-2 12-2

Zeitdienste Zyklische Interruptgenerierung Beispiel 1: Ableitung der Systemzeit (Ticks) in UNIX, OS9: Timer im System generiert zyklisch (z.b. alle 10 ms) einen Interrupt Zugehörige Interrupt Service Routine: Scheduler aufrufen zeitabhängige Systemdienste (Weckaufrufe) bearbeiten Softwaretimer Genauigkeit der zeitabhängigen Systemdienste hängt von dieser Zeitbasis ab. Beispiel 2: Zyklische Bedienung von dummen Interface-Karten (meist wird Takt von Bus-Controller-HW generiert) 7-3 12-3

Zeitdienste Zeitmessung Oft vorkommende Aufgabe in der Automatisierungstechnik Beispiele: Zuordnung hochgenauer Zeitstempel zu Ereignissen z.b. in Sensoren bei Teilchenbeschleuniger-Experimenten Berechnen von Geschwindigkeiten über Differenzzeitmessung (Geschwindigkeitsmessung von Fahrzeugen mit Lichtschranken) 7-4 12-4

Zeitdienste Watchdog (Zeitüberwachung) Sicherheitsrelevante Funktionalität in Echtzeitsystemen: Überwachung der Einhaltung von Echtzeitbedingungen Zeitüberwachung einfacher Dienste (z.b. Ausgabe von Daten an eine Prozessperipherie, etwa Robotergelenk über Bus) Zeitüberwachung einzelner Systemkomponenten (z.b. Gelenkregler bei Robotergelenken) Zeitüberwachung des gesamten Systems Überwachung kritischer User-Interaktion Totmann -Taste in Lokomotiven 7-5 12-5

Zeitdienste Watchdog (Zeitüberwachung) Mechanismus: Watchdog System oder Komponente muss im regelmäßigen Abstand einen Rückwärtszähler (Timer) zurücksetzen (d.h. Startwert neu setzen) Ist das System in einem undefinierten Zustand und kommt nicht mehr dazu, den Zähler zurückzusetzen, zählt dieser bis Null Zähler löst bei Zählerstand 0 Interrupt aus Alarm/Fehlermeldung Systemreset (ISR oder HW-Signal löst CPU-Reset aus) 7-6 12-6

Zeitdienste Watchdog (Zeitüberwachung), Realisierung OS9 API Watchdogumgebung vorbereiten error_code os_intercept ( void (*signal_empfang)(),_glob_data); Watchdog löschen bzw. abbrechen error_code _os_alarm_delete( alarm_id alrm_id); Watchdog erzeugen und starten error_code _os_alarm_set( alarm_id *alrm_id, /*out: ID of watchdog alarm */ signal_code mysignal, /*in: desired watchdog signal number >255*/ u_int32 time); /*in: watchdog time in time slices */ Watchdog Aktion bei Auslöse void signal_empfang (signal_code signal) { if(signal == mysignal) /*watchdog hit!!! */ ; _os_rte(); } 7-7 12-7

Zeitdienste Watchdog (Zeitüberwachung), OS9 API volatile int watch_mark=0; void mysig (signal_code sig){ if(sig == 300) watch_mark=1 /*Watchdog hit: just mark it happened 10 TICs are over */; _os_rte(); } int main (void) { alarm_id alrm_id; _os_intercept(msig,_glob_data); _os_alarm_set( &alrm_id, 300, 10);/* Watchdog: signal 300 after 10 TICS*/ maybeslowroutine (); /* zu überwachende Funktion */ _os_alarm_delete(alrm_id); /* safe to delete always */ if(watch_mark == 1) printf( Watchdog hit! too late\n ); exit(0); } 7-8 12-8

Zeitdienste Zeitsteuerung für Dienste Ausführen spezifischer Aufgaben in regelmäßigen oder unregelmäßigen Abständen Beispiele Backups Meßwerte erfassen Abarbeiten von Timelines (z.b. bei Weltraummissionen Protokolldienste Meist: Proprietäres Protokollieren des Applikationszustands ( println, cout, printf,...; ggf. Verbosity Level, selten Systemzeit) BS stellen meist einheitliche, bei RT-OS echtzeitfähige Loggingdienste (z.b. syslog) auch für Applikationen/Dienste zur Verfügung, da BS-Abläufe sowieso protokolliert werden Zeitabhängiges Starten von Tasks / Threads (z.b. cron-jobs) Speicher resourcenschonend Start/Stop 7-9 12-9

Zeitdienste Werkzeuge zur Zeitbestimmung - Zeitgeber Varianten von Zeitgebern (allgemein) Absolut-Zeitgeber (Uhren, clocks) Relativ-Zeitgeber (Timer, timer) Uhren und Timer lassen sich auf zwei Arten realisieren: 1. in Hardware und 2. in Software in Form von Vorwärtszähler Rückwärtszähler repetitive Zähler: Vorgegebener Zählwert wird nach Ablauf (Zählerstand 0 erreicht) selbständig neu geladen single shot Zähler: expliziter Neustart erforderlich 7-10 12-10

Zeitdienste Zugriffs-Ebenen in einem Realzeitsystem Hardware-Level Kernel-Level User-Level 7-11 12-11

Zeitdienste, Zugriffs-Ebenen in einem Realzeitsystem Hardwarelevel Single Hardware Zeit-bezogene Hardware: Echtzeituhr(en) (Absolutzeitgeber) Frequenzteiler Vor- und (meist)rückwärtszähler Watchdogtimer (mit Reset-Signal bei Ablauf, vermeidet ISR) Absolutzeitgeber: Stellen Absolutzeit (Tag, Monat, Jahr, Stunde, Minute, Sekunde, Millisekunde) bereit (z.b. UNIX: in Sekunden seit 1.1.1970) Meist batteriegepuffert, Weiterzählen der Uhrzeit nach Abschalten des Stroms Absolutzeiten sind bei eingebetteten Systemen nicht immer notwendig Wichtig: Genaue Absolutzeitbasis bei verteilten Realzeitsystemen Probleme: Zeitzonen, Sommer/Winterzeit, Zeitdrift 7-12 12-12

Zeitdienste Kernellevel Multi-Hardware virtuelle Zeitgeber Zeit-Basis: zyklische Timerinterrupts Zeitgesteuerte Dienste im Betriebssystemkern: Gerätetreiber können Tasks für wählbare Zeitdauer in den Zustand wartend versetzen Module können zyklisch Funktionen aufrufen lassen Module können einmalig (zu einem Relativzeitpunkt) Funktionen aufrufen lassen Vorsicht bei Real -Zeit im Kernel (Sekunden statt Ticks): Der Abstand zwischen zwei Timerticks kann von System zu System variieren Problem Zählerüberlauf (in Linux nach 417 Tagen: 55Bit * 1ns). Zählerüberlauf muss in allen Schichten geprüft werden Massnahme in aktuellen Linux-Kerneln: Start mit Zeit kurz vor Überlauf!!! 7-13 12-13

Zeitdienste Userlevel private Zeitgeber Absolutzeit abfragen mit z.b. gettimeofday Prozess oder Thread für eine definierte Zeit in den Zustand wartend versetzen: sleep und select Dienstschnittstelle: Prozess starten periodisch: cron bestimmter (Absolut-) Zeitpunkt: at In Realzeitsystemen: (z.b. Proprietäre oder POSIX 1003.1b-) Interfaces für (Hardware-)Timer zeitgenauere (bzgl. Auflösung) Steuerung von Prozessen (Micro- Nanosekunden) 7-14 12-14

Zeitdienste Kritische Punkte Kernelebene: Relativzeiten wegen der möglichen Zählerüberläufe User-Ebene: Absolutzeiten, insbesondere in verteilten Echtzeitsystemen, z.b. Jahr 2000 Problem (alle 100 Jahre), wenn eine Jahresangabe nicht in 4, sondern in nur 2 Stellen abgelegt wird Wahl der Zeitzone Umschaltung zwischen Winter- und Sommerzeit zum falschen Zeitpunkt. Falsche Berechnung von Schalttagen (29. Februar). Zeitdrift 7-15 12-15

Zeitdienste, Kritische Punkte Zeitdrift Ursachen: Uhren laufen ungenau, ungenaue (oder keine) Systemzeit beim Start Zeitsynchronisation zwischen Rechnern bzw. der Korrektur von Absolutzeiten z.b. Zeitserver versendet Broadcastmessages Verarbeitung dieser Messages in Hardware ermöglicht Zeitsynchronisation im Mikrosekundenbereich Standardisiert: Zeitsynchronisation via NTP (Network Time Protocol). Zeitserver stellen die Zeit zur Verfügung, hierarchisch (Stratum) klassifiziert Stratum-1 Server: bestimmt Uhrzeit selbst (z.b. von DCF77) Stratum-2 Server: bezieht Uhrzeit von Stratum-1 Server(n) Statistische Berechnung der Paketlaufzeiten bei der Verteilung der Uhrzeit Statistische Berechnung der Uhrzeit aus der Information mehrerer Server 7-16 12-16

Zeitdienste, Kritische Punkte Zeitkorrektur Problematisch: sprunghafte Korrektur von Absolutzeiten!!! Zeitpunkte entfallen oder sind doppelt!!! Besser: Abbremsen/Beschleunigen der Systemuhr NTP-Systemcall int adjtimex(struct timex *buf); Ähnliches Problem: Rechnerstillstand (z.b. für Wartung) Innerhalb der Downtime geplante Aktionen entfallen Abhilfe: Protokollieren durchgeführter Aktionen Nachholen nicht durchgeführter Aktionen beim Neustart 7-17 12-17

Zeitdienste, POSIX 1003.1 Repräsentation von Zeit Absolutzeit: time_t: Integer, Sekunden seit 1.1.1970 (27.11.06, 9:40 : 0x456aa3ef); 32Bit Überlauf in ca. 105 Jahren... ABER: z.b. in Millisekunden??? Aufgelöst in Datumskomponenten struct tm { int tm_sec /* Seconds [0,60].*/ int tm_min /* Minutes [0,59]. */ int tm_hour /* Hour [0,23]. */ int tm_mday /* Day of month [1,31].*/ int tm_mon /* Month of year [0,11]. */ int tm_year /* Years since 1900. */ int tm_wday /* Day of week [0,6] (Sunday =0).*/ int tm_yday /* Day of year [0,365]. */ int tm_isdst /* Daylight Savings flag. */ } 7-18 12-18

Zeitdienste, POSIX 1003.1 Repräsentation von Zeit Hochaufgelöst (Nanosekunden) für Absoluttimer struct timespec { time_t tv_sec, /* Seconds */ long tv_nsec /* Nanoseconds */ } Relativzeiten und Zeitpunkte für Timer struct itimerspec { struct timespec it_interval, /* Intervall */ struct timespec it_value /* (Absolut)-Zeitpunkt */ } 7-19 12-19

Zeitdienste, POSIX 1003.1 API für Zeitdienste Absolutzeit Wandelt Zeitbeschreibung in Klartext char *asctime(const struct tm *); Liefert aktuelle Zeit in Sekunden seit 1.1.1970 time_t time ( time_t *t); 7-20 12-20

Zeitdienste, POSIX 1003.1 API für Zeitdienste Warten (Prozess schlafenlegen) Prozess für n Sekunden schlafen legen int sleep ( int secs ); Prozess für n Nano-Sekunden schlafen legen (<>OS9) int nanosleep(const struct timespec *request, struct timespec *remainder_after_signal); 7-21 12-21

Zeitdienste, OS9 API für Zeitdienste Warten relativ in TICS oder 1/256 Sekundenzeitraster error_code _os_sleep( u_int32 *ticks, /* Generell: Wakeup durch Signalempfang (wenn erlaubt) in: ticks = 0 unendlich warten in: ticks > 0 warten von (ticks-1)*tics = 1 kein Warten = 2 1*TIC warten in: ticks = 0x80000000 + Anz_256 th _of_seconds out: nach Wakeup enthält ticks die noch zu wartende Restzeit */ signal_code *signal); /* 0 oder Signalnummer, die wake-up verursachte*/ 7-22 12-22

Zeitdienste, POSIX 1003.1 API für Zeitdienste Hochauflösende (Absolutzeit-)Uhr (<>OS9) Aktuelle Uhrzeit erfragen int clock_gettime(clockid_t clock_id, struct timespec *tp); Uhrzeit setzen int clock_settime(clockid_t clock_id, const struct timespec *tp); Auflösung der Uhrzeit erfragen int clock_getres(clockid_t clock_id, struct timespec *res); 7-23 12-23

Zeitdienste, POSIX 1003.1 API für Zeitdienste Hochauflösende (Relativzeit-)Timer (<>OS9) Timer erzeugen int timer_create(clockid_t clockid, struct sigevent *evp, timer_t *timerid); Timer löschen int timer_delete(timer_t timerid); Verbleibende Zeit im Timer abfragen timer_gettime(timer_t timerid, struct itimerspec *value); Zeit bis zum Ablauf setzen timer_settime (timer_t timerid, int flags, const struct itimerspec * value, struct itimerspec * ovalue); /*(Restzeit)*/ 7-24 12-24

Einschub: Aufruf von (Zeit- )Dienstfunktionen (Systemcall - Interface) des BS... 7-25 12-25

Systemcall-Interface Absolut unabhängig von Programmiersprachen Meist gekapselt durch Bibliotheksfunktionen (komfortabler) Systemcalls erwarten Argumente in Registern oder auf dem Stack Aufruf per Softwareinterrupt: Assemblerbefehl INT bzw. TRAP mit einer Exceptionnummer (bei Linux beispielsweise 0x80) write_hello_world: movl $4,%eax ; //code fuer "write" systemcall movl $1,%ebx ; //file descriptor fd (1=stdout) movl $message,%ecx ; //Adresse des Textes (buffer) movl $12,%edx ; //Laenge des auszugebenden Textes int $0x80 ; //SW-Interrupt, Auftrag an das BS ret.data message:.ascii "Hallo World\n" 7-26 12-26

Systemcall-Interface OS9 Ein C-Aufruf für alle Aufrufe Gekapselt durch C-Bibliotheksfunktion (komfortabler) error_code error; i_write_pb pb; /* declare parameter block write*/ pb.cb.code = I_WRITE ; /* write command /* pb.cb.param_size = sizeof i_write_pb; pb.cb.edition = _OS_EDITION; /* fill edition number */ pb.path = 1; /* stdout*/ pb.buffer = Hallo Welt\n ; /* Textoutput*/ pb.count = strlen( Hallo Welt\n ); if ((error = _oscall(&pb)) == SUCCESS) /*all ok */; 7-27 12-27

Dienste (Services) BS-Schicht auf User-Ebene: Dienste (Services oder Dämonen), je nach Applikation mehr oder weniger ausgeprägt Dienste zur Konfiguration (Definierter Konfiguration beim Systemstart, z.b. Hardware initialisieren (PnP) Netzwerk konfigurieren (z.b. IP Adresse; DHCP) Booten (DHCP, TFTP, BOOTP) Treiber laden Protokolldienste Meist: Proprietäres Protokollieren des Applikationszustands ( println, cout, printf,...; ggf. Verbosity Level, selten Systemzeit) BS stellen meist einheitliche, bei RT-OS echtzeitfähige Loggingdienste (z.b. syslog) auch für Applikationen/Dienste zur Verfügung, da BS-Abläufe sowieso protokolliert werden 7-28 12-28

Dienste (Services) Netzwerkdienste telnet (Interaktive Sitzung) RPC Remote Procedure Call CORBA Common Object Request Broking Architecture FTP File Transfer HTTP HyperText Transfer Protocol NTP: Zeitsynchronisation in einem verteilten Echtzeitsystem NFS/SMB: Netzwerklaufwerke Zeitsteuerung Tasks zyklisch oder zu vorgegebenen Zeiten starten ( cron jobs ). zentral verwalt-/steuerbar Ressourcenschonend (Tasks belegen keine Ressourcen [Speicher], die sie belegen würden, wenn sie nur schliefen) 7-29 12-29