Beruflich Dokumente
Kultur Dokumente
i=1
T
i
T
i
= Ausfhrungszeit der i-ten Rechenphase.
57
Schlichter, TU Mnchen 4.3. PROZESSORVERWALTUNG
S
i
= Schtzung fr die i-te Rechenphase.
S
1
= Schtzung fr die erste Rechenphase.
Anpassung der Berechnung
S
n+1
= (1/n) * T
n
+ (n-1)/n * S
n
4.3.3 Thread Scheduling
Die Prozessorzuteilung von Threads hngt von deren Art der Realisierung ab.
User-Threads
Realisierung der Threads im Benutzeradressraum Kern hat keine Kenntnis
bzgl. der Threads. BS-Scheduler whlt nur Prozess aus. Laufzeitsystem des
Prozesses whlt rechenwilligen Thread des Prozesses aus; es kann ein beliebiges
Scheduling-Verfahren (siehe Seite 54) fr Prozesse verwendet werden.
Java Virtual Machines verwenden unterbrechendes Prioritten-Scheduling fr
Threads;
10 ist die hchste und 1 die niedrigste Prioritt;
Kernel-Threads
Realisierung der Threads im Systemadressraum BS-Scheduler whlt den
nchsten auszufhrenden Thread aus.
a) Ist ausgewhlter Thread demselben Prozess zugeordnet wie der vorher
rechnende Thread geringer Kontextwechsel.
b) Ist ausgewhlter Thread nicht demselben Prozess zugeordnet wie der
vorher rechnende Thread aufwendiger Kontextwechsel.
4.3.4 Mehrschichtiges Scheduling
Der Scheduler whlt einen der rechenwilligen Prozesse aus. Da diese aber u.U.
nicht alle im Arbeitsspeicher vorliegen (Speicherknappheit) und ein Einlagern
eines Prozesses von der Platte in den Arbeitsspeicher aufwendig ist, verfgen
Systeme hug ber ein Mehr-Schichten Scheduling.
58
Schlichter, TU Mnchen 4.3. PROZESSORVERWALTUNG
Short-Term-Scheduler (CPU Scheduler)
Auswahl eines geeigneten Prozesses aus der Ready-Queue; wird hug
aufgerufen; Verfahren siehe oben.
Long-Term-Scheduler
Auswahl rechenwilliger neuer Auftrge (meist Jobs aus dem Hintergrundbe-
trieb (batch)) und Einlagerung in den Arbeitsspeicher; Einfgen der Prozesse
in die Ready-Queue.
Graphische Darstellung
Long-term
Scheduler
neue
Auftrge
swap-in
CPU Scheduler
E/A-Warteschlange
Zeit-Interrupt-
Warteschlange
CPU
fertig
E/A-Befehl
Zeitscheibe
abgelaufen
sleep-Befehl
Systemaufruf
Ready Queue
ausgeswappte
Prozesse
swap-out
Ausfhrung im
BS-Kern
59
Schlichter, TU Mnchen 4.3. PROZESSORVERWALTUNG
4.3.5 Echtzeit Scheduling
In Multimedia-Umgebungen treten die zu verarbeitenden kontinuierlichen Daten
(Empfangen, Dekodierenen und Anzeigen von Videoframes) in bestimmten, meist
periodischen Zeitabstnden auf. Die Operationen auf diese Daten wiederholen
sich dabei immer wieder und sollen bis zu einem gewissen Zeitpunkt abgeschlos-
sen sein. Prozesse in Multimedia-Anwendungen fhren oft zeitkritische Operatio-
nen aus. Bzgl. des Scheduling existieren zwei gegenstzliche Ziele:
a) ein unkritischer Prozess sollte nicht dauerhaft blockiert werden, weil
zeitkritische Prozesse eine Ressource gnzlich auslasten.
b) zeitkritische Prozesse drfen nicht durch Scheduling-Verfahren (Round-
Robin oder Prioritten) am zeitkritischen Fortschritt gehindert werden
Einhaltung von Zeitvorgaben.
Zuordnung von Kenngren zu zeitkritischen Prozessen
Bereitzeit (ready time): frhestmglicher Ausfhrungsbeginn einer
Aktivitt.
Frist (deadline): sptester Zeitpunkt fr die Beendigung einer Aktivitt.
Ausfhrungszeit: worst-case Abschtzung fr das zur vollstndigen
Ausfhrung einer Aktivitt notwendige Zeitintervall.
Earliest Deadline First (EDF)
Der Prozessor wird immer dem Prozess mit der am nchsten in der
Zukunft liegenden Frist zugeordnet. Es existieren die beiden Varianten: nicht-
unterbrechend und unterbrechend.
nicht-unterbrechend
Eine Prozessorzuordnung bleibt bis der Prozess eine blockierende System-
funktion aufruft oder freiwillig die CPU abgibt. Neue eintreffende Prozesse
mit krzeren Fristen werden erst beim nchsten Scheduling bercksichtigt.
unterbrechend
Diese Variante fhrt einen Kontextwechsel durch, wenn ein Prozess mit einer
krzeren Frist rechenwillig wird.
Rate-Monotonic Scheduling
Rate-Monotonic Scheduling (RMS) ist fr periodische Prozesse; RMS ordnet
Prioritten in Abhngigkeit von der Periode zu.
1) Prozesse mit der hchsten Frequenz (kleinste Periode) erhalten die
hchste Prioritt.
2) Prozesse mit der geringsten Frequenz (lngste Periode) erhalten die
niedrigste Prioritt.
60
Schlichter, TU Mnchen 4.4. UNTERBRECHUNGSKONZEPT
Auswahl der Prozesse anhand ihrer Prioritt.
hochfrequente Prozesse werden minimal verzgert.
Zerstckelung niederfrequenter Prozesse, da sie hug wegen hochfrequen-
ter Prozesse unterbrochen werden.
4.4 Unterbrechungskonzept
Die optimale Ausnutzung und Auslastung aller Gerte eines Rechensystems legt
Mehrprogrammbetrieb nahe. Zerlegung der Ausfhrungsphasen eines Programms
in viele Einzelteile;
- Aufbrechen der Ausfhrung eines Prozesses in mehrere Phasen: u.a.
Rechnen, E/A, Synchronisieren mit Partner.
- Die Ausfhrung der Programme wird in der Regel mehrfach unterbrochen.
4.4.1 Motivation
Ursachen fr Unterbrechungen
zugeteilte Prozessorzeit ist aufgebraucht;
bentigte Ressourcen stehen aktuell nicht zur Verfgung;
ein E/A-Gert meldet sich zurck;
ein Fehler tritt auf, z.B. Division durch 0;
Systemaufruf (wurde bereits als spezielle Unterbrechung eingefhrt);
Bei einer Unterbrechung wird ein gerade aktiver Prozess unterbrochen
und eine Unterbrechungsbehandlung durchgefhrt. Nach Beendigung der
Unterbrechungsbehandlung kann prinzipiell ein beliebiger rechenbereiter
Prozess fortgesetzt werden.
Es ist erforderlich, bei der Unterbrechung den CPU Status des gerade aktiven
Prozesses fr die sptere Fortsetzung zu speichern.
Forderung: Eine Unterbrechung muss so kontrolliert erfolgen, dass ein
denierter Prozessstatus festgehalten werden kann.
4.4.2 Unterbrechungsarten
Die normale Programmausfhrung eines Prozessors kann auch durch mehrere
Arten von Unterbrechungen verndert werden. Man unterscheidet zwischen
synchronen und asynchronen Unterbrechungen.
61
Schlichter, TU Mnchen 4.4. UNTERBRECHUNGSKONZEPT
Unterbrechung
synchron asynchron
Trap
Alarme
(Exception)
Interrupt
Externe, asynchrone Unterbrechungen
Dies sind Unterbrechungen (Interrupts), die von auerhalb des zu unterbrechen-
den Prozesses ausgelst werden, z.B. E/A-Kanal-"Endmeldung".
Der Ablauf im Rechnerkern (RK) wird unterbrochen und eine Unterbrechungs-
anfangsbehandlung des Betriebsystemkerns wird aktiviert.
E/A-Kanal 2 CPU (RK) BS-Kern
Ende E/A
Auftrag
Unterbrechungs-
behandlung (UBH)
Interne, synchrone Unterbrechungen
Dies sind Unterbrechungen (Alarme, Exceptions), die durch den zu unterbrechen-
den Prozess selbst ausgelst werden, z.B. Division durch 0.
62
Schlichter, TU Mnchen 4.4. UNTERBRECHUNGSKONZEPT
Der Ablauf im RK wird unterbrochen und eine Unterbrechungsanfangsbehand-
lung des Systemkerns wird aktiv.
CPU (RK) BS-Kern
Unterbrechungs-
behandlung (UBH)
Unterbrechung
arithmetischer Alarm
Beispiele von internen Unterbrechungen
Speicherschutzalarm: Prozess greift auf Speicherbereich zu, der nicht
vorhanden ist oder auf den er nicht zugreifen darf.
Befehlsalarm: dem Operationscode des Maschinenbefehls ist keine Opera-
tion zugeordnet.
Seitefehltalarm: Seite der virtuellen Adresse ist nicht im Arbeitsspeicher.
arithm. Alarm: arithm. Operation kann nicht ausgefhrt werden, z.B.
Division durch 0.
Systemaufruf: kontrollierter bergang in das Betriebssystem.
4.4.3 Behandlung externer Unterbrechungen
Synchrone und asynchrone Unterbrechungen haben hardwaremig die Speiche-
rung des aktuellen Prozessorzustandes zur Folge und lsen im Anschluss daran
einen indirekten Sprung ber eine im Speicher bendliche Sprungtabelle aus. Da-
bei ordnet der Prozessor jeder synchronen und asynchronen Unterbrechung einen
festen Index in der Sprungtabelle zu. An dieser Stelle steht die Anfangsadresse
der Unterbrechungsroutine, die entsprechende Folgemanahmen einleitet. Falls
mglich (Ausnahme ist z.B. ein arithmetischer Alarm) kann die unterbrochene
Programmausfhrung durch die Wiederherstellung des gespeicherten Prozessor-
zustandes zu einem beliebigen, spteren Zeitpunkt fortgesetzt werden.
63
Schlichter, TU Mnchen 4.4. UNTERBRECHUNGSKONZEPT
Ablauf
Gerte-Controller meldet Unterbrechung ber spezielle Interrupt-Leitung an
CPU.
CPU prft im Befehlszyklus nach jeder Befehlsausfhrung, ob eine Unterbre-
chung gemeldet wurde.
Falls Unterbrechung vorliegt: sichern u.a. des aktuellen Befehlszhlers, des
Programmstatusworts und Sprung zu einer Unterbrechunganfangsbehandlung,
die an festgelegter Speicheradresse steht.
Routine untersucht Unterbrechungsursache, die vom Controller ber
Datenleitung gemeldet wird (Unterbrechungsnummer).
ber Unterbrechungsnummer erfolgt die Auswahl der bentigten Unter-
brechungsbehandlungsroutine; Nummer ist i.a. Index in eine Tabelle, dem
Unterbrechungsvektor.
Vektor enthlt Speicheradresse der Unterbrechungsbehandlungsroutine.
4.4.4 Konikte
Konikte bei Unterbrechungen treten z.B. in folgenden Situationen auf:
(1) whrend einer Unterbrechungsbehandlung treten weitere Unterbrechun-
gen auf;
(2) es treffen gleichzeitig mehrere Unterbrechungswnsche ein.
Beispiel
E/A-Kanal 1 und E/A-Kanal 2 erledigen beide Auftrge fr Prozess A.
64
Schlichter, TU Mnchen 4.4. UNTERBRECHUNGSKONZEPT
Unterbrechungs-
behandlung (UBH)
E/A-Kanal 1 Prozess A BS-Kern E/A-Kanal 2
Ende E/A
Auftrag
externe
Unterbrechung
externe
Unterbrechung
Ende E/A
Auftrag
Konflikt
Mgliche Koniktlsungen
Andere Unterbrechungen nicht zulassen, d.h. Maskierung von Unterbrechun-
gen; anstehende Unterbrechung ignorieren oder vorlug zurckstellen; Pro-
blem: u.a. Rechtzeitigkeit der Unterbrechungsbehandlung.
Interne Unterbrechungen erfolgen stets sofort und geben der zugehrigen
Unterbrechungsbehandlung dieselbe Prioritt, wie sie der unterbrochene
Ablauf hatte.
Externe Unterbrechungen erhalten Prioritten z.B. (0,...,31) zugeordnet. Die
aufgerufene Unterbrechungsbehandlung erhlt die Prioritt (Ablaufprioritt)
der auslsenden Unterbrechung.
Eine weitere externe Unterbrechung wird whrend einer Unterbre-
chungsbehandlung zugelassen, wenn die Prioritt der neuen Unterbre-
chung hher als die Ablaufprioritt der gerade aktiven Unterbrechungs-
behandlung ist. Trifft dieser Fall nicht zu, so wird der Unterbrechungs-
wunsch zurckgestellt, bis ein Ablauf mit einer niedrigeren Ablaufprio-
ritt aktiv wird.
Integration der Unterbrechungsbehandlung in den Befehlszyklus der CPU
65
Schlichter, TU Mnchen 4.4. UNTERBRECHUNGSKONZEPT
prfen ob interne Unterbrechung aufgetreten,
falls ja, Behandlung der Unterbrechung
sonst : prfen ob externe Unterbrechung mit hherer Prioritt. Wenn ja
whle eine mit hchster Prioritt.
Bei Unterbrechung: sichere alten Zustand, stelle neuen Zustand her und
fhre ersten Befehl der Unterbrechungsbehandlungsroutine aus.
66
Kapitel 5
Speicherverwaltung
Der Adressraum ist eine zentrale Abstraktion, die von der Systemsoftware eines
Rechensystems zur Verfgung gestellt werden muss. ber den Adressraum sind
alle fr die Ausfhrung eines Anwendungsprogramms notwendigen Operationen
und Datenstrukturen zugreifbar. Allgemein wird ein Adressraum durch eine
zusammenhngende Menge von Adressen und deren Inhalte deniert. Die
maximale Gre eines Adressraums kann aus dem Adressbusaufbau der
verwendeten Prozessorarchitektur abgeleitet werden. Modernde Rechensysteme
unterscheiden zwischen den Adressrumen der Programme und dem physischen
Adressraum (Arbeitsspeicher).
5.1 Fragestellungen
Dieser Abschnitt beschftigt sich mit den Adressrumen fr Programme und
deren Abbildung auf den physischen Arbeitsspeicher einer Rechenanlage:
Programmadressraum vs. Maschinenadressraum.
Direkte Adressierung, Basisadressierung.
Virtualisierung des Speichers; virtuelle Adressierung, insbesondere Seiten-
adressierung (nur sehr kurz).
5.2 Einfhrung
Die unmittelbare Nutzung des physischen Adressraums (Arbeitsspeichers) bei der
Anwendungsentwicklung ist nicht empfehlenswert. Probleme sind folgende:
67
Schlichter, TU Mnchen 5.2. EINFHRUNG
- Kenntnisse ber Struktur und Zusammensetzung des Arbeitsspeichers
notwendig.
- Kapazittsengpsse bei der Arbeitsspeichergre.
deshalb Programmerstellung unabhngig von realer Speichergre und -
eigenschaften.
5.2.1 Adressrume
Maschinenadressraum
Der Arbeitsspeicher besteht aus einer Folge von fortlaufend nummerierten
Bytes. Die Nummerierung beginnt bei 0. Die Nummer des Bytes bezeichnet
man als seine Adresse, genauer als seine physische Speicheradresse oder seine
Maschinenadresse.
Programmadressraum
Wenn ein Benutzer programmiert, dann benutzt er in seinem Programm
Adressen, um seine Variablen zu bezeichnen. Diese Adressen nennen wir
Programmadressen.
Die Menge der zulssigen Programmadressen ist der Programmadressraum.
Dieser ist prozessspezisch, d.h. Programmadressen haben nur Programm-
lokale Bedeutung z.B. als Sprungziele.
Speicherabbildung
Die CPU muss vor jedem Zugriff auf Befehle und Operanden die jeweiligen
Programmadressen in Maschinenadressen umsetzen. Diese Umsetzung wird
durch Speicherabbildungen geleistet. Die wichtigsten dieser Abbildungen
werden in den folgenden Abschnitten kurz vorgestellt.
direkte Adressierung,
Basisadressierung,
Seitenadressierung
5.2.2 Organisation von Adressrumen
Im Adressraum einer Anwendung mssen alle fr die Programmausfhrung not-
wendigen Daten zur Verfgung gestellt werden. Darunter fallen der Programmco-
68
Schlichter, TU Mnchen 5.2. EINFHRUNG
de (Text), der Datenbereich (statische und dynamische Daten) und der Laufzeit-
keller. Fr jede dieser Informationsarten wird ein Bereich im Adressraum spezi-
ziert, deren Platzierung und Gre durch die Adressraumverwaltung festgelegt
wird.
Single-Threaded Adressraum
Programm
statische
Daten
dynamische Daten
(Halde)
Keller
niedrige
Adresse
hohe
Adresse
Multi-Threaded Adressraum
Programm
statische
Daten
dynamische Daten
(Halde)
niedrige
Adresse
hohe
Adresse
Keller n Keller 1
Fr jeden Kontrolluss (Thread) wird ein eigener Kellerbereich vorgesehen.
Der Abstand zwischen den einzelnen Kellern wird meist standardmig vom
System vorgegeben. Unabhngig von der Anzahl der Laufzeitkeller muss eine
berschneidung zwischen mehreren Kellern oder zwischen dem untersten
Keller und der Halde vermieden werden.
Beispiel - Adressrume
Moderne Betriebssysteme stellen wenigstens 32 Bit groe virtuelle Adressru-
me fr die Anwendungen zur Verfgung, die jeweils in mehrere Bereiche un-
terteilt sind. Programmcode, statische Daten, Halde und Laufzeitkeller der An-
wendung werden jeweils in dem Bereich des Adressraums abgelegt, der der
Anwendung zugnglich ist.
69
Schlichter, TU Mnchen 5.2. EINFHRUNG
Windows 32 bit Adressierung
0 4 GByte 3 GByte 2 GByte 1 GByte
Linux 32 bit Adressierung
spezieller Adressbereich (Gre nicht proportional)
5.2.3 Fragmentierung
Unter dem Begriff Fragmentierung versteht man verschiedene Formen der
Zerstckelung des noch freien und nutzbaren Teils des Adressraums in kleine
Bereiche. Unterscheidung zwischen externer und interner Fragmentierung.
Externe Fragmentierung
Es wechseln sich benutzte und unbenutzte Speicherbereiche innerhalb des
Adressraums ab. Speicheranforderungen werden jeweils genau erfllt.
70
Schlichter, TU Mnchen 5.2. EINFHRUNG
belegt belegt belegt
Anforderung
belegt belegt belegt belegt
freie Speicherbereiche
Interne Fragmentierung
Der Speicher ist in Bereiche fester Gre untergliedert und Speicheranforde-
rungen werden nur in Vielfachen dieser festen Grundgre befriedigt.
Anforderung
freier Speicherbereich
71
Schlichter, TU Mnchen 5.3. SPEICHERABBILDUNGEN
5.2.4 Forderungen an Adressraumrealisierung
Aus der Sicht der Anwendungsprogrammierung knnen fr einen Adressraum
eine Reihe wichtiger Forderungen an dessen Realisierung gestellt werden.
Hier geht es um den Programmieradressraum fr Prozesse, und nicht um den
Maschinenadressraum (Arbeitsspeicher).
Homogene und zusammenhngende Adressbereiche.
Gre des genutzten Adressraums unabhngig von der Kapazitt des
physischen Adressraums (Arbeitsspeichers).
Erkennen fehlerhafter Zugriffe.
Erkennen von berschneidungen zwischen Halde und Keller sowie zwischen
mehreren Laufzeitkellern.
Schutz funktionstchtiger Anwendungen gegenber fehlerhaften Anwendun-
gen. Hier geht es darum, dass die Adressbereiche der Anwendungen und auch
des Betriebssystems voneinander abgeschottet werden. Ist dieser Schutz nicht
gewhrleistet, knnen fehlerhafte Programme den Adressraum einer anderen
Anwendung verndern und damit Folgefehler in dieser auslsen nicht de-
terministische Fehler. Fehler dieser Art sind schwer zu reproduzieren und ihre
Lokalisierung ist meist extrem schwierig und langwierig.
Kontrollierbares und kontrolliertes Aufteilen der Speicherressourcen auf alle
Anwendungen.
Speicherkonomie, minimale Fragmentierung.
5.3 Speicherabbildungen
Dieser Abschnitt behandelt einige Mechanismen zur Abbildung von Programm-
adressen auf Maschinenadressen des Arbeitsspeichers.
5.3.1 Direkte Adressierung
Bei der direkten Adressierung werden die Programmadressen direkt als
Maschinenadressen interpretiert. Es treten drei Probleme auf:
Verschiebbarkeit,
Programmgre,
Speicherausnutzung.
72
Schlichter, TU Mnchen 5.3. SPEICHERABBILDUNGEN
Verschiebbarkeit
In einem Mehrprozesssystem sind i.d.R. mehrere Programme im Arbeitsspeicher.
Bei direkter Adressierung werden die Programme beim Laden xiert und mssen
dann bis zu ihrem Ende an derselben Stelle bleiben.
Problem
Externe Fragmentierung des Arbeitsspeichers. Sei der Arbeitsspeicher zunchst
lckenlos mit Programmen P1, P2, P3 gefllt.
P1 P2 P3
Nach Beendigung des Programms P2 entsteht eine Lcke.
Forderung
In Mehrprogramme/Mehrprozesssystemen sollten daher Programme verschieb-
bar sein.
Programmgre
Programme knnen wesentlich grer als der verfgbare Arbeitsspeicher werden.
Bei direkter Adressierung muss der Benutzer sein Programm selbst in Segmente
zerlegen und diese nach Bedarf selbst nachladen. Man spricht von der
sogenannten Overlay-Technik (veraltet).
Forderung
Die Programmgre sollte unabhngig von der realen Arbeitsspeichergre ist.
Speicherausnutzung
Programme bestehen aus Modulen, die nur zu bestimmten Zeiten verwendet
werden. Beispielsweise wird bei einer Matrizenmultiplikation nur auf die Module,
die das Multiplikationsprogramm und auf die Module, die die Daten enthalten,
zugegriffen. Es ist nun wnschenswert, von einem Programm nur den Ausschnitt
im Arbeitsspeicher zu halten, der momentan und in naher Zukunft bentigt wird.
Damit lassen sich mehr Programme im Arbeitsspeicher unterbringen und parallel
verarbeiten. Dies steigert den Datendurchsatz des Systems.
73
Schlichter, TU Mnchen 5.3. SPEICHERABBILDUNGEN
Forderung
Arbeitsspeicher beinhaltet nur die momentan bzw. in naher Zukunft notwen-
digen Ausschnitte des Programms. Nutzen der Lokalittseigenschaft von Pro-
grammen:
durch Datenstrukturen z.B. Arrays, oder
Programmstrukturen: Prozeduren, Schleifen.
5.3.2 Basisadressierung
Die Basisadressierung hat eine einfache Abbildungsvorschrift:
Maschinenadresse = Basisadresse + Programmadresse
Die Basisadresse ist programmspezisch.
Die Programmadressen aller Programme beginnen jeweils mit Null. Durch die
Basisadressierung wird das Problem der Verschiebbarkeit gelst. Die anderen
Probleme bestehen jedoch weiterhin.
Der Arbeitsspeicher besteht aus zwei Klassen:
Belegtbereiche: Speicherbereiche sind Programmen zugeordnet. Verwaltung
in Belegtliste.
Freibereiche: Speicherbereiche, die momentan keinem Programm zugeord-
net sind, d.h. frei sind. Verwaltung Freibereichsliste.
Speicherverwaltungsstrategien
Aufgabe: Finden eines zusammenhngenden Arbeitsspeicherbereichs, der gro
genug ist, um das Programm zu speichern.
rst-t
Durchsuche die Liste der Freibereiche vom Anfang an und nimm den ersten
passenden Frei-Bereich: Spalte nicht bentigten Speicher ab und fge ihn als
freien Bereich in die Freibereichsliste ein.
next-t
Durchsuche die Liste der Freibereiche nach rst-t, jedoch beginne die Suche
dort, wo man bei der letzten Suche aufgehrt hat.
74
Schlichter, TU Mnchen 5.3. SPEICHERABBILDUNGEN
best-t
Durchsuche die Liste der Freibereiche vom Anfang an und nimm den
passenden Frei-Bereich, der die Speicheranforderungen des Programms am
besten erfllt: Spalte nicht bentigten Speicher ab und fge ihn als freien
Bereich in die Freibereichsliste ein.
worst-t
Durchsuche die Liste der Freibereiche vom Anfang an und nimm den Frei-
Bereich, der die Speicheranforderungen des Programms am schlechtesten
erfllt: Spalte nicht bentigten Speicher ab und fge ihn als freien Bereich in
die Freibereichsliste ein.
Buddy-Systeme
Speicheranforderungen werden in Gren von Zweierpotenzen vergeben,
d.h. eine Anforderung wird auf die nchste Zweierpotenz aufgerundet
Anforderung 280 Bytes Belegung von 512 Bytes = 2
9
am Anfang besteht der Arbeitsspeicher aus einem groen Stck.
Speicheranforderung von 2
k
: ist Speicherbereich dieser Gre vorhanden,
dann Unterteilung eines Speicherbereichs der Gre 2
k+1
in 2 Speicherbe-
reiche der Gre 2
k
Bytes.
Freigabe eines Speicherbereichs von 2
k
: falls auch entsprechendes
Partnerstck frei ist, dann Verschmelzung der beiden Speicherbereiche zu
einem Speicherstck der Gre 2
k+1
.
5.3.3 Seitenadressierung
Die virtuelle Adressierung wurde Ende der 50er Jahre eingefhrt. Ziel ist
Virtualisierung des Speichers,
Verstecken von realen Beschrnkungen, wie Speichergre,
Speicher als sehr groes Feld gleichartiger Speicherzellen zu betrachten.
Die Seitenadressierung ("paging") ist die Grundform der virtuellen Adressierung.
Ansatz
Der Programmadressraum, der sogenannte virtuelle Adressraum eines Prozesses
wird in aufeinanderfolgende Seiten (engl. page) gleicher Gre unterteilt. Man
spricht deshalb von virtuellen Adressen des Prozesses, anstatt von seinen
Programmadressen.
75
Schlichter, TU Mnchen 5.3. SPEICHERABBILDUNGEN
Der Maschinenadressraum, also der physische Adressraum des Arbeitsspei-
chers, wird in Kacheln (engl. frame) unterteilt. Seiten und Kacheln sind i.d.R.
gleich gro.
Eigenschaften der Seitenadressierung
Die Seiten eines Prozesses knnen im Arbeitsspeicher oder auf dem
Hintergrundspeicher (Platte) gespeichert sein.
Die Kacheln nehmen die Seiten der Prozesse auf.
Wenn whrend der Prozessausfhrung eine virtuelle Adresse des Prozess-
adressraums verwendet wird, so muss die Seite, in der sich die Adresse be-
ndet, in einer Kachel des Arbeitsspeichers geladen (eingelagert) sein.
Die Zuordnung, welche Seite in welcher Kachel gespeichert ist, und wo sich
die Seite auf dem Hintergrundspeicher bendet, erfolgt mittels der Seiten-
Kacheltabelle, die die Seitendeskriptoren enthlt.
Seite nicht im Arbeitsspeicher Seitenfehler Einlagerung der Seite bei
Bedarf ("Demand Paging").
Falls alle Kacheln belegt Auslagern einer Seite gem einer Seitenerset-
zungsstrategie.
Ziel dieser Strategien ist es, eine mglichst gnstige Seite auszuwhlen, und
diese auf den Hintergrundspeicher auszulagern. Mgliche Strategien:
FIFO (rst-in rst-out): Verdrngen der ltesten Seite, einfach zu
implementieren.
LRU (Least recently used): Verdrngen der am lngsten nicht genutzten
Seite; wird am hugsten realisiert, wobei LRU approximiert wird, da eine
exakte Realisierung zu aufwendig ist.
virtueller Speicher - Arbeitsspeicher
Der Zusammenhang zwischen dem virtuellen Speicher, hier den virtuellen
Adressrumen der Prozesse, und dem Arbeitsspeicher sowie Hintergrundspei-
chermedien wird nachfolgend kurz skizziert. Wir gehen hier vereinfachend da-
von aus, dass auch die Blcke als Einheiten des Hintergrundspeichers die Gre
einer Seite besitzen.
76
Schlichter, TU Mnchen 5.3. SPEICHERABBILDUNGEN
Seite 1 von
P1
Seite 2 von
P1
.....
virt. Adressraum von P1
Seite 1 von
P2
Seite 2 von
P2
.....
virt. Adressraum von P2
...
...
...
...
...
...
...
...
Deskriptor
Seiten-Kachel
Tabelle
Kachel 1
Kachel 2
Kachel 3
Kachel 4
Kachel 5
...
Arbeitsspeicher
mit Kacheln
Hintergrundspeicher
mit Blcken
Auslagern
Einlagern
Vorteile
Bei der Seitenadressierung werden durch eine exible Speicherabbildung alle
Probleme der direkten Adressierung (siehe Seite 72) gelst. D.h. die
Programme knnen:
verschoben werden,
grer als der Arbeitsspeicher sein,
auch ausschnittsweise im Arbeitsspeicher sein.
Zustzliche positive Eigenschaften
Es knnen gemeinsame Speicherbereiche zwischen Prozessen realisiert
werden.
Es ist ein differenzierter Zugriffsschutz innerhalb eines Prozesses mglich.
77
Kapitel 6
Prozesskommunikation
Disjunkte Prozesse, d.h. Prozesse, die vllig isoliert voneinander ablaufen, stellen
eher die Ausnahme dar. Hug nden Wechselwirkungen zwischen den Prozessen
statt Prozesse interagieren. Die Untersttzung der Prozessinteraktion stellt
einen unverzichtbaren Dienst dar.
6.1 Fragestellungen
Dieser Abschnitt beschftigt sich mit den Mechanismen von Rechensystemen
zum Austausch von Informationen zwischen Prozessen.
Kommunikationsarten.
nachrichtenbasierte Kommunikation, insbesondere Client-Server-Modell.
Netzwerkprogrammierung auf der Basis von Ports und Sockets.
6.2 Einfhrung
Prozessinteraktion kann Rechner-lokal und Rechner-bergreifend stattnden.
Prozesse knnen auf vielfltige Weise Informationen austauschen.
6.2.1 Kommunikationsarten
78
Schlichter, TU Mnchen 6.2. EINFHRUNG
Prozesskommunikation
breitbandig schmalbandig
Ereignisse
Alarme
Signale
implizit
explizit
asnychron
explizit
snychron
1 : 1
n : 1
1 : m
n : m
1 : 1
1 : m
n : m
Strme
RPC
RMI
Die Bandbreite des Kommunikationskanals bestimmt die Datenrate, in der Daten
zwischen Prozessen ausgetauscht werden knnen.
Schmalbandige Kanle
Schmalbandige Kanle werden im Betriebssystem zum Melden von Ereignissen
oder fr die Synchronisation untersttzt. bertragung von wenigen Bits an
Information, z.B. Setzen von Flags
Dienste des Betriebssystems
Melden von Ereignissen,
Warten auf Ereignisse,
Ereignisverwaltung.
Beim Ablauf von Prozessen knnen Alarme entstehen (z.B. arithmetische
Alarme).
Die Alarme werden ber Namen identiziert, die im BS vereinbart sind. Das
BS stellt Dienste zur Zustellung von Alarmen zur Verfgung.
Implizite Kommunikation
Implizite Kommunikation ist eine breitbandige Kommunikationsform. Die
Kommunikation erfolgt ber einen gemeinsamen Speicher (Dateien, Register,
Datenstrukturen).
79
Schlichter, TU Mnchen 6.2. EINFHRUNG
Die Kommunikation ndet ohne direkte Untersttzung und ohne Kenntnis des
BS statt.
Vorteil: einfach und schnell (kein Kopieren zwischen Adressrumen).
Nachteil:
a) gemeinsame Bereiche sind nicht immer vorhanden: z.B. in physisch
verteilten, vernetzten Systemen gibt es i.d.R. keinen gemeinsamen
Speicher.
b) gegebenenfalls aufwendiges busy waiting Mischform: Ereigniszustel-
lung, d.h. schmalbandige Kommunikation, die das Vorhandensein von Da-
ten signalisiert.
Implizite Kommunikationsformen
Verschiedene Formen der impliziten Kommunikation
1:1 ein Puffer pro Sender/Empfnger-Paar
n:1 n Sender senden Nachrichten an einen Empfnger, z.B.
Sender: Prozesse senden Druckauftrge
Empfnger: Drucker-Server
1:m Mitteilung an alle Prozesse (Broadcast, Multicast);
Broadcast: z.B. Erfragen, wo ein spezieller Dienst angeboten wird;
Shutdown Message an alle Rechner.
Multicast: z.B. Nachricht an Gruppe gleichartiger Server.
n:m n Erzeuger schreiben in Puffer und m Verbraucher lesen aus Puffer.
80
Schlichter, TU Mnchen 6.2. EINFHRUNG
prozess-
spezifischer
oder
zentraler
Puffer
S1
E1
1:1 Kommunikation
Si i-ter Senderprozess
Ei i-ter Empfngerprozess
prozess-
spezifischer
oder
zentraler
Puffer
S1
E1
n:1 Kommunikation
Sn
Briefkasten
(mail box)
S1
n:m Kommunikation
Sn
E1 Em
Explizite Kommunikation
Diese Kommunikationsart wird realisiert durch den Austausch von Nachrichten
("message passing") nachrichtenbasierte Kommunikation. Die Nachrichten-
kommunikation ist immer dann die geeignete Kommunikationsform, wenn die
beteiligten Prozesse in disjunkten Adressrumen liegen, und damit keine Mg-
lichkeit haben, auf einen gemeinsamen Speicher zuzugreifen.
Betriebssystem enthlt einen Nachrichtendienst ND (das Kommunikationssy-
stem), der den Austausch der Nachrichten zwischen Prozessen realisiert. ND
untersttzt 2 Systemdienste:
send (E: process, m: message)
receive (S: process, m: message)
Mittels send wird eine Nachricht m fr den Empfnger E an den
Nachrichtendienst ND bergeben. Mit receive entnimmt ein Empfnger E die
Nachricht m, die vom Sender S gesandt wurde, von ND. Der Absender wird
gewhnlich in der Nachricht m codiert.
prinzipieller Ablauf
81
Schlichter, TU Mnchen 6.3. NACHRICHTENBASIERTE KOMMUNIKATION
Sende
prozess S
Nachrichten
dienst ND
Empfnger
prozess E
Nachricht m Nachricht m
send receive
Falls die Prozesse auf unterschiedlichen Rechnern sind, sind die Nachrichten-
dienste der beteiligten Betriebssysteme involviert. In diesem Fall ndet eine
Kommunikation zwischen den beiden Nachrichtendiensten statt.
Aufbau einer Nachricht
Eine Nachricht besteht aus 2 grundlegenden Komponenten:
Nachrichtenkopf: Verkehrsinformation, z.B. Sender- und
Empfngeridentikation
Nachrichteninhalt: Nutzlast (payload)
explizite Kommunikation ist besonders geeignet in verteilten, vernetzten
Systemen.
6.3 Nachrichtenbasierte Kommunikation
Bei nachrichtenbasierter Prozessinteraktion tauschen Prozesse gezielt Informatio-
nen durch Verschicken und Empfangen von Nachrichten aus; ein Kommunikati-
onssystem untersttzt an der Schnittstelle wenigstens die Funktionen send und
receive. Nachrichtenkommunikation ist die natrliche Form der Prozessinterak-
tion in Rechnernetzen. Prozesse, die auf verschiedenen Rechnerknoten platziert
sind, mssen ein physisches bertragungssystem benutzen, um miteinander in
Kontakt zu treten.
6.3.1 Elementare Kommunikationsmodelle
Klassikationsschema fr die Nachrichtenkommunikation anhand von 2 Dimen-
sionen:
generelles Muster der Nachrichtenkommunikation.
zeitliche Kopplung der beteiligten Prozesse.
Klassikationsschema
Elementare Kommunikationsmuster sind Meldung ("signal") und Auftrag
("request").
82
Schlichter, TU Mnchen 6.3. NACHRICHTENBASIERTE KOMMUNIKATION
Meldung: Einweg Nachricht vom Sender zum Empfnger (unidirektional).
Auftrag: Zweiweg Nachricht zwischen Sender und Empfnger (bidirektio-
nal). Sie beginnt mit dem Versenden eines Auftrags an den Empfnger und
endet mit der bergabe einer Erfolgsbesttigung ber den durchgefhrten
Auftrag an den Sender.
Synchronitt deniert den Kopplungsgrad zwischen Prozessen bei der
Durchfhrung einer Nachrichtentransaktion:
asynchron: Entkopplung des Senders und Empfngers.
synchron: beide Prozesse werden zur Nachrichtenbertragung
synchronisiert.
Meldung
Asynchrone Meldung
Sender wird lediglich bis zur Ablieferung der Meldung an das Nachrichtensy-
stem (Kommunikationssystem) blockiert.
83
Schlichter, TU Mnchen 6.3. NACHRICHTENBASIERTE KOMMUNIKATION
Sender S Nachrichtendienst ND Empfnger E
Zeit
send
receive
Meldung
Nachrichtendienst des Betriebssystems puffert Nachricht;
Sender S kann seine Ausfhrung fortsetzen, sobald Nachricht N in den
Nachrichtenpuffer des ND eingetragen ist.
S wartet nicht, bis E die Nachricht empfangen hat.
Empfnger E zeigt durch receive an, dass er am Empfang der Nachricht N
interessiert ist.
Empfnger wird blockiert, bis Sender Nachricht bereit stellt.
Synchrone Meldung
Sender und Empfnger von Meldungen sind zeitlich gekoppelt.
Sender S Nachrichtendienst ND Empfnger E
Zeit
send
receive
Meldung
Quittung
84
Schlichter, TU Mnchen 6.3. NACHRICHTENBASIERTE KOMMUNIKATION
ber die Ablieferung der Nachricht wird der Sender durch eine Quittungsnach-
richt informiert, die zur Aufhebung der Blockade des Senders fhrt.
Rendezvous-Technik: Sender und Empfnger stellen vor Austausch der
eigentlichen Meldung die Sende- und Empfangsbereitschaft her.
Auftrag
Synchroner Auftrag
Bearbeitung der Nachricht durch Empfnger und Senden der Resultatnachricht
sind Teil der Nachrichtentransaktion.
Sender S Nachrichtendienst ND Empfnger E
Zeit
send
receive
Auftrag
Resultat
Auftrags
bearbeitung
reply
Synchrone Auftrge schrnken die Parallelarbeit zwischen Sender und Emp-
fnger noch strker ein als synchrone Meldungen, da die zeitliche Kopplung
auch die Bearbeitung der Nachricht umfasst. Diese Kommunikationsform wird
gerade im Zusammenhang mit dem Client-Server Modell sehr oft verwendet.
Asynchroner Auftrag
Auftrag und Resultat werden als Paar unabhngiger Meldungen verschickt.
85
Schlichter, TU Mnchen 6.3. NACHRICHTENBASIERTE KOMMUNIKATION
Sender S Nachrichtendienst ND Empfnger E
Zeit
send
receive
Auftrag
Resultat
Auftrags
bearbeitung
reply receive
result
Vorteile/Nachteile asynchrones Senden
Vorteile asynchrones Senden
ntzlich fr Realzeitanwendungen.
ermglicht parallele Abarbeitung durch Sender und Empfnger.
anwendbar zum Signalisieren von Ereignissen.
Nachteile asynchrones Senden
Verwaltung des Nachrichtenpuffers durch BS erforderlich.
Benachrichtigung des Senders S im Fehlerfall und Behandlung von Fehlern
ist problematisch.
Entwurf und Nachweis der Korrektheit des Systems ist schwierig.
6.3.2 Erzeuger-Verbraucher Problem
Auf der Basis der nachrichtenbasierten Kommunikation wird das Erzeuger-
Verbraucher Problem mit Hilfe von send und receive Operationen realisiert.
86
Schlichter, TU Mnchen 6.3. NACHRICHTENBASIERTE KOMMUNIKATION
Erzeuger S:
while (true) {
produziere Dateneinheit;
send (E, Dateneinheit);
}
Verbraucher E:
while (true) {
receive (S, Dateneinheit);
verbrauche Dateneinheit;
}
Es existiert kein gemeinsamer Speicherbereich, der bzgl. der Zugriffe von
Erzeuger und Verbraucher synchroniert werden muss. Die Synchronisation von
Erzeuger und Verbraucher erfolgt durch das Kommunikationssystem selbst.
6.3.3 Modellierung durch ein Petrinetz
Petri-Netze dienen hug zur Modellierung von Kommunikationsablufen,
sogenannten Kommunikationsprotokollen. Sie ermglichen die Analyse der
Protokolle, z.B. Erkennung von Verklemmungen. Modellierung einer synchronen
Kommunikation:
Prozess 1
Sendebereit
send
message
receive
message
buffer full
Prozess 2 wait
for
ack.
message
received
buffer full
receive
ack.
send
ack.
ack. received ack. sent
87
Schlichter, TU Mnchen 6.3. NACHRICHTENBASIERTE KOMMUNIKATION
Problem: unendliches Warten
Pragmatische Lsung mit Hilfe von Timeouts
Sender bzw. Empfnger warten nur eine festgelegte Zeit, Sender: falls kein
Acknowledgement (Quittung) eintrifft, z.B. erneutes Senden.
Probleme dabei? u.a. Duplikate mssen vom Empfnger erkannt werden;
gesendete Nachrichten kommen zu spt an, sind veraltet etc.
6.3.4 Ports
Bisher bestand zwischen Sender und Empfnger eine feste Beziehung, die ber
Prozessidentikatoren (z.B. Namen oder Nummer) hergestellt wurde. Nachteile
Prozessnummern ndern sich mit jedem Neustart.
Prozessnamen sind nicht eindeutig, z.B. falls Programm mehrmals gestartet
wurde.
Deshalb Senden von Nachrichten an Ports. Sie stellen Endpunkte einer
Kommunikation dar. Sie knnen bei Bedarf dynamisch eingerichtet und gelscht
werden. Dazu existieren folgende Funktionen:
portID = createPort();
deletePort(portID);
send(E.portID, message);
receive(portID, message);
ein Port ist mit dem Adressraum des zugehrigen Prozesses verbunden.
der Empfngerprozess kann sender-spezische Ports einrichten.
ein Rechner mit einer IP-Adresse untersttzt mehrere tausend Ports.
der Name des Ports ist fr einen Rechner eindeutig.
die Portnummern 1 - 1023 sind fest reserviert fr bestimmte Protokolle (bzw.
deren Applikationen).
bersicht: fest zugeordnete Ports
88
Schlichter, TU Mnchen 6.3. NACHRICHTENBASIERTE KOMMUNIKATION
Protokoll Port Beschreibung
FTP 21 Kommandos fr Dateitransfer (get, put)
Telnet 23 interaktive Terminal-Sitzung mit entfern-
tem Rechner
SMTP 25 Senden von Email zwischen Rechnern
time 37 Time-Server liefert aktuelle Zeit
nger 79 liefert Informationen ber einen Benutzer
HTTP 80 Protokoll des World Wide Web
POP3 110 Zugang zu Email durch einen sporadisch
verbundenen Client
RMI 1099 Zugang zum Registrieren von entfernten
Java Objekten.
6.3.5 Kanle
Bisher wurde von einer verbindungslosen Kommunikation ausgegangen, d.h. eine
Nachricht kann an einen Port geschickt werden. Bei einer verbindungsorientierten
Kommunikation muss zuerst eine logische Verbindung zwischen den Kommuni-
kationspartner eingerichtet werden Kanal ("socket").
Einrichtung eines Kanals zwischen Ports, d.h. Verknpfen zweier Ports.
bidirektionale bertragung ber Kanle.
Die Sende- bzw. Empfangsoperation bezieht sich auf die lokale PortID;
send(local portID, message);
receive(local portID, message);
TCP/IP untersttzt verbindungsorientierte Kommunikation.
6.3.6 Strme
Strme (engl. streams) sind eine Abstraktion von Kanlen. Sie verdecken die
tatschlichen Nachrichtengrenzen. Ein Sender schickt mittels send-Operationen
Nachrichten an den Empfnger. Die Nachrichten werden jedoch logisch zu
einem Bytestrom vereinigt, dem man auf Empfangsseite die Nachrichtengrenzen
nicht mehr entnehmen kann. Der Empfnger kann den Bytestrom in Portionen
verarbeiten, ohne sich an den ursprnglichen Nachrichtengrenzen zu orientieren.
89
Schlichter, TU Mnchen 6.4. CLIENT-SERVER-MODELL
Sender
Empfnger
Strom
1 Byte
send (120 Bytes)
send (74 Bytes)
send (233 Bytes)
receive (50 Bytes)
receive (377 Bytes)
BS-Dienste: Verbindungsauf- und -abbau, schreiben in Strom, lesen aus Strom.
Dienste fr Dateizugriffe oder Zugriffe auf Gerte: spezielle Ausprgung der
stromorientierten Kommunikation.
I/O in Java basiert auf Strme.
Klasse java.io.OutputStream zum Schreiben von Daten
Klasse java.io.InputStream zum Lesen von Daten
Spezialisierungen z.B. durch FileOutputStream, BufferedOutputStream oder
FileInputStream.
6.4 Client-Server-Modell
Client-Server Modell basiert i.a. auf der Kommunikationsklasse der synchronen
Auftrge. Server stellen Dienste zur Verfgung, die von vorher unbekannten
Clients in Anspruch genommen werden knnen.
Client-Server Architektur
90
Schlichter, TU Mnchen 6.4. CLIENT-SERVER-MODELL
Client C Server S
Zeit
Auftrag
Resultat
Ausfhrung
blockiert
Denitionen
Denition: Client
Ein Client ist eine Anwendung, die auf einer Clientmaschine luft und i.a.
einen Auftrag initiiert, und die den geforderten Dienst von einem Server
erhlt.
Clients sind meist a-priori nicht bekannt. Clients sind oft Benutzerprozesse,
die dynamisch erzeugt und gelscht werden.
Denition: Server
Ein Server ist ein Subsystem, das auf einer Servermaschine luft und einen
bestimmten Dienst fr a-priori unbekannte Clients zur Verfgung stellt.
Server sind dedizierte Prozesse, die kontinuierlich folgende Schleife
abarbeiten.
while (true) {
receive (empfangsport, auftrag);
fhre Auftrag aus und erzeuge Antwortnachricht;
bestimme sendeport fr Antwortnachricht;
send (sendeport, resultat);
}
Client und Server kommunizieren ber Nachrichten, wobei beide Systeme
auf unterschiedlichen Rechnern ablaufen knnen und ber ein Netz
miteinander verbunden sind.
Beispiele fr Dienste (Services), die mittels Server realisiert werden:
Dateidienst, Zeitdienst, Namensdienst.
91
Schlichter, TU Mnchen 6.5. NETZWERKPROGRAMMIERUNG
Multi-Tier
ein System kann sowohl Client als auch Server sein.
Client
Server
Client
Server
Beispiel
HTTP cgi
Web
Browser
(Applets)
Web
Server
Anwendungs
Server
Daten
bank
SQL
6.5 Netzwerkprogrammierung
Bedingt durch rasche Verbreitung des Internet hat auch das Interesse an Netz-
Anwendungen sehr zugenommen. Netz-Anwendungen sind verteilte Anwendun-
gen, die jeweils aus mehreren Teilkomponenten bestehen und die im Netz verteilt
auf verschiedenen Rechensystemen ausgefhrt werden. Teilkomponenten sind
hier nicht einzelne Objekte, sondern komplexe Verarbeitungseinheiten (z.B. ein
Modul bestehend aus einer Menge von Objekten). Eine verteilte Anwendung ist
eine Anwendung A, dessen Funktionalitt in eine Menge von kooperierenden Teil-
komponenten A
1
, .., A
n
, n IN, n > 1 zerlegt ist;
92
Schlichter, TU Mnchen 6.5. NETZWERKPROGRAMMIERUNG
Jede Teilkomponente umfasst Daten (interner Zustand) und Operationen, die
auf den internen Zustand angewendet werden.
Teilkomponenten A
i
sind autonome Prozesse, die auf verschiedenen Rechen-
systemen ausgefhrt werden knnen. Mehrere Teilkomponenten knnen dem-
selben Rechensystem zugeordnet werden.
Teilkomponenten A
i
tauschen ber das Netz untereinander Informationen aus.
Die Teilkomponenten knnen z.B. auf der Basis des Client-Server Modells
realisiert werden.
6.5.1 Einfhrung
In Berkeley Unix wurde das Konzept von Sockets eingefhrt, um die Netzwerk-
programmierung zu erleichtern. Sie erlauben jede Netzverbindung als einen Strom
von Bytes zu betrachten, die gelesen bzw. geschrieben werden knnen. Ein Socket
deniert einen einfachen, bidirektionalen Kommunikationskanal zwischen 2 Re-
chensystemen, mit Hilfe dessen 2 Prozesse ber ein Netz miteinander kommuni-
zieren knnen.
Client Server
Output Strom
Input Strom
Socket Verbindung
Socket Grundlagen
Sockets abstrahieren von den technischen Details eines Netzes, z.B. bertra-
gungsmedium, Paketgre, Paketwiederholung bei Fehlern, Netzadressen. An-
fnglich standen Sockets nur in Unix Umgebungen zur Verfgung. In der Zwi-
schenzeit werden sie auch von Windows, dem MacOs und von Java untersttzt.
Ein Socket kombiniert 2 Strme, einen Input- und einen Output-Strom.
93
Schlichter, TU Mnchen 6.5. NETZWERKPROGRAMMIERUNG
Ein Socket untersttzt die folgenden Basisoperationen:
richte Verbindung zu entferntem Rechner ein ("connect").
sende Daten.
empfange Daten.
schliee Verbindung.
assoziiere Socket mit einem Port.
warte auf eintreffende Daten ("listen").
akzeptiere Verbindungswnsche von entfernten Rechnern (bzgl. assoziier-
tem Port).
6.5.2 Server Protokoll
Ein Server kommuniziert mit einer Menge von Clients, die a priori nicht bekannt
sind. Ein Server bentigt eine Komponente (z.B. ein Verteiler-Thread), die auf
eintreffende Verbindungswnsche reagiert.
Informeller Ablauf aus Serversicht
1. Erzeugen eines SocketServer und Binden an einen bestimmten Port. Ein Port
entspricht einer FIFO Warteschlange. Sie sammelt die Verbindungswnsche
der Clients. Die maximale Lnge ist abhngig vom Betriebssystem, z.B. 50.
Falls die Warteschlange voll ist, werden keine weiteren Verbindungswnsche
akzeptiert.
2. Warten auf Verbindungswnsche von Clients. Falls der Client bzgl. einer
Socketverbindung autorisiert ist, akzeptiert der Server den Verbindungs-
wunsch. Der Server wird blockiert, bis die accept-Methode des Servers die
Verbindung zwischen Client und Server eingerichtet hat. Die beiden Strme
der Socketverbindung werden eingerichtet.
3. Austausch von Daten zwischen Client und Server entsprechend einem
wohldenierten Protokoll (z.B. HTTP).
4. Schlieen einer Verbindung (durch Server, durch Client oder durch beide);
weiter bei Schritt 2.
Programmstck
94
Schlichter, TU Mnchen 6.5. NETZWERKPROGRAMMIERUNG
Socket socket; //reference to socket
ServerSocket port; //the port the server listens to
try {
port = new ServerSocket(10001, ...);
socket = port.accept(); //wait for client call
// communicate with client
socket.close()
}
catch (IOException e) {e.printStackTrace();}
Fr das Abhren des Ports kann ein eigener Verteiler-Thread speziziert
werden; die Bearbeitung bernehmen sogenannte Worker-Threads.
6.5.3 Client Protokoll
Der Client initiiert eine Socket-Verbindung durch Senden eines Verbindungswun-
sches an den Port des Servers.
Informeller Ablauf aus Clientsicht
1. Erzeugen einer Socket Verbindung.
2. Austausch von Daten zwischen Client und Server ber die Duplex-Verbindung
entsprechend einem wohldenierten Protokoll (z.B. HTTP).
3. Schlieen einer Verbindung (durch Server, durch Client oder durch beide).
Programmstck
Socket connection; //reference to socket
try {
connection = new Socket("www11.in.tum.de", 10001);
........ // communicate with client
connection.close()
}
catch (IOException e) {e.printStackTrace();}
6.5.4 Bidirektionale Stromverbindung
Sockets bestehen aus 2 Strmen fr die Duplexverbindung zwischen Client
und Server. Diese beiden Strme werden automatisch beim Einrichten einer
95
Schlichter, TU Mnchen 6.5. NETZWERKPROGRAMMIERUNG
Socket-Verbindung erzeugt. Durch die Verwendung von Strmen kann dieselbe
Programmiermethode verwendet wie bei I/O, Dateizugriff, etc.
Schreiben auf Socket
void writeToSocket(Socket sock, String str) throws
IOException {
oStream = sock.getOutputStream();
for (int k = 0; k < str.length(); k++)
oStream.write(str.charAt(k));
}
Lesen von Socket
String readFromSocket(Socket sock) throws IOException {
iStream = sock.getInputStream();
String str = "";
char c;
while ( (c = (char) iStream.read()) != \n)
str = str + c;
return str;
}
6.5.5 Java Socket Class
Java untersttzt die beiden grundlegenden Klassen:
java.net.Socket zur Realisierung der Client-Seite einer Socket.
java.net.ServerSocket zur Realisierung der Server-Seite einer Socket.
Client-Seite einer Socket
Constructor
public Socket(String host, int port)
throws UnknownHostException, IOException
Der Parameter host ist ein Rechnername, z.B. www11.in.tum.de. Falls der
Domain Name Server den Parameter host nicht ausen kann, wird die
Exception UnknownHostException ausgelst. Falls die Socket aus einem
anderen Grund nicht geffnet werden kann, wird IOException ausgelst, z.B.
96
Schlichter, TU Mnchen 6.5. NETZWERKPROGRAMMIERUNG
der entfernte Host akzeptiert keine Verbindungen. Es gibt noch eine Reihe
anderer Konstruktoren, z.B.
public Socket(InetAddress host, int port) throws IOException
Das Objekt der Klasse InetAddress umfasst den Rechnernamen und seine IP-
Adresse, d.h. eine Ausung durch den Domain Name Server ist nicht mehr
notwendig.
Information ber eine Socket
public InetAddress getInetAddress();
liefert als Ergebnis den Namen und IP-Adresse des entfernten Rechners, zu
dem die Socket-Verbindung existiert.
public int getPort();
liefert als Ergebnis die Nummer des Ports, mit dem die Socket-Verbindung
am entfernten Rechner assoziiert ist.
public int getLocalPort();
liefert als Ergebnis die Nummer des Ports, mit dem die Socket-Verbindung
am lokalen Rechner assoziiert ist.
Ein-/Ausgabe
public InputStream getInputStream() throws IOException;
liefert den InputStream, von dem Daten gelesen werden knnen. Er
untersttzt die Methode read zum Lesen der Daten. InputStream ist ein
Basis-Strom, der mit Hilfe von SubClassing spezialisiert werden kann.
public OutputStream getOutputStream() throws IOException;
liefert den OutputStream, in dem Daten geschrieben werden knnen. Er
untersttzt die Methode write zum Schreiben der Daten. OutputStream ist
ein Basis-Strom, der mit Hilfe von SubClassing spezialisiert werden kann.
Server-Seite einer Socket
Constructor
public ServerSocket(int port)
throws IOException, BindException
erzeugt eine Socket auf Server-Seite und assoziiert sie mit dem Port.
97
Schlichter, TU Mnchen 6.5. NETZWERKPROGRAMMIERUNG
Einrichten/Schlieen einer Verbindung
public Socket accept() throws IOException
diese Methode blockiert und wartet auf Verbindungswnsche von Clients.
public void close() throws IOException
Ein-/Ausgabe
public InputStream getInputStream() throws IOException;
liefert den InputStream, von dem Daten gelesen werden knnen.
public OutputStream getOutputStream() throws IOException;
liefert den OutputStream, in dem Daten geschrieben werden knnen.
98
Kapitel 7
Zusammenfassung
Dieser Vorlesungsteil beschftigte sich mit Aspekten des Betriebssystems und
der systemnahen Programmierung. Insbesondere wurden folgende Aspekte
behandelt:
ein allgemeiner berblick ber Betriebssysteme, Betriebssystemarchitekturen.
Synchronisation von Prozessen beim Zugriff auf gemeinsame Ressourcen.
Verwaltung von Prozessen und deren Zuteilung an die CPU, um sie
auszufhren.
einfache Verwaltung des Arbeitsspeichers aus der Sicht des Betriebssystems.
Prozesskommunikation in lokalen und verteilten Systemen.
99