First In – First Out

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

First In – First Out (englisch für der Reihe nach[1]), häufig abgekürzt mit FIFO, gleichbedeutend mit First come, first served. bzw. FCFS (engl. für Wer zuerst kommt, mahlt zuerst.[2]), bezeichnet jegliche Verfahren der Speicherung, bei denen diejenigen Elemente, die zuerst gespeichert wurden, auch zuerst wieder aus dem Speicher entnommen werden. Eine solche Datenstruktur wird auch als (Warte-)Schlange bezeichnet. Andere Prinzipien sind das „Last In – First Out“-Verfahren (LIFO, Stapel), das „Highest In – First Out“-Verfahren (HIFO), bei dem das Element zuerst entnommen wird, welches den höchsten Wert besitzt und das „Lowest In – First Out“-Verfahren (LOFO), bei dem als erstes das niederstwertige Element entnommen wird.

Im Rahmen des Rechnungswesens gibt es zudem noch zwei weitere Arten bei den Verbrauchsfolgeverfahren, nämlich das KIFO (Konzern In – First Out) und das KILO (Konzern In – Last Out). Sie besagen, dass die vom Konzernunternehmen erworbenen Gegenstände zuerst bzw. zuletzt verbraucht oder verkauft werden.

Warenwirtschaft[Bearbeiten]

Im Bereich der Warenwirtschaft ist FIFO das übliche Verfahren, da die – von der Warte des Periodenendes gesehen – ältesten (zuerst gelagerten) Bestände auch nach Möglichkeit zuerst verbraucht werden sollten. Bei der Lagerung von Schüttgütern wird das FIFO-Prinzip durch ein Silo nur annähernd erfüllt. Waren mit einem Mindesthaltbarkeitsdatum bzw. Verfalldatum werden in der Regel nach dem FEFO-Verfahren (First Expired – First Out) ausgelagert. Für nicht verderbliche Schüttgüter hingegen wird die kostengünstigere Lagerung in Halden angewendet, die nur wieder von oben abgetragen werden können, also nach dem LIFO-Verfahren betrachtet werden. Der Unterschied zwischen beiden Verfahren ist insbesondere für die Bestandsbewertung relevant. Handelsrechtlich sind sowohl das FIFO- als auch das LIFO-Verfahren für die Bilanzierung zulässig (§ 256 Satz 1 HGB). Da jedoch lediglich LIFO steuerrechtlich angewendet werden darf (§ 6 Abs. 1 Nr. 2a EStG), ist dieses Verfahren in der Praxis weiter verbreitet.

Von der Warenwirtschaft unterschieden wird betriebliche Buchhaltung. Hier bedeutet FIFO die Verbuchung von Warenzugängen zu historischen Kosten und die Bewertung des Lagerwertes nicht nach durchschnittlichen Kosten (Durchschnittskosten × alter Bestand + Ist-Kosten × hinzukommender Bestand/Gesamtbestand), sondern nach den Ist-Kosten des ältesten noch nicht verbrauchten Warenzugangs.

Informatik[Bearbeiten]

FIFO-Darstellung

In der Informatik bezeichnet First In – First Out eine spezielle Art, Daten abzulegen und wieder abzurufen. Die Warteschlange (engl. Queue) in der Informatik beruht auf dem FIFO-Prinzip. Elemente werden in genau der Reihenfolge abgerufen, in der sie zuvor abgelegt wurden. Im Bereich von Betriebssystemen werden Datenverbindungen, die nach dem FIFO-Prinzip organisiert sind, Pipes genannt.

Ein praktischer Bereich in der Informatik, in dem ein FIFO zum Einsatz kommt, sind Controller, insbesondere die serielle Schnittstelle (RS232-Port) bei PCs. Der gepufferte Chip sorgt durch ein FIFO-Verfahren dafür, dass das erste an der seriellen Schnittstelle ankommende Byte als erstes durch Software im Rechner verarbeitet wird. Byte-Protokolle (wie etwa durch eine Maus) bleiben so für 'Leser' (Treiber) wie 'Schreiber' (Maus) linear äquivalent. Ebenso gilt dies für den Tastaturpuffer.

Siehe auch: FIFO-Anomalie

Produktionstechnik[Bearbeiten]

Abhängigkeiten von mehreren Prozessen

In der Produktionstechnik/Produktionssteuerung wird FIFO verwendet, um zwei Prozesse miteinander zu verknüpfen. Verknüpfen bedeutet hier, der Nachfolgeprozess steuert den Vorgängerprozess, ohne dass irgendwelche ERP-Tools (Enterprise Resource Planning) benötigt werden. Hintergrund ist, wie in der Definition schon erwähnt, dass jene Ware, die zuerst im Zulauf gelagert wird, auch als erstes verbraucht wird.

Die Lagerung der Ware bezieht sich allerdings nur auf kurze Zeiträume. In der Regel wird die Versorgungssicherheit der Nachfolgeprozesse sichergestellt, so dass diese keinen Stillstand erleiden. Angewendet wird diese Systematik, wenn der Lieferprozess schnellere Taktzeiten ausführt, als der Nachfolgeprozess und diese auch nicht direkt miteinander verkettet werden können oder wenn der Lieferprozess für mehrere Produkte benötigt wird.

FIFO-Implementierung[Bearbeiten]

// Erreichbarkeit der verwendeten Typen sicherstellen.
import java.util.List;
import java.util.LinkedList;
 
public class FIFO<T> {
 
  private List<T> elements;
 
  public FIFO() {
    elements = new LinkedList<T>();
  }
 
  public void enqueue(T element) {
    // neues Element am Listenende anhängen
    elements.add(element);
  }
 
  public T dequeue() {
    // Referenz auf erstes Listenelement kopieren
    T first = elements.get(0);
    // erstes Listenelement aus Liste löschen (nachfolgende Elemente "rücken auf")
    elements.remove(0);
 
    return first;
  }
}

Siehe auch[Bearbeiten]

Quellen[Bearbeiten]

  1. Wörterbucheintrag zu first in – first out
  2. Wörterbucheintrag zu First come, first served.