mini|350x350px|Prikaz rada FIFO algoritma. Od 1. do 5. slike dolazak/redanje procesa, a od 6. do 10. obrada/odlazak procesa.

FIFO (First In, First Out) jest način organizacije i upravljanja podacima u kojem se prvi uneseni element obrađuje prvi. Ova politika često se susreće u svakodnevnom životu, kao što su: Ljudi koji čekaju u redu u pozorištu ili supermarketu. Automobili na naplatnim rampama. Procesi koji čekaju na izvršenje u operativnom sistemu. Podaci koji čekaju na obradu u računarskoj memoriji.

FIFO se koristi u mnogim oblastima računarstva, uključujući operativne sisteme, mreže računara, elektroniku, programiranje i računarsku arhitekturu.

FIFO u računarstvu Strukture podataka mini|270x270px|Prezentacija FIFO (prvi ušao, prvi izašao) reda. FIFO se u računarskim naukama implementira kao: Red (Queue) – linearna struktura podataka gdje prvi dodani element biva uklonjen prvi. Kružni bafer (Circular buffer) – memorijska struktura koja koristi FIFO način za pohranu podataka u kružnoj memoriji. Baferi u mrežama – mrežni uređaji koriste FIFO za redove čekanja paketa podataka. Operativni sistemi – FIFO redovi se koriste za upravljanje procesima i I/O operacijama.

FIFO se može implementirati koristeći povezane liste, nizove ili posebne hardverske strukture.

Implementacija u C++ Sljedeći kod prikazuje jednostavnu implementaciju FIFO reda u C++: #include <iostream> #include <stdexcept>

template <typename T> class FIFO { private: struct Node { T value; Node* next; Node(T _value) : value(_value), next(nullptr) {}

Node* front; Node* back;

public: FIFO() : front(nullptr), back(nullptr) {}

~FIFO() { while (front != nullptr) dequeue();

void enqueue(T _value) { Node* newNode = new Node(_value); if (front == nullptr) front = newNode; else back->next = newNode; back = newNode;

T dequeue() { if (front == nullptr) throw std::underflow_error("Red je prazan!");

Node* temp = front; T result = front->value; front = front->next; delete temp; return result;

FIFO u elektronici mini|FIFO raspored u elektronskim sklopovima U elektronici, FIFO se koristi za **buffering** i kontrolu protoka podataka između različitih hardverskih komponenti.

Glavne upotrebe FIFO redova u elektronici uključuju: Mrežni sklopovi – kontrola prijenosa podataka između različitih uređaja. Memorijski kontroleri – organizacija podataka u RAM memoriji. Procesori i magistrale – FIFO omogućava usklađivanje komunikacije između različitih dijelova CPU-a.

Postoje dva tipa FIFO sistema: Sinhroni FIFO – koristi isti takt za čitanje i pisanje podataka. Asinhroni FIFO – koristi različite taktove, omogućavajući efikasniji prijenos podataka između modula sa različitim brzinama obrade.

Prvu poznatu FIFO implementaciju u elektronici osmislio je Peter Alfke 1969, koji je kasnije radio u Xilinxu.

Primjene FIFO algoritma FIFO se koristi u različitim oblastima: Operativni sistemi – planiranje procesa i upravljanje memorijom. Mrežni protokoli – organizacija paketa podataka u redovima čekanja. Baze podataka – kontrola transakcija i obrada zahtjeva. Digitalna obrada signala (DSP) – FIFO se koristi u streaming aplikacijama i multimedijalnim sistemima. Simulacije i modeliranje – modeliranje realnih sistema, poput saobraćaja i proizvodnih linija.

Suprotni koncept: LIFO FIFO sistem suprotan je principu LIFO, koji se temelji na "posljednji ušao, prvi izašao" (Last In, First Out) pristupu. LIFO se koristi u stogovima (stacks) i rekurzivnim algoritmima.

Također pogledajte LIFO Struktura podataka Red čekanja Bafer Memorijski sistem

Reference N. Husović, E. Brka, S. Ribić: Operativni sistemi, Sarajevo, februar 2015. Robert Sedgewick i Kevin Wayne: Algorithms, Princeton University. Stacks and its Applications.

Kategorija:Kibernetika Kategorija:Strukture podataka Kategorija:Računarske nauke Kategorija:Elektronika Kategorija:Operativni sistemi