3 Prozesse und Threads

Größe: px
Ab Seite anzeigen:

Download "3 Prozesse und Threads"

Transkript

1 Betriebssysteme Folie Prozesse und Threads Programm statische Folge von Anweisungen und Daten befindet sich i.a. als Datei auf einer Festplatte der Dateiinhalt entspricht den Regeln des Betriebssystems für ausführbare Programme (exe-format, elf-format, ) Prozeß dynamische Folge von Aktionen (Zustandsänderungen) führt ein Programm auf einem Prozessor aus wird vom Betriebssystem infolge eines Auftrags erzeugt Eingabe eines Kommandos von einem Benutzer Aufruf einer Systemfunktion von einem Prozeß besitzt zugeordnete Speicherbereiche für den Programmcode, seine statischen und dynamischen Daten sowie seinen Stack

2 Betriebssysteme Folie 3-2 Systemfunktionen zum Erzeugen / Beenden eines Prozesses Windows 95/98/NT/2000/ (Win32-API) CreateProcess () OpenProcess () ExitProcess () TerminateProcess () UNIX fork ( ) execlp (), execvp (), exit () kill () Struktur eines Prozesses Process Virtual Address Space Resources open files locks sockets. main () count () count () Text Identity pid uid gid. prt_result () global_cnt s_time Data Heap Registers PC SP j i p_cnt return address from count () Stack

3 Betriebssysteme Folie 3-3 Thread sequentieller Ausführungsfaden innerhalb eines Prozesses minimaler eigener Kontext CPU-Registersatz Stack Identifikationsnummer, Priorität, alle Threads eines Prozesses benutzen denselben Adreßraum sowie weitere Betriebsmittel des Prozesses gemeinsam jeder Prozeß besitzt mindestens einen (initialen) Thread Systemfunktionen zum Erzeugen / Beenden eines Threads Windows 95/98/NT/2000/ (Win32-API) CreateThread () ExitThread () TerminateThread () POSIX Threads (UNIX, ) pthread_create () pthread_exit () pthread_kill () pthread_cancel ()

4 Betriebssysteme Folie 3-4 Java Threads (plattform-übergreifend) Erweiterung der Klasse Thread Implementierung der Schnittstelle runnable Aufruf der Methode start ( ) der Klasse Thread Aufruf der Methode exit ( ) der Klasse System Aufruf der Methode stop ( ) der Klasse Thread Struktur eines Prozesses mit mehreren Threads (multithreaded process) Process Virtual Address Space Resources open files locks sockets. main () count () Text Identity pid uid gid. prt_result () Data Heap main Thread Specific Data Registers PC SP Thread 1 Registers Stack thread id priority Thread Specific Data thread id priority PC SP Thread 2 Registers PC SP Stack Stack

5 Betriebssysteme Folie 3-5 Prozeßerzeugung unter UNIX 1) Betriebssystemkern muß eine Umgebung bereitstellen, in der das Programm ausgeführt werden kann 2) der Prozeß besteht aus drei Bereichen: instruction segment user data segment system data segment 3) das Programm wird zur Initialisierung des instruction segments und user data segments benutzt 4) nach der Initialisierung besteht zwischen dem Prozeß und dem Programm, das er ausführt, keine weitere Verbindung 5) der Prozeß kann weitere Betriebsmittel (mehr Speicher, neue Dateien, usw.) anfordern, die im Programm nicht vorhanden sind mehrere parallel ablaufende Prozesse können mit demselben Programm initialisiert werden der Betriebssystemkern kann Hauptspeicher sparen, wenn solche Prozesse ein gemeinsames instruction segment verwenden (die beteiligten Prozesse können die gemeinsame Nutzung nicht feststellen, da die Segmente nur Lesezugriffe erlauben)

6 Betriebssysteme Folie 3-6 Prozeßverwaltung Prozesse stellen Verwaltungseinheiten bzw. Objekte dar auf einem Multiprozessorsystem können Prozesse parallel ausgeführt werden auf einem Einprozessorsystem können sie durch eine geeignete zeitliche Verschachtelung quasi-parallel ausgeführt werden das Betriebssystem unterscheidet Anwendungsprozesse / Benutzerprozesse und Systemprozesse Systemprozesse erbringen Betriebssystemleistungen, die aus dem Betriebssystemkern ausgelagert wurden Anwendungs- und Systemprozesse werden im Benutzermodus (user mode) ausgeführt im Benutzermodus sind nur nicht-privilegierte Befehle des Prozessors erlaubt der Betriebssystemkern wird im Systemmodus (system mode, kernel mode) ausgeführt, in dem auch priviligierte Befehle des Prozessors erlaubt sind das Betriebssystem benötigt geeignete Datenstrukturen zur Verwaltung der Prozesse

7 Betriebssysteme Folie 3-7 Prozeßobjekte unter Windows NT Prozeßobjekte werden durch den Objektmanager erzeugt und abgebaut jedes Prozeßobjekt enthält einen Kopf, der unter der Verwaltung des Objektmanagers steht Aufbau des Prozeßobjekts Objekttyp Attribute Dienste Prozeß Prozeß-ID Access Token Basispriorität Prozessorzugehörigkeit Kontingentbeschränkung Ausführungsdauer I/O-Zähler VM-Arbeitszähler Exception / Debugging Ports Beendigungsstatus Prozeß erzeugen Prozeß öffnen Prozeßinformationen einholen Prozeßinformationen einstellen Aktueller Prozeß Prozeß beenden VM reservieren / freigeben VM lesen / schreiben Virtuellen Speicher schützen VM sperren und entsperren VM-Informationen einholen Virtuellen Speicher aktualisieren

8 Betriebssysteme Folie Prozeß- / Thread-Zustände Prozeßzustände und die zugehörigen Zustandsübergänge new ready create dispatch I/O completion, event occurs blocked timeout, yield running I/O wait, event wait terminate resume suspend suspend exit resume suspend suspended ready I/O completion, event occurs suspended blocked Thread-Zustände und -Zustandsübergänge in Java born sleep interval expires notify or notifyall quantum expiration, interrupt, yield ready start dispatch (assign a processor) running I/O completion wait sleep finished issue I/O waiting sleeping dead blocked

9 Betriebssysteme Folie 3-9 Prozeß- / Thread-Verwaltung basiert auf Zustandsmodell Grundzustände, erweiterte Zustände, Pseudozustände Übergänge zwischen den Zuständen Prozeß / Thread kann einige Zustände im Laufe seines Lebens mehrfach durchlaufen typische Grundzustände bereit (Synonyme: rechenwillig, rechenbereit, ausführbar, ready, runable) Prozeß / Thread wartet nur auf Zuteilung eines Prozessors i.a. gibt es verschiedene Prioritätswarteschlangen neue Prozesse werden i.a. am Ende ihrer Prioritätswarteschlange eingefügt aktiv (Synonyme: rechnend, running) Prozeß / Thread hat einen Prozessor zugeteilt bekommen auf einem Einprozessorsystem kann sich nur ein Prozeß / Thread in diesem Zustand befinden

10 Betriebssysteme Folie 3-10 blockiert (Synonyme: wartend, blocked, waiting) Prozeß / Thread wartet auf ein Ereignis, z.b. Ein-/Ausgabe i.a. gibt es für verschiedene Wartebedingungen verschiedene Warteschlangen erweiterte Zustände gibt es z.b. bei vielen UNIX-Systemen suspendiert (Synonyme: ausgelagert, suspended) Prozeß / Thread wurde angehalten und i.a. auf externes Speichermedium ausgelagert häufig über zwei Zustände realisiert: suspendiert blockiert und suspendiert bereit warum wird ein Prozeß / Thread suspendiert? schlechte Systemleistung wegen kurzfristiger Überlast Betriebssystem unterstützt keinen virtuellen Speicher, so daß ganze Prozesse ein- / ausgelagert werden müssen Benutzer will einen Prozeß stoppen, aber noch nicht abbrechen (bei vielen UNIX-Systemen z.b. mit <Ctrl-z> oder <Strg-z>; Fortsetzung z.b. mit "fg" (im Vordergrund) oder "bg" (im Hintergrund))

11 Betriebssysteme Folie 3-11 wer kann einen Prozeß / Thread suspendieren? ein Prozeß / Thread (selbst) über entsprechende Systemfunktionen der Benutzer / das "Betriebssystem" Suspendierung durch Prozeß / Thread kann schwerwiegende Folgen haben Blockierung mehrerer Prozesse / Threads, falls der suspendierte Prozeß / Thread eine Betriebsmittelsperre hält u.u. sogar Deadlock, falls die Funktion zur Fortsetzung des Prozesses / Threads dieselbe Betriebsmittelsperre benötigt Zombie Zwischenzustand bevor ein Prozeß das System verläßt Prozeß hat seine Aufgabe erledigt und muß nur noch einen Status an seinen Vaterprozeß liefern Zombie-Prozesse belegen nur noch einen Eintrag in der Prozeßtabelle des Betriebssystems

12 Betriebssysteme Folie 3-12 Pseudozustände Beginn (Synonyme: nicht existent, new, born) "notwendiger" Zustand, um einen Prozeß / Thread in das System zu bringen wichtig ist nur der Zustandsübergang Ende (Synonyme: nicht existent, exit, exited, dead) "notwendiger" Zustand, um einen Prozeß / Thread aus dem System zu entfernen wichtig ist nur der Zustandsübergang Zustandsübergänge Beginn bereit neuer Prozeß / Thread wird erzeugt Speicherbereiche und Datenstrukturen für neuen Prozeß anlegen und initialisieren (z.b. Codesegment, Datensegment, Prozeßkontrollblock, ) Prozeß / Thread in Warteschlange "bereit" einketten

13 Betriebssysteme Folie 3-13 bereit aktiv Prozeß / Thread wird einem freien Prozessor zugeteilt letzten Prozeß- / Thread-Kontext wiederherstellen Prozeß- / Thread-Zustand auf aktiv setzen Prozeß / Thread starten aktiv bereit Prozessor wird dem Prozeß / Thread entzogen Zeitscheibe des Prozesses / Threads ist abgelaufen Prozeß / Thread höherer Priorität wurde rechenwillig Prozeß- / Thread-Kontext retten Prozeß- / Thread-Zustand auf "bereit" setzen und Prozeß / Thread in Warteschlange "bereit" einketten aktiv blockiert Prozeß / Thread muß auf ein Ereignis warten Beendigung einer Ein- / Ausgabeoperation Beendigung eines erzeugten Prozesses / Threads Prozeß- / Thread-Kontext retten Prozeß- / Thread-Zustand auf "blockiert" setzen und Prozeß/ Thread in Warteschlange "blockiert" einketten

14 Betriebssysteme Folie 3-14 aktiv Ende Prozeß / Thread verläßt das System Aufräumarbeiten durchführen (i.a. nur bei Prozessen) ggf. offene Dateien des Prozesses schließen ggf. andere Betriebsmittel des Prozesses freigeben alle Datenstrukturen und Speicherbereiche freigeben (i.a. nur bei Prozessen) blockiert bereit Ereignis ist eingetreten Prozeß- / Thread-Zustand auf "bereit" setzen und Prozeß / Thread in Warteschlange "bereit" einketten blockiert suspendiert blockiert, bereit suspendiert bereit, suspendiert blockiert blockiert, suspendiert bereit bereit (i.a. nur bei Prozessen; suspendierte Threads werden i.a. über Zustand "blockiert" des Prozesses verwaltet) nur in Ausnahmefällen (siehe Zustand "suspendiert") Prozeß- / Thread-Zustand ändern und Prozeß / Thread in entsprechende Warteschlange einketten aufwendig, da Datentransport zwischen Haupt- und Hintergrundspeicher erforderlich

15 Betriebssysteme Folie 3-15 suspendiert blockiert suspendiert bereit (i.a. nur bei Prozessen) Ereignis ist eingetreten Prozeß kann ausgeführt werden, sobald er in Hauptspeicher geladen worden ist Prozeßzustand ändern und Prozeß in Warteschlange "suspendiert bereit" einketten aktiv suspendiert bereit (nur bei Prozessen) kommt eigentlich nicht (mehr) vor könnte benutzt werden, wenn ein Prozeß der Warteschlange "suspendiert blockiert" mit hoher Priorität rechenwillig wird, der sehr viel Hauptspeicher benötigt und der aktuelle Prozeß viel Hauptspeicher belegt Prozeßkontext retten Prozeßzustand ändern und Prozeß in Warteschlange "suspendiert bereit" einketten

16 Betriebssysteme Folie 3-16 Prioritätsklassen in den Zuständen können über verkettete Listen realisiert werden, z.b. einfach verkettete Listen n first last count process 0 first last count process process process ringförmig doppelt verkettete Listen priority priority n current count process 0 current process process process count Vor- / Nachteile?

17 Betriebssysteme Folie 3-17 Warteschlangenmodelle für Prozeßzustände Modell mit mehreren "blockiert"-warteschlangen swap in, resume new process partially executed swapped-out processes (in disk swap area) ready queue dispatch CPU CPU swap out, suspend terminated process time slice expired I/O I/O queue I/O request event occurs wait for termination wait for interrupt fork a child call sleep () blocked queues Modell kann durch "bereit"-warteschlangen erweitert werden real-time processes ready queues system processes interactive processes dispatch CPU CPU terminated process batch processes process with higher priority is ready, time slice expired, I/O finished,

18 Betriebssysteme Folie Prozeßkontrollblock das Betriebssystem verwaltet für jeden Prozeß einen Prozeßkontrollblock, der alle relevanten Informationen über den Prozeß enthält (Synonyme: Prozeßkontext, process control block, task control block Abkürzungen: PCB, TCB) typische Komponenten eines Prozeßkontrollblocks Identifikatoren Prozeßnummer / -name Nummer / Name des Benutzers, der den Prozeß gestartet hat Gruppennummer Stellung in der Prozeßhierarchie Prozeßnummer des Vaterprozesses Prozeßnummern der Sohnprozesse Prozessor-Zustandsinformation Register der Programmierumgebung (Datenregister, Adreßregister, Segmentregister, Indexregister, ) Kontroll-, Steuer-, Statusregister (System-/Benutzer-Stack-Register, Programmzähler, Prozessorstatuswort, )

19 Betriebssysteme Folie 3-19 Informationen zur Prozeßsteuerung Prozeßzustand Priorität Alarmzustand Zeiger auf Vorgänger und / oder Nachfolger Zeiger auf Threads des Prozesses Informationen zur Interprozeßkommunikation Rechte Zugriffsrechte auf Speicherbereiche, Dateien, Art der erlaubten Prozessorbefehle (priviligiert / nicht priviligiert) Speicherverwaltung Zeiger auf Segment- und / oder Seitentabellen Zeiger auf Tabelle mit offenen Dateien Betriebsmittelkonten Maximalwerte für erlaubte Betriebsmittel noch verfügbare Kontingente Abrechnungsdaten (CPU-Zeiten im System- / Benutzermodus, Anzahl Seitenfehler, ) sonstiges (Uhren, Sperren, )

20 Betriebssysteme Folie 3-20 Prozeßkontext wird manchmal aufgeteilt in Hardware-Kontext (i.w. Abbild der Prozessorregister) Benutzer-Kontext (i.w. Speicherabbild des Prozesses) System-Kontext (betriebssysteminterne Verwaltungsdaten) Prozeßtabelle enthält Verweise auf Prozeßkontrollblöcke process table process control block process identification process state process priority pointer to parent process pointer to child processes CPU register save area pointers to locate process's memory pointers to allocated resources NULL

21 Betriebssysteme Folie 3-21 Beipiele Linux Prozeßtabelle bis Version 2.2.x (linux/kernel/sched.c) struct task_struct *task [NR_TASKS] = &init_task, ; "Prozeßtabelle" ab Version 2.4.x struct task_struct *init_tasks [NR_CPUS] = &init_task, ; Prozeßtabelle wurde in Prozeßliste je CPU überführt Prozeßkontrollblock (/usr/include/linux/sched.h) struct task_struct volatile long state; unsigned long flags; long priority; int has_cpu; int processor; int last_processor; struct task_struct *next_task, *prev_task; struct task_struct *next_run, *prev_run; pid_t pid; pid_t pgrp; struct wait_queue *wait_chldexit; /* for wait4() */ struct sem_queue *sem_sleeping; struct files_struct *files; /* open file table */ struct mm_struct *mm; /* memory management info */ ; Solaris 8 struct proc (/usr/include/sys/proc.h) struct _klwp (/usr/include/sys/klwp.h) struct _kthread (/usr/include/sys/thread.h)

22 Betriebssysteme Folie 3-22 Verweisstrukturen zur Verwaltung der Sohnprozesse Linux p_cptr struct task_struct parent p_pptr p_pptr p_pptr youngest child p_osptr p_ysptr child p_osptr p_ysptr oldest child jeder Prozeß wird zusätzlich in der Prozeßtabelle geführt (bis Linux Version 2.2.x) jeder Prozeß befindet sich zusätzlich in der Prozeßliste (auch bei Linux bis Version 2.2.x) Solaris struct proc parent p_child p_parent p_parent p_parent youngest child p_psibling p_sibling child p_psibling p_sibling oldest child

23 Betriebssysteme Folie 3-23 Verweisstrukturen zur Verwaltung von Threads Linux Threads werden im Betriebssystemkern nicht unterstützt (zumindest nicht bis Version 2.4.x) Betriebssystemkern enthält keine Verweisstrukturen für Threads Threads werden mit clone ( ) erzeugt und wie Prozesse verwaltet es gibt immer einen Master-Thread, der z.b. für die Signalbehandlung zuständig ist jeder Thread hat eine eigene Prozeßnummer (PID) (unter Solaris würde "getpid ( )" bei jedem Thread dieselbe PID des umfassenden Prozesses liefern) das Kommando "ps" zeigt jeden Thread als eigenen Prozeß an Threads eines Prozesses können unterschiedliche Benutzer- und Gruppennummern haben (ist bei Solaris nicht möglich, da Threads keine Prozesse sind) Threads haben Vater-Sohn-Beziehungen (bei Solaris sind alle Threads gleichwertig)

24 Betriebssysteme Folie 3-24 einige Ressourcen sind auf einige Threads beschränkt (ist bei Solaris nicht möglich, da Threads innerhalb eines Prozesses laufen) auf einen durch fork ( ) erzeugten Sohnprozeß kann nur der Thread warten, der den Aufruf enthält mit rlimit ( ) gesetzte Begrenzungen für Ressourcen gelten nicht für alle Threads clock ( ) liefert nur Zeit für aktuellen Thread und nicht für gesamten Prozeß inklusive aller Threads usw. Threads werden in der Thread-Bibliothek verwaltet Thread-Kontrollblock (/internals.h) typedef struct _pthread_descr_struct *pthread_descr; struct _pthread_descr_struct union struct pthread_descr self; /* Pointer to this structure */ data; void * padding[16]; p_header; pthread_descr p_nextlive, p_prevlive; pthread_descr p_nextwaiting; pthread_descr p_nextlock; pthread_t p_tid; /* Thread identifier */ int p_pid; /* PID of Unix process */ int p_priority; /* (== 0 if not realtime) */ attribute ((aligned(32))); Threads verhalten sich wie Kernel-level Threads, da für jeden Thread ein Prozeß erzeugt wird

25 Betriebssysteme Folie 3-25 Beispielprogramm zur Beschränkung der Ressource fork ( ) pid_t fork_pid; /* ID of child process */ int main (void) ThrID_t thr_id [2]; /* ID's of created threads */ thr_id [0] = parallel ((PtrFunc_t) thr_fork, 0); thr_id [1] = parallel ((PtrFunc_t) thr_wait, 1); join_all (thr_id, 2); return 0; void thr_fork (void) printf ("Thread thr_fork: forking a child process.\n"); fork_pid = fork (); switch (fork_pid) case -1: /* error: no process created */ perror ("fork failed"); errno = 0; break; case 0: /* child process */ printf ("Child process: I'm sleeping for 2 seconds.\n"); sleep (2); printf ("Child process: terminating.\n"); exit (0); break; default: /* parent process */ printf ("Thread thr_fork: sleeping for 10 seconds.\n"); sleep (10); printf ("Thread thr_fork: try to wait for my child.\n"); if (waitpid (fork_pid, NULL, WNOHANG) == -1) perror ("Thread thr_fork"); errno = 0; else printf ("Thread thr_fork: child terminated.\n"); ; ; void thr_wait (void) printf ("Thread thr_wait: sleeping for 5 seconds.\n"); sleep (5); printf ("Thread thr_wait: try to wait for child process.\n"); if (waitpid (fork_pid, NULL, WNOHANG) == -1) perror ("Thread thr_wait"); errno = 0; else printf ("Thread thr_wait: child terminated.\n"); ;

26 Betriebssysteme Folie 3-26 Ausgabe unter Linux Thread thr_fork: forking a child process. Thread thr_fork: sleeping for 10 seconds. Child process: I'm sleeping for 2 seconds. Thread thr_wait: sleeping for 5 seconds. Child process: terminating. Thread thr_wait: try to wait for child process. Thread thr_wait: No child processes Thread thr_fork: try to wait for my child. Thread thr_fork: child terminated. Ausgabe unter Solaris Thread thr_fork: forking a child process. Child process: I'm sleeping for 2 seconds. Thread thr_wait: sleeping for 5 seconds. Thread thr_fork: sleeping for 10 seconds. Child process: terminating. Thread thr_wait: try to wait for child process. Thread thr_wait: child terminated. Thread thr_fork: try to wait for my child. Thread thr_fork: No child processes Aufgabe 3-1: Erstellen Sie ein Programm, das die Beschränkung der Funktion clock ( ) unter Linux aufzeigt.

27 Betriebssysteme Folie 3-27 Solaris Threads werden im Betriebssystemkern unterstützt Betriebssystemkern enthält Verweisstrukturen für Threads Prozeßkontrollblock verweist auf ringförmig verkette Liste seiner Kernel-level Threads Kernel Thread verweist auf seinen Lightweight Process (im Prinzip nur eine Datenstruktur) struct proc process p_tlist t_procp must remain in memory lwp_procp struct _klwp lwp_thread lightweight process t_lwp lwp_ thread lightweight process t_lwp lwp_ thread lightweight process t_lwp can be swapped or paged out t_next t_prev kernel thread struct _kthread t_next t_prev t_forw t_back kernel thread t_next t_prev t_forw t_back kernel thread t_next t_prev must remain in memory Aufgabe 3-2: Untersuchen Sie, wie die Daten auf die Strukturen struct proc, struct _klwp und struct _kthread unter Solaris aufgeteilt werden.

28 Betriebssysteme Folie Dispatcher / Scheduler Scheduler (Ablaufplaner) ist für die zeitliche Ablaufplanung der Prozesse zuständig erledigt seine Arbeit aufgrund einer gewählten Strategie setzt Anfangspriorität der Prozesse fest kann die Priorität aufgrund des Prozeßverhaltens ändern wird z.b. aktiviert, wenn Prozesse erzeugt / beendet werden Prozeßeigenschaften (z.b. Priorität) geändert werden eine Zeit abgelaufen ist oder bestimmte Systemfunktionen aufgerufen werden, die indirekt in die Prozeßverwaltung eingreifen (z.b. zur Koordinierung / Synchronisation von Prozesssen) Dispatcher (Prozeßumschalter, low-level scheduler) ist für den Prozeßwechsel (task switch, context switch) zuständig muß sehr effizient implementiert werden, da Prozeßwechsel im 10 bis 100 Millisekundenbereich vorkommen wird z.b. aktiviert, wenn der aktive Prozeß unterbrochen wird (z.b. Ablauf der Zeitscheibe) auf ein Ereignis warten muß (z.b. Ende einer Ein-/Ausgabeoperation) freiwillig auf den Prozessor verzichtet (spezielle Systemfunktion) endet

29 Betriebssysteme Folie 3-29 Aufgaben des Dispatchers sichert den (gesamten) Hardware-Kontext des bisher aktiven Prozesses in dessen Prozeßkontrollblock (VAX/VMS (1982) hat hierfür den Befehl SVPCTX (save process context). Die Intel Pentium Familie führt diese Aktion automatisch bei einem Prozeßwechsel durch. Ein Prozeßwechsel wird hier z.b. durchgeführt, wenn ein "CALL"-Befehl auf einen TSS- Deskriptor (task state segment) in der globalen Deskriptortabelle ausgeführt wird.) ändert den Zustand des Prozesses ("bereit", "blockiert", ) kettet den Prozeß in die entsprechende Warteschlange ein (VAX/VMS hat hierfür den Befehl INSQUE (insert into queue). Die Intel Pentium Familie hat keinen entsprechenden Befehl.) "sucht" den nächsten zu aktivierenden Prozeß (VAX/VMS unterstützt 32 Prioritätsklassen, in denen Prozesse derselben Priorität in einer verketteten Liste gespeichert sind. Das "Compute Queue Status Longword" enthält für jede nicht leere Warteschlange ein auf "1" gesetztes Bit. Der Bit-Suchbefehl "FFS" (find first set bit) liefert die nicht leere Warteschlange höchster Priorität und der Befehl "REMQUE" (remove from queue) kettet den ersten Prozeßkontrollblock aus der Warteschlange aus. Der neue Prozeß kann also mit zwei Befehlen gefunden werden. Die Intel Pentium Familie hat u.a. die Befehle "BSF" (bit scan forward) und "BSR" (bit scan reverse), die dem Befehl "FFS" entsprechen. Sie hat keinen Befehl, der dem Befehl "REMQUE" entspricht.) ändert den Zustand des Prozesses von "bereit" auf "aktiv" restauriert den (gesicherten) Hardware-Kontext des Prozesses (VAX/VMS hat hierfür den Befehl LDPCTX (load process context). Die Intel Pentium Familie führt diese Aktion automatisch bei einem Prozeßwechsel durch.) "startet" den Prozeß (Erfolgt i.a. automatisch durch die Rückkehr aus der Dispatcher-Routine, da die Prozessorregister nach dem Kontextwechsel den früher unterbrochenen Zustand des restaurierten Prozesses enthalten.)

30 Betriebssysteme Folie 3-30 Aufgaben des Schedulers Minimierung der Gesamtkosten des Systems möglichst hoher Durchsatz (Stapelbetrieb) Verwaltungsaufwand reduzieren (wenig Prozeßwechsel) möglichst kurze Antwortzeiten (Dialogbetrieb) häufige Prozeßwechsel garantierte Antwortzeiten (Echtzeitbetrieb) widersprüchliche Anforderungen Verhältnis Stapelbetrieb zu Dialogbetrieb wird voreingestellt Scheduler kann Stapel- und Dialogbetrieb unabhängig voneinander optimieren sollte die bisherigen Verläufe der Prozesse bei seinen Entscheidungen berücksichtigen ordnet die Prozesse / Threads verschiedenen "bereit"- Warteschlangen zu (z.b. aufgrund von Prozeßklassen oder Warte- und Rechenzeiten)

31 Betriebssysteme Folie 3-31 "bereit"-warteschlangen unter Solaris scheduling order class-specific priorities scheduler classes global priorities process queues first last RT max 0 + TS max 0 - TS max interrupts real-time class (RT) system class (SYS) timesharing class (TS) highest lowest der Scheduler konvertiert klassen-spezifische Prioritäten in globale Prioritäten die globale Priorität ist für den Dispatcher maßgebend ein Prozeß behält die CPU bis seine Zeitscheibe abgelaufen ist er sich selbst blockiert oder endet ein Prozeß höherer Priorität rechenwillig wird Prozesse derselben Priorität benutzen die Round-Robin-Strategie für alle Prozesse gilt i.a. eine Standard-Zeitscheibe Echtzeitprozesse können prozeß-spezifische Zeitscheiben haben Prioritäten von Echtzeitprozessen werden durch das System nicht geändert (können nur vom Benutzer geändert werden)

32 Betriebssysteme Folie 3-32 Prioritäten von Systemprozessen werden nur vom Betriebssystem verwaltet (können vom Benutzer nicht beeinflußt werden) Prioritäten von Time-sharing-Prozessen haben benutzer- und system-orientierte Komponente system-orientierte Komponente wird dynamisch geändert Priorität wird erhöht, wenn der Prozeß nur einen kleinen Teil seiner Zeitscheibe nutzt Priorität wird erniedrigt bei rechenintensiven Prozessen die Länge der Zeitscheibe wird größer je kleiner die Priorität ist (wenn Prozesse geringer Priorität aktiv werden, dürfen sie länger arbeiten, wenn sie nicht durch einen Prozeß höherer Priorität unterbrochen werden) benutzer-orientierte Komponente kann vom Benutzer zwischen "-TS max" und "TS max" geändert werden (i.a. -20 bis 20; siehe Kommando "nice") Standardpriorität: 0 Sohnprozesse erben die benutzer-orientierte Priorität globale Priorität ergibt sich aus den beiden Komponenten

33 Betriebssysteme Folie 3-33 "bereit"-warteschlangen unter Windows NT scheduling order dispatcher ready queues priorities process queues first last real-time variable priorities system 0 highest lowest für "variable priorities" Priorität eines Prozesses / Threads wird jedesmal erniedrigt, wenn er seine Zeitscheibe ausgenutzt hat Priorität eines blockierten Prozesses / Threads wird erhöht großer Wert, falls auf Tastatureingabe gewartet wurde kleiner Wert, falls auf andere Ein- / Ausgabe gewartet wurde Verfahren führt mittelfristig zu einer "Dreiteilung" hohe Priorität für interaktive Prozesse / Threads mittlere Priorität für E/A-orientierte Prozesse / Threads geringe Priorität für rechenintensive Prozesse / Threads Auswahl eines Prozesses / Threads aufgrund seiner Priorität und Prozessorzugehörigkeit falls ein ausgewählter Prozeß / Thread aufgrund der Prozessorzugehörigkeit nicht auf einem freien Prozessor ausgeführt werden kann, wird der Prozeß / Thread mit der nächst geringeren Priorität ausgewählt geringste Priorität hat der "idle"-prozeß ("system")

34 Betriebssysteme Folie 3-34 "bereit"-warteschlangen für Java-Threads high priority Priority 10 Priority 9 thr1 normal priority Priority 6 Priority 5 thr2 thr6 thr n Priority 4 Priority 3 thr3 thr5 Priority 2 low priority Priority 1 thr4 alle Threads starten mit normaler Priorität 5 Threads erben die Priorität ihres Erzeugers es gibt Implementierungen mit Zeitscheibenverfahren und rein prioritätsgesteuerten Scheduling-Verfahren (Threads derselben Prioritätsklasse werden im ersten Fall im Round-Robin-Verfahren bearbeitet. Im zweiten Fall können sie solange arbeiten bis sie fertig werden, sich selbst blockieren oder durch einen Thread höherer Priorität verdrängt werden) Aufgabe 3-3: a) Welchen Prioritätsklassen gehören die folgenden Prozesse unter Solaris an: sched, pageout, init, Xsession, dtlogin b) Wie funktioniert das Scheduling unter Linux (siehe linux/kernel/sched.c)?

35 Betriebssysteme Folie 3-35 Einteilung der Scheduling-Strategien nicht unterbrechende Verfahren (Prozeß bleibt solange aktiv, bis er sich selbst in den Zustand blockiert versetzt) unterbrechende Verfahren (dem Prozeß kann der Prozessor entzogen werden; notwendig bei Echtzeit-Betriebssystemen) Prozeß kann nur dann unterbrochen werden, wenn der Prozessor im Benutzermodus arbeitet (Standard bei älteren UNIX-Systemen) Prozeß kann auch dann unterbrochen werden, wenn der Prozessor im Systemmodus arbeitet (notwendig bei Echtzeit-Betriebssystemen) Ausnutzung der Prozessoren bei Multiprozessorsystemen alle Prozessoren werden genutzt, wenn Arbeit vorhanden ist einzelne Prozessoren dürfen ungenutzt bleiben, obwohl noch Arbeit vorhanden ist

36 Betriebssysteme Folie 3-36 Bewertung von Scheduling-Verfahren CPU-Auslastung (utilization) Maß für die Auslastung eines Prozessors durch Prozesse sollte zwischen 40 und 90 Prozent liegen Durchsatz (throughput) Anzahl der pro Zeiteinheit fertiggestellten Aufträge schwankt zwischen vielen Aufträgen pro Sekunde und wenigen pro Tag, Woche oder Monat (abhängig von der erforderlichen Rechenleistung der Aufträge) Durchlaufzeit (turnaround time) Zeit zwischen Betreten und Verlassen des Systems für einen Auftrag Summe aus Rechenzeit und verschiedenen Wartezeiten (warten auf CPU in der "bereit"-warteschlange, auf E/A-Ende in der "blockiert"- Warteschlange, usw.) Wartezeit (waiting time) Wartezeit in der "bereit"-warteschlange nur diese Zeit kann vom Scheduler direkt beeinflußt werden Antwortzeit (response time) wichtige Zeitspanne für interaktive Prozesse Zeit zwischen Eingabe und Reaktion auf Eingabe

37 Betriebssysteme Folie 3-37 mögliche Scheduling-Verfahren 1) First-Come-First-Served (FCFS), First-In-First-Out (FIFO) (Prozesse werden in der Reihenfolge ihrer Ankunft ohne Unterbrechung bis zu ihrem Ende bzw. ihrer Blockierung bedient) das einfachste Verfahren Implementierung über FIFO-Warteschlange u.u. große Wartezeiten und damit schlechte Antwortzeiten i.a. gute Auslastung der CPU kann zu langen Warteschlangen mit E/A-intensiven Prozessen führen, wenn ein rechenintensiver Prozeß mit wenig E/A-Operationen immer wieder die CPU blockiert Beispiel: Zum Zeitpunkt 0 treffen die Prozesse P 1, P 2 und P 3 ein. Die Ausführungszeiten der Prozesse betragen t 1 = 24, t 2 = 8 und t 3 = 3 Zeiteinheiten resp.. Die folgenden Gantt-Diagramme geben die zeitliche Zuordnung der Prozesse auf einen Prozessor an, wenn sie in der Reihenfolge (P 1, P 2, P 3 ) bzw. (P 3, P 2, P 1 ) ankommen S 1 P 1 P 2 P S 2 P 3 P 2 P 1 Im Vergabeplan S 1 wartet P 1 gar nicht, während P 2 und P 3 24 bzw. 32 Zeiteinheiten warten. Im Mittel warten die Prozesse im Plan S 1 ( )/3 = 56/3 Zeiteinheiten, während sie im Vergabeplan S 2 nur 14/3 Zeiteinheiten warten.

38 Betriebssysteme Folie ) FCFS mit Prioritätswarteschlangen (Regel: rechenintensive Prozesse erhalten eine geringe Priorität und E/A-intensive eine hohe Priorität. Prozesse derselben Prioritätsklasse werden in der Reihenfolge ihrer Ankunft ohne Unterbrechung bis zu ihrem Ende bzw. ihrer Blockierung bedient. Prozesse können durch Prozesse höherer Priorität unterbrochen werden. Der Scheduler kann die Prioritäten der Prozesse ändern.) 3) Shortest-Job-First (SJF), Shortest-Processing-Time (SPT) (der Prozeß mit der kürzesten Rechenzeit wird als nächster ohne Unterbrechung bedient; Kenntnis der Rechenzeit ist erforderlich; Prozesse mit gleicher Rechenzeit werden nach FCFS bedient) Verfahren ist optimal bezogen auf die mittlere Wartezeit für eine vorgegebene Menge von Prozessen (Beweis siehe Literatur) nicht geeignet für kurzfristiges Scheduling, da die Rechenzeiten i.a. nicht bekannt sind wird häufig eingesetzt für langfristiges Scheduling im Stapelbetrieb (in diesem Fall wird das vom Benutzer vorgegebene Zeitlimit benutzt) kann auch als "FCFS mit Prioritätswarteschlangen" implementiert werden (die Priorität eines Prozesses könnte über den Kehrwert der geschätzten Rechenzeit bestimmt werden je mehr Rechenzeit desto niedriger die Priorität) 4) Shortest-Remaining-Time (SRT), Shortest-Remaining- Processing-Time (SRPT) (im Prinzip SPT mit Unterbrechung, d.h. falls ein neuer Prozeß eintrifft, dessen Rechenzeit geringer ist als die verbleibende Rechenzeit des gerade aktiven Prozesses, dann wird ein Prozeßwechsel durchgeführt)

39 Betriebssysteme Folie ) Round-Robin (RR) (der Prozeß darf den Prozessor für eine Zeitscheibe benutzen; falls er in dieser Zeit nicht fertig wird, wird er unterbrochen und am Ende der Warteschlange eingereiht; es handelt sich hier um ein zyklisches Verfahren ohne Prioritäten) weit verbreitetes Verfahren für die meisten Multitasking- Betriebssysteme gleichmäßige Aufteilung der CPU-Zeit auf die Prozesse Größe der Zeitscheibe bestimmt die Leistung zu kleine Zeitscheibe hoher Verwaltungsaufwand durch Prozeßwechsel nominale Systemleistung wird u.u. nicht erreicht, da Kontextwechsel durchgeführt wird, bevor Cache- Speicher ihre "Warmlaufphase" überwunden haben zu große Zeitscheibe nähert sich dem FCFS-Verfahren, da mit zunehmender Zeitscheibe blockierende Systemaufrufe wahrscheinlicher werden mittlere Wartezeiten und Antwortzeiten werden größer 6) Shortest-Elapsed-Time (SET), Multilevel Feedback Queue Scheduling (im Prinzip RR mit Prioritätswarteschlangen; neuer Prozeß wird in die Warteschlange höchster Priorität eingereiht und erhält hier eine Zeitscheibe; nutzt er die Zeitscheibe aus, wird er in die Warteschlange nächst niedriger Priorität eingereiht; andernfalls wird er blockiert und kommt irgendwann wieder in die Eingangswarteschlange; rechenintensive Prozesse sinken schnell in der Priorität)

40 Betriebssysteme Folie 3-40 Fallbeispiel: Solaris benutzt ein 2-layer scheduling (nur bis Solaris 8) process process user level thread user level thread user level thread user level thread unbounded user threads are scheduled within the threads library software context, software context, open files, credentials, address space, process group, lightweight process machine state, lightweight process machine state, lightweight process machine state, kernel level scheduler and dispatcher CPU CPU kernel thread kernel thread kernel thread Bounded Threads werden fest mit einem Lightweight Process (LWP) und damit mit einem Kernel Thread verknüpft dieser LWP steht für andere Threads nicht zur Verfügung Scheduling erfolgt nur durch den Dispatcher im Betriebssystemkern verbraucht Betriebssystemressourcen (z.b. Kernel-Stack)

41 Betriebssysteme Folie 3-41 Unbounded Threads werden auf einem freien LWP ausgeführt Unbounded Threads werden in verschiedenen Prioritätswarteschlangen der Thread-Bibliothek verwaltet das Betriebssystem verwaltet Warteschlangen für LWPs der Thread wird durch den Scheduler der Thread-Bibliothek einem LWP zugeordnet der Dispatcher ordnet den LWP einer CPU zu nicht für jeden Unbounded Thread wird ein LWP erzeugt ein LWP kann im Laufe der Zeit verschiedene Unbounded Threads eines Prozesses ausführen falls ein Prozeß viele rechenwillige Unbounded Threads hat, erzeugt das Betriebssystem für den Prozeß weitere LWPs Kernel Threads bilden den unterbrechbaren Echtzeitkern im Betriebssystemkern (sie bearbeiten auch Unterbrechungen) Lightweight Prozesse sind Kernel Threads mit zusätzlichen Kontrollstrukturen zur Unterstützung der User-level Threads (Kernel Threads sind keine LWPs, aber LWPs sind immer Kernel Threads) LWPs werden innerhalb des Prozesses erzeugt und teilen sich alle Betriebsmittel mit dem Prozeß (mit dem Kommando "ps -elc" werden alle LWPs eines Prozesses angezeigt)

42 Betriebssysteme Folie 3-42 Aufgabe 3-4: Gegeben seien die folgenden Prozesse: Prozeß Rechenzeit (in Zeiteinheiten) Priorität P P P P P Die Prozesse sind in der Reihenfolge (P 1, P 2, P 3, P 4, P 5 ) zum Zeitpunkt 0 angekommen. a) Zeichnen Sie die Gantt-Diagramme, falls der Scheduler die Prozesse nach dem FCFS-, SJF- bzw. RR-Verfahren (eine Zeitscheibe entspricht einer Zeiteinheit) auf einen Prozessor zuteilt. Wie sieht das Gantt-Diagramm aus, wenn er ein nicht unterbrechendes Verfahren mit Prioritätswarteschlangen (kleine Prioritätsnummer entspricht hoher Priorität) benutzt? b) Geben Sie die Durchlaufzeit für jeden Prozeß und die mittlere Durchlaufzeit der Prozesse für jeden Vergabeplan an. c) Geben Sie die Wartezeit für jeden Prozeß und die mittlere Wartezeit der Prozesse für jeden Vergabeplan an.

43 Betriebssysteme Folie Prozeßsynchronisation Prozesse können folgendermaßen ausgeführt werden zeitlich verschachtelt (quasi-parallel) auf einem Einprozessorsystem zeitlich überlappt (parallel) auf einem Multiprozessorsystem zeitlich verschachtelt und überlappt (heutiger Standard auf einem Multiprozessorsystem) Beispiel: modifizierender Zugriff auf eine gemeinsame Variable 1. Ausführungsreihenfolge Prozeß / Thread 1 liest Wert der Variablen i erhöht Wert um 1 speichert neuen Wert in i Prozeß / Thread 2 liest Wert der Variablen i erhöht Wert um 1 speichert neuen Wert in i 2. Ausführungsreihenfolge Prozeß / Thread 1 liest Wert der Variablen i erhöht Wert um 1 speichert neuen Wert in i Prozeß / Thread 2 liest Wert der Variablen i erhöht Wert um 1 speichert neuen Wert in i

44 Betriebssysteme Folie 3-44 Problem des obigen Beispiels Fehler kann auftreten, muß aber nicht auftreten Fehler ist schwer reproduzierbar, da abhängig von Nebenbedingungen (z.b. Systemlast) typischer Synchronisationsfehler, wenn ein Prozeß einen anderen im Ablauf überholt (als race condition bekannt) Programmbereiche, in denen solche Fehler entstehen können, dürfen nicht unterbrochen werden (kritischer Abschnitt, critical section) Arbeitsweise der Prozesse muß koordiniert werden Koordinierung Beeinflussung der Abläufe paralleler Prozesse / Threads Steuerung von Wechselwirkungen (Konkurrenz / Kooperation) Mittel: Synchronisation / Kommunikation Ziel: deterministischer Ablauf (globale Ergebnisse sind unabhängig von der Ablaufreihenfolge der Prozesse) Synchronisation Ablauf wird in zeitliche Reihenfolge gebracht Reihenfolge kann zufällig oder vorbestimmt sein Sperrsynchronisation / wechselseitiger Ausschluß (mutual exclusion) Menge von konkurrierenden Prozessen / Threads um ein Betriebsmittel einer wird ausgewählt und alle anderen werden gesperrt

45 Betriebssysteme Folie 3-45 wechselseitiger Ausschluß wird i.a. durch Protokolle realisiert Vorprotokoll sorgt für Auswahl eines Prozesses / Threads Nachprotokoll sorgt für Freigabe des kritischen Bereichs Process / Thread 1 acquire lock access data release lock Process / Thread 2 acquire lock access data release lock shared data acquire lock access data release lock Process / Thread 3 Regeln für die Benutzung eines kritischen Abschnitts 1) Sicherheit: zu jeder Zeit darf sich höchstens ein Prozeß innerhalb des kritischen Abschnitts befinden 2) Lebendigkeit: wenn ein Prozeß in einen kritischen Abschnitt eintreten will, wird ihm dies nach endlicher Zeit gestattet jeder Prozeß verbringt nur eine endliche Zeit im kritischen Abschnitt (keine Programmierfehler durch Endlosschleifen, ) das Protokoll garantiert Fairneß

46 Betriebssysteme Folie 3-46 Realisierungsmöglichkeiten für wechselseitigen Ausschluß kurzfristige Deaktivierung des Unterbrechungssystems (verhindert Unterbrechungen und damit Prozeßwechsel; sehr harte Methode, die nur in Ausnahmefällen benutzt werden sollte) Sperrvariablen (spin locks) (ihr Wert gibt an, ob der kritische Bereich belegt oder frei ist; sie funktionieren nur dann effizient und allgemeingültig, wenn sie über einen speziellen, unteilbaren Befehl der Maschinensprache (z.b. "BSET" (test a bit and set, Motorola MC68x00 Familie), "BST" (bit test and set, Intel Pentium Familie)) realisiert werden; Variablen werden im Vorprotokoll abgefragt und im Nachprotokoll freigegeben; ggf. muß der Wert im Vorprotokoll zyklisch abgefragt werden, bis der kritische Abschnitt frei ist (aktives Warten, busy waiting), so daß Prozessorzeit verschwendet wird; es müssen aufwendige Algorithmen implementiert werden, wenn solche Maschinenbefehle nicht benutzt werden können) Semaphore (integrieren eine Variable (eine Art "Ampel") und eine Warteschlange für Prozesse / Threads, so daß aktives Warten vermieden wird; die Variable kann vom Typ boolean bzw. bit sein (binäre Semaphore, mutex) oder vom Typ integer (allgemeine / zählende Semaphore); Semaphore und die zugehörigen Protokolloperationen sind im Betriebssystem implementiert; die Operationen werden aus der Sicht der Prozesse atomar ausgeführt) Monitore (sind Bestandteil einer höheren Programmiersprache, so daß der Einsatz vom Compiler überwacht werden kann; stehen nur in wenigen Sprachen zur Verfügung)

47 Betriebssysteme Folie Globale Variablen Synchronisation der Prozesse / Threads ohne Betriebssystem- / Compiler-Unterstützung (in Zukunft wird nur noch der Begriff Prozeß benutzt, obwohl die verschiedenen Algorithmen in den Beispielprogrammen tatsächlich über Threads realisiert werden, da sie auf einfache Weise globale Variablen unterstützen) Zugriff auf ein Betriebsmittel erfolgt in zwei Schritten: 1) Variable auf den Wert Betriebsmittel frei überprüfen 2) a) frei: Variable auf den Wert Betriebsmittel belegt ändern und das Betriebsmittel nutzen b) belegt: warten, bis das Betriebsmittel frei wird zugehöriger Programmausschnitt /* normales Programm */ while (BetriebsmittelZustand == belegt) ; /* warten */ BetriebsmittelZustand = belegt; /* Betriebsmittel nutzen */ BetriebsmittelZustand = frei; /* normales Programm */ leider kann das Problem auf diese einfache Weise nicht gelöst werden (siehe auch einführendes Beispiel am Anfang des Kapitels 3.4)

48 Betriebssysteme Folie 3-48 möglicher Ablauf das Betriebsmittel sei frei und Programm A sei aktiv nachdem Programm A die while-schleife erfolgreich durchlaufen hat, wird ein Prozeßwechsel durchgeführt als nächstes wird Programm B aktiviert und durchläuft die while-schleife ebenfalls erfolgreich, da Programm A das Betriebsmittel nicht mehr sperren konnte Programm B sperrt das Betriebsmittel und benutzt es innerhalb der Nutzungsphase wird auch Programm B der Prozessor entzogen und Programm A wird aktiviert da Programm A die while-schleife bereits erfolgreich durchlaufen hat und nicht weiß, daß ihm zwischenzeitlich der Prozessor entzogen worden ist, belegt und benutzt es das Betriebsmittel ebenfalls die Sperrsynchronisation durch eine globale Variable hat versagt

49 Betriebssysteme Folie 3-49 Lösung 1 für den wechselseitigen Ausschluß /* Solution 1 for the synchronization of two concurrent workers * with global variables. * * For Windows 98/NT/2000 only "/W3" should be used because "/W4" * results in lots of warnings in Microsoft's header files. * * UNIX: * (g)cc [-DSunOS] [-DLinux] [-DIRIX] [-DCygwin] * -o glvar_1a glvar_1a.c parallel.c -lpthread * Windows 98/NT/2000: * cl /DWin32 /W3 glvar_1a.c parallel.c (Microsoft) * bcc32 /DWin32 glvar_1a.c parallel.c (Borland) * * * File: glvar_1a.c Author: S. Gross * Date: * */ #include <stdio.h> #include <stdlib.h> #include <time.h> #include <assert.h> #include "parallel.h" #define NUM_THR 2 /* must (!) be 2 */ #define NUM_CYCLES 30 /* # of normal/critical cycles */ #define MAX_NTIME 4 /* max. time for normal work */ #define MAX_CTIME 2 /* max. time for critical work */ void worker1 (int nr); void worker2 (int nr); /* turn: number of the worker which is allowed to enter the critical * section next */ int turn; int main (void) ThrID_t thr_id [NUM_THR]; /* ID's of concurrent workers */ assert (NUM_THR == 2); srand ((unsigned int) time ((time_t) NULL)); /* worker 1 is allowed to enter the critical section first */ turn = 1; /* start concurrent workers */ thr_id [0] = parallel ((PtrFunc_t) worker1, 0); thr_id [1] = parallel ((PtrFunc_t) worker2, 1); /* wait until all concurrent workers have terminated */ join_all (thr_id, NUM_THR); return 0;

50 Betriebssysteme Folie 3-50 /* Worker processes doing critical and non-critical work. * * input parameter: nr "name" of the worker * output parameter: none * return value: none * side effects: none * */ void worker1 (int nr) int i; /* loop variable */ for (i = 0; i < NUM_CYCLES; ++i) printf ("Worker %d: doing normal work in cycle %d.\n", nr, i); /* simulate some normal work */ SLEEP ((unsigned int) rand () % MAX_NTIME); printf ("Worker %d: try to enter critical section in cycle %d.\n", nr, i); while (turn == 2) printf ("Worker %d: waiting in cycle %d.\n", nr, i); SLEEP (1); ; printf ("Worker %d: doing critical work in cycle %d.\n", nr, i); /* simulate some critical work */ SLEEP ((unsigned int) rand () % MAX_CTIME); turn = 2; /* release critical region */ ; void worker2 (int nr) int i; /* loop variable */ for (i = 0; i < NUM_CYCLES; ++i) printf ("Worker %d: doing normal work in cycle %d.\n", nr, i); /* simulate some normal work */ SLEEP ((unsigned int) rand () % MAX_NTIME); printf ("Worker %d: try to enter critical section in cycle %d.\n", nr, i); while (turn == 1) printf ("Worker %d: waiting in cycle %d.\n", nr, i); SLEEP (1); ; printf ("Worker %d: doing critical work in cycle %d.\n", nr, i); /* simulate some critical work */ SLEEP ((unsigned int) rand () % MAX_CTIME); turn = 1; /* release critical region */ ;

51 Betriebssysteme Folie 3-51 Diskussion der Lösung 1 Lösung garantiert wechselseitigen Ausschluß, da Prozeß i nur dann in seinen kritischen Abschnitt eintritt, wenn turn == i ist Lösung ist verklemmungsfrei, da der Prozeß, dessen Nummer in turn gespeichert ist, immer weiterarbeiten kann Lösung stellt sicher, daß kein Prozeß am Betreten des kritischen Abschnitts gehindert wird, falls der unkritische Abschnitt normale Arbeit nur eine endliche Zeit dauert Lösung erfüllt Regeln zur Benutzung eines kritischen Abschnitts aus den folgenden Gründen ist sie trotzdem nicht als Lösung des Problems geeignet 1) die beiden Prozesse müssen ihre kritischen Abschnitte abwechselnd betreten, d.h. ein langsamer Prozeß kann einen schnellen behindern 2) falls Prozeß worker1 den kritischen Abschnitt durchlaufen und für Prozeß worker2 freigegeben hat, kann er ihn nie mehr betreten, wenn Prozeß worker2 inzwischen z.b. aufgrund eines Fehlers im unkritischen Bereich beendet wurde

52 Betriebssysteme Folie 3-52 Lösung 2 für den wechselseitigen Ausschluß anstelle der gemeinsamen Variablen turn wird jedem der beiden Prozesse worker_i eine globale Variable c i zugeordnet /* c[i] state variable for worker i. * 0: worker uses critical section or wants to use it * 1: worker performs normal work */ int c [NUM_THR]; int main (void) for (i = 0; i < NUM_THR; ++i) c [i] = 1; /* workers doing norm. work 1st */ ; /* start concurrent workers */ return 0; void worker (int nr) int other_nr, /* number of other worker */ i; /* loop variable */ int ntime; /* normal work time */ other_nr = (nr + 1) % 2; for (i = 0; i < NUM_CYCLES; ++i) prt_msg ("Worker", nr, "doing normal work in cycle", i); /* simulate some normal work */ SLEEP ((unsigned int) rand () % ntime); prt_msg ("Worker", nr, "try to enter critical section in cycle", i); c [nr] = 0; while (c [other_nr] == 0) prt_msg ("Worker", nr, "waiting in cycle", i); SLEEP (1); ; prt_msg ("Worker", nr, "doing critical work in cycle", i); /* simulate some critical work */ SLEEP ((unsigned int) rand () % MAX_CTIME); c [nr] = 1; /* release critical region */ ; prt_msg ("Worker", nr, "#################### finished after " "cycle", i - 1); diskutieren Sie die Lösung

53 Betriebssysteme Folie 3-53 Lösung 3 für den wechselseitigen Ausschluß Problem von Lösung 2 soll dadurch behoben werden, daß der Prozeß kurzfristig darauf verzichtet, den kritischen Abschnitt zu betreten, wenn die globale Variable des anderen Prozesses anzeigt, daß er im kritischen Abschnitt ist bzw. ihn betreten will Code zwischen COBEGIN und COEND wird parallel ausgeführt int c1, c2; /* ci = 0: P. ist im krit. Abschn. oder */ /* will ihn betreten */ /* ci = 1: P. ist im "normalen" Progr. */ int main (void) /* ========= Hauptprogramm ========== */ c1 = 1; c2 = 1; COBEGIN worker1 (1); /* beide Prozesse starten */ worker2 (2); COEND; void worker1 (int nr) /* =========== Prozess 1 ============ */ for (;;) normale Arbeit; c1 = 0; /* Vorprotokoll */ while (c2 == 0) /* */ /* */ c1 = 1; /* Verzicht auf krit. Abschnitt */ /* einen Augenblick warten */ c1 = 0; /* neuer Versuch */ ; /* */ kritischer Abschnitt; c1 = 1; /* Nachprotokoll */ ; void worker2 (int nr) /* =========== Prozess 2 ============ */ /* analog worker1 */

54 Betriebssysteme Folie 3-54 Implementierung des obigen Programms /* c[i] state variable for worker i. * 0: worker uses critical section or wants to use it * 1: worker performs normal work */ int c [NUM_THR]; int main (void) for (i = 0; i < NUM_THR; ++i) c [i] = 1; /* workers doing norm. work 1st */ ; /* start concurrent workers */ return 0; void worker (int nr) int other_nr, /* number of other worker */ i; /* loop variable */ int ntime; /* normal work time */ other_nr = (nr + 1) % 2; for (i = 0; i < NUM_CYCLES; ++i) prt_msg ("Worker", nr, "doing normal work in cycle", i); /* simulate some normal work */ SLEEP ((unsigned int) rand () % ntime); prt_msg ("Worker", nr, "try to enter critical section in cycle", i); c [nr] = 0; while (c [other_nr] == 0) prt_msg ("Worker", nr, "!!!!!!!!!!!!!!! Critical section is " "busy. Drop my request for cycle", i); c [nr] = 1; SLEEP (1); prt_msg ("Worker", nr, "try again to enter critical section " "in cycle", i); c [nr] = 0; ; prt_msg ("Worker", nr, "doing critical work in cycle", i); /* simulate some critical work */ SLEEP ((unsigned int) rand () % MAX_CTIME); c [nr] = 1; /* release critical region */ ; prt_msg ("Worker", nr, "#################### finished after " "cycle", i - 1); diskutieren Sie die Lösung

55 Betriebssysteme Folie 3-55 Lösung 4: Algorithmus von Dekker Kombination der ersten und dritten Lösung zum wechselseitigen Ausschluß int turn, /* Nr. des Prozesses, der als nächster */ /* den krit. Abschnitt betreten darf */ c1, c2; /* ci = 0: P. ist im krit. Abschn. o. */ /* will ihn betreten */ /* ci = 1: P. ist im "normalen" Progr. */ int main (void) /* ========= Hauptprogramm ========= */ turn = 1; c1 = 1; c2 = 1; COBEGIN worker1 (1); /* beide Prozesse starten */ worker2 (2); COEND; void worker1 (int nr) /* =========== Prozess 1 =========== */ for (;;) sonstige Arbeit; c1 = 0; /* Vorprotokoll */ while (c2 == 0) /* */ /* */ if (turn == 2) /* Prozess 2 hat Prioritaet */ /* -> "hoeflich" sein */ c1 = 1; /* Verzicht auf krit. Abschnitt */ while (turn == 2) /* */ /* */ ; /* warten */ ; /* */ c1 = 0; /* neuer Versuch */ ; /* */ ; /* */ kritischer Abschnitt; turn = 2; /* Nachprotokoll */ c1 = 1; /* */ ; void worker2 (int nr) /* =========== Prozess 2 =========== */ /* analog worker1 */

Dämon-Prozesse ( deamon )

Dämon-Prozesse ( deamon ) Prozesse unter UNIX - Prozessarten Interaktive Prozesse Shell-Prozesse arbeiten mit stdin ( Tastatur ) und stdout ( Bildschirm ) Dämon-Prozesse ( deamon ) arbeiten im Hintergrund ohne stdin und stdout

Mehr

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

Architektur Verteilter Systeme Teil 2: Prozesse und Threads Architektur Verteilter Systeme Teil 2: Prozesse und Threads 21.10.15 1 Übersicht Prozess Thread Scheduler Time Sharing 2 Begriff Prozess und Thread I Prozess = Sequentiell ablaufendes Programm Thread =

Mehr

Betriebssysteme. Dipl.-Ing.(FH) Volker Schepper

Betriebssysteme. Dipl.-Ing.(FH) Volker Schepper 1. Der Prozess beginnt im Zustand Erzeugt, nachdem sein Vaterprozess den Systemaufruf fork() (s.u.) abgesetzt hat. In diesem Zustand wird der Prozess-Kontext initialisiert. 2. Ist diese Aufbauphase abgeschlossen,

Mehr

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige

Mehr

Softwarelösungen: Versuch 4

Softwarelösungen: Versuch 4 Softwarelösungen: Versuch 4 Nichtstun in Schleife wird ersetzt durch zeitweilige Zurücknahme der Anforderung, um es anderen Prozessen zu erlauben, die Ressource zu belegen: /* Prozess 0 */ wiederhole flag[0]

Mehr

Round-Robin Scheduling (RR)

Round-Robin Scheduling (RR) RR - Scheduling Reigen-Modell: einfachster, ältester, fairster, am weitesten verbreiteter Algorithmus Entworfen für interaktive Systeme (preemptives Scheduling) Idee: Den Prozessen in der Bereitschaftsschlange

Mehr

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

Prozeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen Seite 8 A UFGABE 11 INTERP ROZEßKOMMUNIKATION Das folgende Petrinetz zeigt zwei verkoppelte Prozesse P1 und P2. Die Transitionen a und b beschreiben Aktionen von P1, die Transitionen c und d Aktionen von

Mehr

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz Systeme I: Betriebssysteme Kapitel 4 Prozesse Maren Bennewitz Version 20.11.2013 1 Begrüßung Heute ist Tag der offenen Tür Willkommen allen Schülerinnen und Schülern! 2 Wdhlg.: Attributinformationen in

Mehr

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN 2. UNIX/Linux-Prozessverwaltung und zugehörige Systemaufrufe Wintersemester 2015/16 2. Die UNIX/LINUX-Prozessverwaltung Aufgaben: 1. Erzeugen neuer Prozesse

Mehr

2 Prozesse und Threads

2 Prozesse und Threads Betriebssysteme Folie 2-1 2 Prozesse und Threads Programm statische Folge von Anweisungen und Daten befindet sich im Allgemeinen als Datei auf einer Festplatte der Dateiinhalt entspricht den Regeln des

Mehr

Systeme 1. Kapitel 5. Scheduling

Systeme 1. Kapitel 5. Scheduling Systeme 1 Kapitel 5 Scheduling Scheduling Verteilung und Zuweisung von begrenzten Ressourcen an konkurrierende Prozesse Beispiel: -> Zeitablaufsteuerung Zwei Prozesse zur gleichen Zeit rechenbereit auf

Mehr

Monitore. Klicken bearbeiten

Monitore. Klicken bearbeiten Sascha Kretzschmann Institut für Informatik Monitore Formatvorlage und deren Umsetzung des Untertitelmasters durch Klicken bearbeiten Inhalt 1. Monitore und Concurrent Pascal 1.1 Warum Monitore? 1.2 Monitordefinition

Mehr

Domänenmodell: Fadenkommunikation und -synchronisation

Domänenmodell: Fadenkommunikation und -synchronisation Domänenmodell: Fadenkommunikation und -synchronisation Alexander Humphreys, Reinhard Rösch, Fabian Scheler 15. Mai 2003 Inhaltsverzeichnis 1 Domänendefinition 1 2 Domänenlexikon 1 3 Konzeptmodelle 4 4

Mehr

Domänenanalyse Threadverwaltung/Scheduling

Domänenanalyse Threadverwaltung/Scheduling Domänenanalyse Threadverwaltung/Scheduling Johannes Handl, Marc Rößler, Christian Strengert 15. Mai 2003 Domänenanalyse Threadverwaltung/Scheduling [1] Domänendefinition Die Erzeugung, Verwaltung, Umschaltung/Wechsel,

Mehr

Übung zu Grundlagen der Betriebssysteme. 7. Übung 27.11.2012

Übung zu Grundlagen der Betriebssysteme. 7. Übung 27.11.2012 Übung zu Grundlagen der Betriebssysteme 7. Übung 27.11.2012 Threads Thread (Faden des (Kontrollflusses)): ist ein sequentieller Abarbeitungsablauf (Kontrollfluss) innerhalb eines Prozesses. Umfasst ein

Mehr

A Kompilieren des Kernels... 247. B Lineare Listen in Linux... 251. C Glossar... 257. Interessante WWW-Adressen... 277. Literaturverzeichnis...

A Kompilieren des Kernels... 247. B Lineare Listen in Linux... 251. C Glossar... 257. Interessante WWW-Adressen... 277. Literaturverzeichnis... 1 Einführung................................................ 1 1.1 Was ist ein Betriebssystem?............................... 1 1.1.1 Betriebssystemkern................................ 2 1.1.2 Systemmodule....................................

Mehr

Systemsoftware (SYS) Fakultät für Informatik WS 2008/2009 Christian Baun. Übungsklausur

Systemsoftware (SYS) Fakultät für Informatik WS 2008/2009 Christian Baun. Übungsklausur Hochschule Mannheim Systemsoftware (SYS) Fakultät für Informatik WS 2008/2009 Christian Baun Übungsklausur Aufgabe 1: Definieren Sie den Begriff der Systemsoftware. Nennen Sie die Aufgaben und Komponenten

Mehr

Begriff: Scheduling Planung, Schedule Plan. Verplanung der CPU-Zeit an die Threads (bzw. Prozesse)

Begriff: Scheduling Planung, Schedule Plan. Verplanung der CPU-Zeit an die Threads (bzw. Prozesse) 5 CPU-Scheduling Im folgenden wird von Threads gesprochen. Bei Systemen, die keine Threads unterstützen, ist der einzige "Thread" eines Prozesses gemeint. Früher wurde dieser Thread synonym mit dem Begriff

Mehr

4D Server v12 64-bit Version BETA VERSION

4D Server v12 64-bit Version BETA VERSION 4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und

Mehr

Prozesse und Scheduling

Prozesse und Scheduling Betriebssysteme für Wirtschaftsinformatiker SS04 KLAUSUR Vorbereitung mit Lösungen / Blatt 1 Prozesse und Scheduling Aufgabe 1 : Scheduling Gegeben seien die folgenden Prozesse und die Längen des jeweiligen

Mehr

Übungen zum Fach Betriebssysteme Kapitel 3

Übungen zum Fach Betriebssysteme Kapitel 3 Übungen zum Fach Betriebssysteme Kapitel 3 Prof. Dr. Kern & Prof. Dr. Wienkop Prozessverwaltung 1 Prozeßauslagerung Ein Betriebssystem, das die Zustände "rechnend", "bereit" und "wartend" sowie den künstlichen

Mehr

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0)

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0) Tapps mit XP-Mode unter Windows 7 64 bit (V2.0) 1 Einleitung... 2 2 Download und Installation... 3 2.1 Installation von WindowsXPMode_de-de.exe... 4 2.2 Installation von Windows6.1-KB958559-x64.msu...

Mehr

Betriebssysteme. Dipl.-Ing.(FH) Volker Schepper

Betriebssysteme. Dipl.-Ing.(FH) Volker Schepper Speicherverwaltung Real Mode Nach jedem starten eines PC befindet sich jeder x86 (8086, 80386, Pentium, AMD) CPU im sogenannten Real Mode. Datenregister (16Bit) Adressregister (20Bit) Dadurch lassen sich

Mehr

Technische Informatik II

Technische Informatik II Institut für Technische Informatik und Kommunikationsnetze Technische Informatik II Übung 1: Prozesse und Threads Aufgabe 1: Prozesse und Threads a) Wie verhält sich eine Applikation die aus mehreren Prozessen

Mehr

CPU-Scheduling - Grundkonzepte

CPU-Scheduling - Grundkonzepte CPU-Scheduling - Grundkonzepte Sommersemester 2015 Seite 1 Gesamtüberblick 1. Einführung in Computersysteme 2. Entwicklung von Betriebssystemen 3. Architekturansätze 4. Interruptverarbeitung in Betriebssystemen

Mehr

Prozesse und Logs Linux-Kurs der Unix-AG

Prozesse und Logs Linux-Kurs der Unix-AG Prozesse und Logs Linux-Kurs der Unix-AG Benjamin Eberle 22. Januar 2015 Prozesse unter Linux gestartete Programme laufen unter Linux als Prozesse jeder Prozess hat eine eindeutige Prozess-ID (PID) jeder

Mehr

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard Systeme I: Betriebssysteme Kapitel 4 Prozesse Wolfram Burgard Version 18.11.2015 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, Historische Entwicklung, unterschiedliche Arten von Betriebssystemen

Mehr

Bitte verwenden Sie nur dokumentenechtes Schreibmaterial!

Bitte verwenden Sie nur dokumentenechtes Schreibmaterial! VO 182.711 Prüfung Betriebssysteme 8. November 2013 KNr. MNr. Zuname, Vorname Ges.)(100) 1.)(35) 2.)(20) 3.)(45) Zusatzblätter: Bitte verwenden Sie nur dokumentenechtes Schreibmaterial! 1 Synchronisation

Mehr

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

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Es kann maximal ein Prozess die Umladestelle benutzen.

Es kann maximal ein Prozess die Umladestelle benutzen. SoSe 0 Konzepte und Methoden der Systemsoftware Universität Paderborn Fachgebiet Rechnernetze Präsenzübung (Musterlösung) 0-06-0 bis 0-06-06 Aufgabe : Erzeuger/Verbraucher-Pattern Ein Getränkemarkt hat

Mehr

TIMI: Technische Informatik für Medieninformatiker

TIMI: Technische Informatik für Medieninformatiker TIMI: Technische Informatik für Medieninformatiker Bachelor-Studiengang Digitale Medien Medieninformatik SS 2004 Niels Pollem Arbeitsgruppe Rechnernetze (Prof. Dr.-Ing. Ute Bormann) Scheduling:

Mehr

Prozesse und Prozessmanagement des BS. 1 Unterschied Prozess, Threads. 1.1 Prozess. 1.2 Threads

Prozesse und Prozessmanagement des BS. 1 Unterschied Prozess, Threads. 1.1 Prozess. 1.2 Threads Prozesse und Prozessmanagement des BS 1 Unterschied Prozess, Threads 1.1 Prozess Bei jedem Programm muss gespeichert werden, welche Betriebsmittel (Speicherplatz, CPU- Zeit, CPU-Inhalt,...) es benötigt.

Mehr

Welche der folgenden Aussagen gelten? a) Im allgemeinen gilt: ein Deadlock tritt auf gdw. der Resource-Allocation Graph einen Zykel

Welche der folgenden Aussagen gelten? a) Im allgemeinen gilt: ein Deadlock tritt auf gdw. der Resource-Allocation Graph einen Zykel Aufgabe 1 (5 Punkte) (Multiple Choice) Beantworten Sie folgende Fragen durch Ankreuzen der richtigen Antwort. Für jede falsche Antwort wird ein Punkt abgezogen (es werden minimal 0 Punkte vergeben). Welche

Mehr

2 Prozesse und Threads

2 Prozesse und Threads Betriebssysteme Folie 2-1 2 Prozesse und Threads Programm statische Folge von Anweisungen und Daten befindet sich im Allgemeinen als Datei auf einer Festplatte der Dateiinhalt entspricht den Regeln des

Mehr

Systeme I: Betriebssysteme Kapitel 7 Scheduling. Maren Bennewitz

Systeme I: Betriebssysteme Kapitel 7 Scheduling. Maren Bennewitz Systeme I: Betriebssysteme Kapitel 7 Scheduling Maren Bennewitz Version 23.01.2013 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, Historische Entwicklung, unterschiedliche Arten von Betriebssystemen

Mehr

Einfache und effiziente Zusammenarbeit in der Cloud. EASY-PM Office Add-Ins Handbuch

Einfache und effiziente Zusammenarbeit in der Cloud. EASY-PM Office Add-Ins Handbuch Einfache und effiziente Zusammenarbeit in der Cloud EASY-PM Office Add-Ins Handbuch Inhaltsverzeichnis 1. Einführung... 3 2. Ribbonmenü... 4 3. Dokument... 5 3.1 Öffnen... 5 3.2 Speichern... 6 3.3 Speichern

Mehr

Grundlagen verteilter Systeme

Grundlagen verteilter Systeme Universität Augsburg Insitut für Informatik Prof. Dr. Bernhard Bauer Wolf Fischer Christian Saad Wintersemester 08/09 Übungsblatt 3 12.11.08 Grundlagen verteilter Systeme Lösungsvorschlag Aufgabe 1: a)

Mehr

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz Systeme I: Betriebssysteme Kapitel 4 Prozesse Maren Bennewitz Version 21.11.2012 1 Begrüßung Heute ist Tag der offenen Tür Willkommen allen Schülerinnen und Schülern! 2 Testat nach Weihnachten Mittwoch

Mehr

Dokumentenverwaltung. Copyright 2012 cobra computer s brainware GmbH

Dokumentenverwaltung. Copyright 2012 cobra computer s brainware GmbH Dokumentenverwaltung Copyright 2012 cobra computer s brainware GmbH cobra Adress PLUS ist eingetragenes Warenzeichen der cobra computer s brainware GmbH. Andere Begriffe können Warenzeichen oder anderweitig

Mehr

Übung: Verwendung von Java-Threads

Übung: Verwendung von Java-Threads Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum

Mehr

3.14 Die Programmieroberfläche Programmierung

3.14 Die Programmieroberfläche Programmierung 121 3.14 Die Programmieroberfläche Programmierung Besonderheiten Die Oberflächen der einzelnen Quellen (3S, KW-Software, Siemens-TIA-Portal, logi.cad 3, PAS4000) sind in sich unterschiedlich. Aber auch

Mehr

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

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b AGROPLUS Buchhaltung Daten-Server und Sicherheitskopie Version vom 21.10.2013b 3a) Der Daten-Server Modus und der Tresor Der Daten-Server ist eine Betriebsart welche dem Nutzer eine grosse Flexibilität

Mehr

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Diese Verbindung muss einmalig eingerichtet werden und wird benötigt, um den Zugriff vom privaten Rechner oder der Workstation im Home Office über

Mehr

Leitfaden zur Installation von Bitbyters.WinShutdown

Leitfaden zur Installation von Bitbyters.WinShutdown Leitfaden zur Installation von Bitbyters.WinShutdown für Windows 32 Bit 98/NT/2000/XP/2003/2008 Der BitByters.WinShutDown ist ein Tool mit dem Sie Programme beim Herunterfahren Ihres Systems ausführen

Mehr

Vorl. 6: Single- und Multitasking

Vorl. 6: Single- und Multitasking Universität Bielefeld Technische Fakultät AG Rechnernetze und verteilte Systeme Vorl. 6: Single- und Multitasking Peter B. Ladkin Single Tasking Command Interpreter (ComInt) läuft wartet auf Tastatur-Eingabe

Mehr

Programme werden durch den Ablauf eines oder mehrerer Prozesse (engl.: process, task) von einem Rechner abgearbeitet.

Programme werden durch den Ablauf eines oder mehrerer Prozesse (engl.: process, task) von einem Rechner abgearbeitet. Prozessverwaltung Prozesse Programme werden durch den Ablauf eines oder mehrerer Prozesse (engl.: process, task) von einem Rechner abgearbeitet. Prozesse sind Abfolgen von Aktionen, die unter Kontrolle

Mehr

SafeRun-Modus: Die Sichere Umgebung für die Ausführung von Programmen

SafeRun-Modus: Die Sichere Umgebung für die Ausführung von Programmen SafeRun-Modus: Die Sichere Umgebung für die Ausführung von Programmen Um die maximale Sicherheit für das Betriebssystem und Ihre persönlichen Daten zu gewährleisten, können Sie Programme von Drittherstellern

Mehr

10.6 Programmier-Exits für Workitems

10.6 Programmier-Exits für Workitems 10.6 Programmier-Exits für Workitems 279 10.6 Programmier-Exits für Workitems 10.6.1 Das Interface IF_SWF_IFS_WORKITEM_EXIT Am Schritt einer Workflow-Definition im Reiter»Programmier-Exits«können verschiedene

Mehr

IBM Software Demos Tivoli Provisioning Manager for OS Deployment

IBM Software Demos Tivoli Provisioning Manager for OS Deployment Für viele Unternehmen steht ein Wechsel zu Microsoft Windows Vista an. Doch auch für gut vorbereitete Unternehmen ist der Übergang zu einem neuen Betriebssystem stets ein Wagnis. ist eine benutzerfreundliche,

Mehr

Backup der Progress Datenbank

Backup der Progress Datenbank Backup der Progress Datenbank Zeitplandienst (AT): Beachten Sie bitte: Die folgenden Aktionen können nur direkt am Server, vollzogen werden. Mit Progress 9.1 gibt es keine Möglichkeit über die Clients,

Mehr

LPT1 Anschluss mit PCMCIA Karte

LPT1 Anschluss mit PCMCIA Karte 1. Allgemeines LPT1 Anschluss mit PCMCIA Karte verwendete Hardware: Lenze PC Systembusadapter EMF 2173-V003 PCMCIA Karte Firma QUATECH Typ SPP-100 Auf die Installation der PCMCIA Karte wird hier nicht

Mehr

5 Speicherverwaltung. bs-5.1 1

5 Speicherverwaltung. bs-5.1 1 5 Speicherverwaltung bs-5.1 1 Pufferspeicher (cache) realer Speicher Primärspeicher/Arbeitsspeicher (memory) Sekundärspeicher/Hintergrundspeicher (backing store) (Tertiärspeicher/Archivspeicher) versus

Mehr

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert: Firewall für Lexware professional konfigurieren Inhaltsverzeichnis: 1. Allgemein... 1 2. Einstellungen... 1 3. Windows XP SP2 und Windows 2003 Server SP1 Firewall...1 4. Bitdefender 9... 5 5. Norton Personal

Mehr

Task: Nmap Skripte ausführen

Task: Nmap Skripte ausführen Task: Nmap Skripte ausführen Inhalt Einfache Netzwerkscans mit NSE Ausführen des Scans Anpassung der Parameter Einleitung Copyright 2009-2015 Greenbone Networks GmbH Herkunft und aktuellste Version dieses

Mehr

2A Basistechniken: Weitere Aufgaben

2A Basistechniken: Weitere Aufgaben 2A Basistechniken: Weitere Aufgaben 2A.3 Programmierung unter UNIX/Linux 1. Gegeben sind einige Ausschnitte von C-Programmen, die unter UNIX/Linux ausgeführt werden sollen. Beantworten Sie die zugehörigen

Mehr

Prozesse. Stefan Janssen. sjanssen@cebitec.uni-bielefeld.de. Alexander Sczyrba asczyrba@cebitec.uni-bielefeld.de

Prozesse. Stefan Janssen. sjanssen@cebitec.uni-bielefeld.de. Alexander Sczyrba asczyrba@cebitec.uni-bielefeld.de Netzwerk - Programmierung Prozesse Stefan Janssen sjanssen@cebitec.uni-bielefeld.de Alexander Sczyrba asczyrba@cebitec.uni-bielefeld.de Madis Rumming mrumming@cebitec.uni-bielefeld.de Übersicht Prozesse

Mehr

Kapitel 4. Monitore und wechselseitiger Ausschluss

Kapitel 4. Monitore und wechselseitiger Ausschluss Seite 1 Kapitel 4 Monitore und wechselseitiger Ausschluss Prof. Dr. Rolf Hennicker 28.05.2015 4.1 Interferenzen Seite 2 Parallel ablaufende Prozesse können sich gegenseitig (störend) beeinflussen. Beispiel

Mehr

Threads. Foliensatz 8: Threads Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2015

Threads. Foliensatz 8: Threads Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2015 Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff:87.234.201.207 port 61557 Sep 19 14:27:41 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root)

Mehr

Swisscom TV Medien Assistent

Swisscom TV Medien Assistent Swisscom TV Medien Assistent Mithilfe dieses Assistenten können Sie Fotos und Musik, die Sie auf Ihrem Computer freigegeben haben, auf Swisscom TV geniessen. Diese Bedienungsanleitung richtet sich an die

Mehr

Dynamic Ressource Management

Dynamic Ressource Management best Open Systems Day Fall 2006 Dynamic Ressource Management Unterföhring Marco Kühn best Systeme GmbH kuehn@best.de Agenda Überblick Dynamic Resource Pools und FSS Dynamic Resource Memory RCAP Oracle

Mehr

6.Vorlesung Betriebssysteme Hochschule Mannheim

6.Vorlesung Betriebssysteme Hochschule Mannheim Christian Baun 6.Vorlesung Betriebssysteme Hochschule Mannheim SS2011 1/40 6.Vorlesung Betriebssysteme Hochschule Mannheim Christian Baun Karlsruher Institut für Technologie Steinbuch Centre for Computing

Mehr

Folgeanleitung für Klassenlehrer

Folgeanleitung für Klassenlehrer Folgeanleitung für Klassenlehrer 1. Das richtige Halbjahr einstellen Stellen sie bitte zunächst das richtige Schul- und Halbjahr ein. Ist das korrekte Schul- und Halbjahr eingestellt, leuchtet die Fläche

Mehr

Dokumentation IBIS Monitor

Dokumentation IBIS Monitor Dokumentation IBIS Monitor Seite 1 von 16 11.01.06 Inhaltsverzeichnis 1. Allgemein 2. Installation und Programm starten 3. Programmkonfiguration 4. Aufzeichnung 4.1 Aufzeichnung mitschneiden 4.1.1 Inhalt

Mehr

Dokumentation zum Spielserver der Software Challenge

Dokumentation zum Spielserver der Software Challenge Dokumentation zum Spielserver der Software Challenge 10.08.2011 Inhaltsverzeichnis: Programmoberfläche... 2 Ein neues Spiel erstellen... 2 Spielfeldoberfläche... 4 Spielwiederholung laden... 5 Testdurchläufe...

Mehr

Prozesse und Logs Linux-Kurs der Unix-AG

Prozesse und Logs Linux-Kurs der Unix-AG Prozesse und Logs Linux-Kurs der Unix-AG Andreas Teuchert 27./28. Juni 2012 Prozesse unter Linux gestartete Programme laufen unter Linux als Prozesse jeder Prozess hat eine eindeutige Prozess-ID (PID)

Mehr

Tutorial - www.root13.de

Tutorial - www.root13.de Tutorial - www.root13.de Netzwerk unter Linux einrichten (SuSE 7.0 oder höher) Inhaltsverzeichnis: - Netzwerk einrichten - Apache einrichten - einfaches FTP einrichten - GRUB einrichten Seite 1 Netzwerk

Mehr

Datensicherung. Beschreibung der Datensicherung

Datensicherung. Beschreibung der Datensicherung Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten

Mehr

Inhaltsverzeichnis. 2.4 Thread-Systeme. 2.1 Was ist ein Prozess? 2.2 Scheduling. 2.3 Interprozesskommunikation

Inhaltsverzeichnis. 2.4 Thread-Systeme. 2.1 Was ist ein Prozess? 2.2 Scheduling. 2.3 Interprozesskommunikation Inhaltsverzeichnis Systemprogrammierung - Kapitel 2 Prozessverwaltung 1/21 2.1 Was ist ein Prozess? Definition Prozesszustände Prozesskontrollblöcke 2.4 Thread-Systeme Sinn und Zweck Thread-Arten Thread-Management

Mehr

Step by Step Webserver unter Windows Server 2003. von Christian Bartl

Step by Step Webserver unter Windows Server 2003. von Christian Bartl Step by Step Webserver unter Windows Server 2003 von Webserver unter Windows Server 2003 Um den WWW-Server-Dienst IIS (Internet Information Service) zu nutzen muss dieser zunächst installiert werden (wird

Mehr

Getting Started Guide CRM Online, 2013 & 2015 xrm1 Verpflegungspauschalen

Getting Started Guide CRM Online, 2013 & 2015 xrm1 Verpflegungspauschalen Getting Started Guide CRM Online, 2013 & 2015 xrm1 Verpflegungspauschalen 1 Download und Import der Lösung 2 Import der aktuellenverpflegungspauschalen 3 Weitere Informationen und Problembehandlung 1 Download

Mehr

SharePoint Demonstration

SharePoint Demonstration SharePoint Demonstration Was zeigt die Demonstration? Diese Demonstration soll den modernen Zugriff auf Daten und Informationen veranschaulichen und zeigen welche Vorteile sich dadurch in der Zusammenarbeit

Mehr

Betriebssystembau (BSB)

Betriebssystembau (BSB) Betriebssystembau (BSB) 6. Übung http://ess.cs.tu-.de/de/teaching/ws2013/bsb/ Olaf Spinczyk olaf.spinczyk@tu-.de http://ess.cs.tu-.de/~os AG Eingebettete System Informatik 12, TU Dortmund Agenda Vorstellung

Mehr

Lizenzen auschecken. Was ist zu tun?

Lizenzen auschecken. Was ist zu tun? Use case Lizenzen auschecken Ihr Unternehmen hat eine Netzwerk-Commuterlizenz mit beispielsweise 4 Lizenzen. Am Freitag wollen Sie Ihren Laptop mit nach Hause nehmen, um dort am Wochenende weiter zu arbeiten.

Mehr

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele: 2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Configuring Terminal Services o Configure Windows Server 2008 Terminal Services RemoteApp (TS RemoteApp) o Configure Terminal Services Gateway

Mehr

How to do? Projekte - Zeiterfassung

How to do? Projekte - Zeiterfassung How to do? Projekte - Zeiterfassung Stand: Version 4.0.1, 18.03.2009 1. EINLEITUNG...3 2. PROJEKTE UND STAMMDATEN...4 2.1 Projekte... 4 2.2 Projektmitarbeiter... 5 2.3 Tätigkeiten... 6 2.4 Unterprojekte...

Mehr

Task A Zündung. Task B Einspritzung. Task C Erfassung Pedalwert. J. Schäuffele, Th. Zurawka: Automotive Software Engineering, Vieweg, 2003

Task A Zündung. Task B Einspritzung. Task C Erfassung Pedalwert. J. Schäuffele, Th. Zurawka: Automotive Software Engineering, Vieweg, 2003 Task! evt. parallel zu bearbeitende Ausführungseinheit! Beispiel: Task A Zündung Task B Einspritzung Task C Erfassung Pedalwert Zeit t J. Schäuffele, Th. Zurawka:, Vieweg, 2003 Echtzeitbetriebssysteme

Mehr

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware Datenübernahme von HKO 5.9 zur Advolux Kanzleisoftware Die Datenübernahme (DÜ) von HKO 5.9 zu Advolux Kanzleisoftware ist aufgrund der von Update zu Update veränderten Datenbank (DB)-Strukturen in HKO

Mehr

How to install freesshd

How to install freesshd Enthaltene Funktionen - Installation - Benutzer anlegen - Verbindung testen How to install freesshd 1. Installation von freesshd - Falls noch nicht vorhanden, können Sie das Freeware Programm unter folgendem

Mehr

Installationshinweise BEFU 2014

Installationshinweise BEFU 2014 Installationshinweise BEFU 2014 Allgemeines BEFU 2014 läuft unter dem Betriebssystem Windows XP, Vista, 7, 8. Für BEFU 2014 wird als Entwicklungsumgebung Access (32-Bit) verwendet. Es werden zum Download

Mehr

MetaQuotes Empfehlungen zum Gebrauch von

MetaQuotes Empfehlungen zum Gebrauch von MetaQuotes Empfehlungen zum Gebrauch von MetaTrader 4 auf Mac OS Auch wenn viele kommerzielle Angebote im Internet existieren, so hat sich MetaQuotes, der Entwickler von MetaTrader 4, dazu entschieden

Mehr

Ontrack EasyRecovery 11 Neue Funktionen. S.M.A.R.T.-Analysefunktion Wiederherstellung von VMware VMDK-Images Datenlöschfunktion

Ontrack EasyRecovery 11 Neue Funktionen. S.M.A.R.T.-Analysefunktion Wiederherstellung von VMware VMDK-Images Datenlöschfunktion Ontrack EasyRecovery 11 Neue Funktionen S.M.A.R.T.-Analysefunktion Wiederherstellung von VMware VMDK-Images Datenlöschfunktion S.M.A.R.T.-Analysefunktion S.M.A.R.T. Scan identifiziert die Menge und den

Mehr

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

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge Ab der Version forma 5.5 handelt es sich bei den Orientierungshilfen der Architekten-/Objektplanerverträge nicht

Mehr

Überprüfung der digital signierten E-Rechnung

Überprüfung der digital signierten E-Rechnung Überprüfung der digital signierten E-Rechnung Aufgrund des BMF-Erlasses vom Juli 2005 (BMF-010219/0183-IV/9/2005) gelten ab 01.01.2006 nur noch jene elektronischen Rechnungen als vorsteuerabzugspflichtig,

Mehr

CA Übung 30.01.2006. Christian kann heute nicht kommen => ich bin heute da, Christian das nächste Mal wieder

CA Übung 30.01.2006. Christian kann heute nicht kommen => ich bin heute da, Christian das nächste Mal wieder CA Übung 30.01.2006 Hallo zusammen! Christian kann heute nicht kommen => ich bin heute da, Christian das nächste Mal wieder Adrian Schüpbach: scadrian@student.ethz.ch Christian Fischlin: cfischli@student.ethz.ch

Mehr

B.5 Prozessverwaltung B.5. Prozessverwaltung. 2002 Prof. Dr. Rainer Manthey Informatik II 1

B.5 Prozessverwaltung B.5. Prozessverwaltung. 2002 Prof. Dr. Rainer Manthey Informatik II 1 Prozessverwaltung Prozessverwaltung 2002 Prof. Dr. Rainer Manthey Informatik II 1 Prozesse Programme werden durch den Ablauf eines oder mehrerer Prozesse (engl.: process, task) ) von einem Rechner abgearbeitet.

Mehr

Die nachfolgende Anleitung zeigt die Vorgehensweise unter Microsoft Windows Vista.

Die nachfolgende Anleitung zeigt die Vorgehensweise unter Microsoft Windows Vista. Schritt für Schritt Anleitung zur Einrichtung Ihrer neuen Festplatte Die nachfolgende Anleitung zeigt die Vorgehensweise unter Microsoft Windows Vista. Schließen Sie Ihre Festplatte an Ihrem Computer an.

Mehr

8. Bintec Router Redundancy Protocol (BRRP) 8.1 Einleitung

8. Bintec Router Redundancy Protocol (BRRP) 8.1 Einleitung 8. Bintec Router Redundancy Protocol (BRRP) 8.1 Einleitung Im Folgenden wird die Konfiguration von BRRP gezeigt. Beide Router sind jeweils über Ihr Ethernet 1 Interface am LAN angeschlossen. Das Ethernet

Mehr

Nach Ihrer erstmaligen Anmeldung sollten Sie Ihr Passwort ändern. Dazu klicken Sie bitte auf Ihren Namen.

Nach Ihrer erstmaligen Anmeldung sollten Sie Ihr Passwort ändern. Dazu klicken Sie bitte auf Ihren Namen. 1 Passwort ändern Nach Ihrer erstmaligen Anmeldung sollten Sie Ihr Passwort ändern Dazu klicken Sie bitte auf Ihren Namen Abb 1-1 Erstmaliger Anmeldung Danach erscheint ein PopUp indem Sie Ihr Passwort

Mehr

Umbenennen eines NetWorker 7.x Servers (UNIX/ Linux)

Umbenennen eines NetWorker 7.x Servers (UNIX/ Linux) NetWorker - Allgemein Tip #293, Seite 1/6 Umbenennen eines NetWorker 7.x Servers (UNIX/ Linux) Dies wird offiziell nicht von unterstützt!!! Sie werden also hierfür keinerlei Support erhalten. Wenn man

Mehr

Buddy - Algorithmus Handbuch für Endnutzer Stand 02.08.2005

Buddy - Algorithmus Handbuch für Endnutzer Stand 02.08.2005 Buddy - Algorithmus Handbuch für Endnutzer Stand 02.08.2005 1. Vorwort 1 2. Systemvoraussetzungen 2 3. Programmarten 2 4. Sicherheit der Endnutzer 2 5. Handhabung 3 5.1 allgemeine Programmübersicht 3 5.2

Mehr

Lehrer: Einschreibemethoden

Lehrer: Einschreibemethoden Lehrer: Einschreibemethoden Einschreibemethoden Für die Einschreibung in Ihren Kurs gibt es unterschiedliche Methoden. Sie können die Schüler über die Liste eingeschriebene Nutzer Ihrem Kurs zuweisen oder

Mehr

Zählen von Objekten einer bestimmten Klasse

Zählen von Objekten einer bestimmten Klasse Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --

Mehr

Switching. Übung 7 Spanning Tree. 7.1 Szenario

Switching. Übung 7 Spanning Tree. 7.1 Szenario Übung 7 Spanning Tree 7.1 Szenario In der folgenden Übung konfigurieren Sie Spanning Tree. An jeweils einem Switch schließen Sie Ihre Rechner über Port 24 an. Beide Switche sind direkt über 2 Patchkabel

Mehr

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

Handbuch. timecard Connector 1.0.0. Version: 1.0.0. REINER SCT Kartengeräte GmbH & Co. KG Goethestr. 14 78120 Furtwangen Handbuch timecard Connector 1.0.0 Version: 1.0.0 REINER SCT Kartengeräte GmbH & Co. KG Goethestr. 14 78120 Furtwangen Furtwangen, den 18.11.2011 Inhaltsverzeichnis Seite 1 Einführung... 3 2 Systemvoraussetzungen...

Mehr

fork () Hans-Georg Eßer, Hochschule München Betriebssysteme I, SS 2008 2. Prozesse (2/2) Folie 4

fork () Hans-Georg Eßer, Hochschule München Betriebssysteme I, SS 2008 2. Prozesse (2/2) Folie 4 Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff:87.234.201.207 port 61557 Sep 19 14:27:41 amd64 syslog-ng[7653]: SAS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root)

Mehr

Führen Sie zum Einstieg in die Materie einige Systemdiagnosen durch. Benutzen Sie dabei winmsd.exe.

Führen Sie zum Einstieg in die Materie einige Systemdiagnosen durch. Benutzen Sie dabei winmsd.exe. Aufgabe 1.1: Systeminformationen Führen Sie zum Einstieg in die Materie einige Systemdiagnosen durch. Benutzen Sie dabei winmsd.exe. a) Wie lautet der Name des von Ihnen verwendeten Rechners? Der Systemname

Mehr

Bedienungsanleitung für BackupMotion

Bedienungsanleitung für BackupMotion Bedienungsanleitung für BackupMotion In den folgenden Punkten wird die Bedienung von BackupMotion Schritt für Schritt erklärt. (gilt für Home und Pro Version des Produktes) 1 S e i t e Inhaltsverzeichnis

Mehr

5.2 Neue Projekte erstellen

5.2 Neue Projekte erstellen 5.2 Neue Projekte erstellen Das Bearbeiten von bestehenden Projekten und Objekten ist ja nicht schlecht wie aber können Sie neue Objekte hinzufügen oder gar völlig neue Projekte erstellen? Die Antwort

Mehr