- First In
-
First In – First Out (engl. etwa „Zuerst rein – zuerst raus“), häufig abgekürzt mit FIFO, gleichbedeutend mit First-Come First-Served bzw. FCFS, 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 Schlange bezeichnet. Das gegenteilige Prinzip wird als „Last In – First Out“-Verfahren (LIFO) oder Stapel bezeichnet. Weitere ähnliche Prinzipien sind 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.
Inhaltsverzeichnis
Warenwirtschaft
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 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.
Technik
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
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
public class FIFO<T> { List<T> elements; public FIFO() { elements = new List<T>(); } public void enqueue(T element) { elements.add(element); } public T dequeue() { T first = elements.first(); elements.removeAt(0); return first; } }
Siehe auch
Wikimedia Foundation.