Zum Inhalt springen

Dekker-Algorithmus und Alitalia: Unterschied zwischen den Seiten

aus Wikipedia, der freien Enzyklopädie
(Unterschied zwischen Seiten)
Inhalt gelöscht Inhalt hinzugefügt
Eskimbot (Diskussion | Beiträge)
K Bot: Ergänze: it
 
Eskimbot (Diskussion | Beiträge)
K Bot: Ergänze: fi
 
Zeile 1: Zeile 1:
{{Fluggesellschaft|
Der '''Dekker-Algorithmus''' ist wie der [[Peterson-Algorithmus]] eine vollständige Lösung des Problems des wechselseitigen Ausschlusses ([[Mutex]]) in der dezentralen Steuerung von [[Prozess_(Computer)|Prozessen]] ([[Prozesssynchronisation]]). Er vermeidet gegenseitiges Blockieren ([[Verklemmung]]en) und gewährleistet, dass stets genau ein Prozess in einen [[kritischer Abschnitt|kritischen Abschnitt]] gelangen kann ([[Sequentialisierung]]).
Name = Alitalia |
Bild = [[Bild:Alitalia.a321-112.i-bixd.750pix.jpg|250px]] |
Jahr = 1946 |
IATA = AZ |
ICAO = AZA |
Sitz = [[Italien]] |
Struktur = Aktiengesellschaft (?) |
Flugzeuge = 186 |
Ziele = Nationale und internationale Ziele |
Rufzeichen=Alitalia|
Allianz= [[Skyteam]] |
Drehkreuz=|
Passagiere=


}}
==Schema==


'''Alitalia''' ist die größte [[italien]]ische [[Fluggesellschaft]]. Alitalia wurde [[1947]] gegründet und befindet sich im Staatsbesitz.
Der Algorithmus kann mit folgendem Pseudo-C-Code schematisch beschrieben werden:


== Geschichte ==
<pre>
Alitalia wurde am 16. September 1946 von der italienischen Regierung und [[British European Airways|BEA]] unter dem Namen Aerolinee Italiane Internazionali gegründet. Am 1. September 1957 wurde diese Fluglinie mit der Linee Aeree Italiane SpA zusammen und firmierte nun offiziell als Alitalia Linee Aeree oder nur Alitalia. Im April 1961 verzichtete BEA auf ihren 40%igen Aktienanteil der daraufhin dem italienischen Staat zufiel.
// globale Variablendeklaration
Alitalia nahm den Service mit Düsenflugzeugen am 28. April 1960 mittels einer [[Douglas DC-8]] auf, tags darauf wurde die erste [[Caravelle]] in Dienst gestellt.
boolean flag0 = false, flag1 = false;
int turn = 0; // alternativ: int turn = 1;


<!--==Flugziele== -->
// Prozess #0
// ...
P: flag0 = true;
while (flag1) { // busy waiting
if (turn == 1) {
flag0 = false;
goto P;
}
}
// <kritischer Abschnitt>
flag0 = false;
turn = 1;
// ...


== Flotte ==
// Prozess #1
Stand: September 2005
// ...
P: flag1 = true;
while (flag0) { // busy waiting
if (turn == 0) {
flag1 = false;
goto P;
}
}
// <kritischer Abschnitt>
flag1 = false;
turn = 0;
// ...
</pre>


* [[Airbus A319]] (12)
==Funktionsweise==
* [[Airbus A320]] (11)
Der Dekker-Algorithmus für 2 Prozesse arbeitet mit 3 Variablen: 2 Flags und einer Variable ''turn''. Für jeden Prozess existiert genau ein Flag. Ein gesetztes Flag (flag=true) signalisiert, dass sich der dazugehörige Prozess im kritischen Abschnitt befinden könnte, die Variable ''turn'' fungiert als eine Art Token.
* [[Airbus A321]]-200 (23)
Die Eintrittsbedingung für die Schleife ist das Flag des anderen Prozesses: Ist dieses gesetzt, befindet sich der andere Prozess entweder im kritischen Bereich oder ebenfalls in der Schleife. Sollte letzteres der Fall sein, entscheidet der Zustand von ''turn'' über den weiteren Verlauf. Enthält ''turn'' die Nummer des anderen Prozesses, wird das Flag zurückgesetzt und zum Anfang gesprungen. Damit erhält der andere Prozess die Möglichkeit, die Schleife zu verlassen (falls er sich darin befunden hat) und in den kritischen Abschnitt zu gelangen.
* [[ATR-72]] (12, ''Alitalia Express'')
Nach dem kritischen Abschnitt wird das Flag zurückgesetzt.
* [[Boeing 747]]-200F (2)
* [[Boeing 767]]-300ER (14)
* [[Boeing 777]] (10)
* [[McDonnell Douglas MD-11]] (3)
* [[McDonnell Douglas MD-82]] (81)
* [[Embraer ERJ 145]] LR (16, ''Alitalia Express'')
* [[Embraer 170]] (5)


===Beispiel===
==Basisdaten==
* 20 Millionen Passagiere (2004)
<pre>
* 20'000 Mitarbeiter (2005)
-> '''turn''' wird mit 0 initialisiert.
* 189 Flugzeuge (2005)
-> Prozess #0 bekommt den Prozessor: flag0 = true;
* 5 Milliarden Euro Umsatz (2002)
-> Prozess #1 bekommt den Prozessor: flag1 = true;
-> Prozess #0 bekommt den Prozessor: Eintritt in die Schleife
-> Prozess #1 bekommt den Prozessor: Eintritt in die Schleife
-> Prozess #0 bekommt den Prozessor: Die Bedingung turn == 1 wird nicht erfüllt
-> Prozess #1 bekommt den Prozessor: Die Bedingung turn == 0 wird erfüllt
-> Prozess #0 bekommt den Prozessor: Erneuter Eintritt in die Schleife, da flag1 gesetzt
-> Prozess #1 bekommt den Prozessor: flag1 = false;
-> Prozess #0 bekommt den Prozessor: Die Bedingung turn == 1 wird nicht erfüllt
-> Prozess #1 bekommt den Prozessor: Rücksprung zu Marke P
-> Prozess #0 bekommt den Prozessor: Eintritt in den kritischen Abschnitt, da flag1 nicht gesetzt
-> Prozess #1 bekommt den Prozessor: flag1 = true;
-> Prozess #0 bekommt den Prozessor: kritischer Abschnitt
-> Prozess #1 bekommt den Prozessor: Eintritt in die Schleife
-> Prozess #0 bekommt den Prozessor: flag0 = false;
-> Prozess #1 bekommt den Prozessor: Die Bedingung turn == 0 wird erfüllt
-> Prozess #0 bekommt den Prozessor: turn = 1; Ende
-> Prozess #1 bekommt den Prozessor: flag1 = false;
-> Prozess #1 bekommt den Prozessor: Rücksprung zu Marke P
-> Prozess #1 bekommt den Prozessor: flag1 = true;
-> Prozess #1 bekommt den Prozessor: Eintritt in den kritischen Abschnitt, da flag0 nicht gesetzt
-> Prozess #1 bekommt den Prozessor: kritischer Abschnitt
-> Prozess #1 bekommt den Prozessor: flag1 = false;
-> Prozess #1 bekommt den Prozessor: turn = 0;
</pre>


==Bedeutung==
Im Gegensatz zu anderen Lösungen zur dezentralen Steuerung arbeitet der Dekker-Algorithmus aufgrund der Variable ''turn'' auch dann korrekt, wenn das [[Scheduling]] abwechselnd zwischen beiden Prozessen hin und her springt. Eine Vereinfachung findet sich im ebenfalls korrekt arbeitenden [[Peterson-Algorithmus]]. Der Nachteil der dezentralen Steuerung bleibt bestehen: Wartende Prozesse geben den [[Prozessor]] nicht ab, sondern beanspruchen ihn durch [[Aktives Warten|Busy waiting]].


[[Kategorie:Algorithmus]]
[[Kategorie:Betriebssystemtheorie]]


<!--==Unfälle/ Zwischenfälle==-->
[[en:Dekker's algorithm]]
<!--==Galerie==
[[fr:Algorithme de Dekker]]
NaodW29-gallery440221a677c44ec000000001-->
[[it:Algoritmo di Dekker]]
<!--==Siehe auch:==-->
[[pl:Algorytm Dekkera]]

== Weblinks ==
{{Commons1|Alitalia}}
[http://www.alitalia.de Internetpräsenz der Alitalia]

[[Kategorie:Fluggesellschaft (Europa)]]
[[Kategorie:Unternehmen (Italien)]]

[[en:Alitalia]]
[[es:Alitalia]]
[[fi:Alitalia]]
[[fr:Alitalia]]
[[it:Alitalia]]
[[ja:アリタリア航空]]
[[nl:Alitalia]]
[[pl:Alitalia]]
[[pt:Alitalia]]
[[sv:Alitalia]]

Version vom 28. Januar 2006, 10:40 Uhr

Vorlage:Fluggesellschaft

Alitalia ist die größte italienische Fluggesellschaft. Alitalia wurde 1947 gegründet und befindet sich im Staatsbesitz.

Geschichte

Alitalia wurde am 16. September 1946 von der italienischen Regierung und BEA unter dem Namen Aerolinee Italiane Internazionali gegründet. Am 1. September 1957 wurde diese Fluglinie mit der Linee Aeree Italiane SpA zusammen und firmierte nun offiziell als Alitalia Linee Aeree oder nur Alitalia. Im April 1961 verzichtete BEA auf ihren 40%igen Aktienanteil der daraufhin dem italienischen Staat zufiel. Alitalia nahm den Service mit Düsenflugzeugen am 28. April 1960 mittels einer Douglas DC-8 auf, tags darauf wurde die erste Caravelle in Dienst gestellt.


Flotte

Stand: September 2005

Basisdaten

  • 20 Millionen Passagiere (2004)
  • 20'000 Mitarbeiter (2005)
  • 189 Flugzeuge (2005)
  • 5 Milliarden Euro Umsatz (2002)



Vorlage:Commons1 Internetpräsenz der Alitalia