FIFO

Representació d'una cua FIFO (First-In-First-Out).

First in, first out o FIFO (en català, «primer a entrar, primer a sortir»),[1] és un concepte utilitzat en estructures de dades, comptabilitat de costos i teoria de cues. Guarda analogia amb les persones que esperen en una cua i van sent ateses en l'ordre en què van arribar, és a dir, que la primera persona que entra és la primera persona que surt.

També s'anomena first come, first served o FCFS (en català, «primer a arribar, primer a ser atès»).[2]

Aplicacions

Aquesta estructura s'utilitza per exemple:

  • en general, per emmagatzemar temporalment les transaccions que han d'esperar per ser processades;
  • servidors d'impressió, que processen consultes en l'ordre en què arriben, i els insereixen en una cua (també anomenada "spool" ';
  • alguns motors multitasca, en un sistema operatiu, que han de concedir temps de màquinari a cada tasca, sense privilegiar-ne cap;
  • Un BFS utilitza una cua per emmagatzemar els nodes visitats;
  • per crear tot tipus de memòries intermèdies o buffers(en anglès);
  • En gestió d'inventaris, els algorismes han de respectar la gestió d'inventaris físics per garantir la consistència/valoració física.

Informàtica

En informàtica, FIFO s'utilitza en estructures de dades per implementar cues. La implementació pot efectuar-se amb ajuda d'arranjaments o vectors, o bé mitjançant l'ús de punters i assignació dinàmica de memòria.

Si s'implementa mitjançant vectors, el nombre màxim d'elements que pot emmagatzemar FIFO està limitat al que s'hagi establert en el codi del programa abans de la compilació (cua estàtica) o durant la seva execució (cua pseudoestática o dinàmica). Sigui quina sigui l'opció triada, el nombre d'elements que podrà emmagatzemar la cua quedarà determinat durant tota l'execució del programa. Així, el sistema ha de reservar la mida de memòria necessari per acollir totes les dades, sigui quin sigui el nombre d'elements usats.

En algunes aplicacions, això suposa un problema, ja que pot desconèixer-se el nombre d'elements a contenir a la cua. La senzilla solució de reservar més memòria de la que se suposa que es necessitarà, pot conduir a un malbaratament de la memòria (la cua pot ser que estigui plena, aprofitant tota la memòria reservada, o bé, que mai s'acabi d'omplir-, ocupant recursos innecessaris en memòria). No obstant això, si es fa servir assignació dinàmica de memòria, el nombre màxim no està declarat en temps de compilació sinó en temps d'execució, és a dir, es reserva memòria a mesura que es necessiti expandir la mida de la cua (adaptant a la mida necessari en cada moment en funció dels elements que hi ha a la cua), fent un millor ús de la memòria disponible.

Un dels usos de les cues és l'exploració 'en amplada' d'un arbre binari de cerca. Un altre ús típic de les cues, és la gestió de descàrregues d'una aplicació peer-to-peer (P2P).

Estructura de dades

Representació d'una cua FIFO (primera entrada, primera sortida)

Depenent de l'aplicació, es podria implementar un FIFO com a registre de desplaçaments de maquinari o utilitzant diferents estructures de memòria, normalment un buffer circular o un tipus de llista. Per obtenir informació sobre l'estructura de dades abstractes, vegeu Cua (estructura de dades). La majoria de les implementacions de programari d'una cua FIFO no són segurs i requereixen un mecanisme de bloqueig per verificar que la cadena d'estructura de dades es manipula només per un fil a la vegada.

Codi

El codi següent mostra una implementació de llista enllaçada FIFO C++. A la pràctica, existeixen diverses implementacions de llistes, incloses macros populars de sistemes Unix C sys/queue.h o la plantilla C++ biblioteca estàndard std :: list, evitant la necessitat d'implementar l'estructura de dades des de zero.

#include <iostream>
#include <stdexcept>

template <typename T>
class FIFO
{
private:

 struct Node {
 T value;
 Node *next;

 Node(T _value) : value(_value), next(NULL) {}
 };

 Node *front;
 Node *back;

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

 ~FIFO() {
 while (front != NULL)
 dequeue();
 }

 void enqueue(T _value) {
 Node *newNode = new Node(_value);

 if (front == NULL)
 front = newNode;
 else
 back->next = newNode;

 back = newNode;
 }

 T dequeue() {
 if (front == NULL)
 throw std::underflow_error("Nothing to dequeue");

 Node *temp = front; 
 T result = front->value;

 front = front->next;
 delete temp;

 return result;
 }
};

Primer cap o cua

Els extrems d'una cua FIFO sovint s'anomenen "cap" i «cua». Malauradament, hi ha una controvèrsia sobre aquests termes:

  • Per a moltes persones, els articles han d'introduir una cua al final i romandre a la cua fins que arribin al cap i deixar la cua des d'allà. Aquest punt de vista es justifica per analogia amb cues de persones que esperen algun tipus de servei i paral·lel a l'ús de "front" i "back" en l'exemple anterior.
  • Altres persones creuen que els articles entren a la cua al davant i surten a la cua, a la manera del menjar que s'empassa una serp. Les cues escrites d'aquesta manera apareixen en llocs que es podrien considerar autoritzats, com el sistema operatiu Linux.

Canonades

En entorns informàtics que admeten el model de canonades per a Comunicació entre processos, un FIFO és un altre nom per a canonades anomenades o named pipe.

Programació de disc

Els controladors de disc poden utilitzar el FIFO com a algoritme de programació de discs per determinar l'ordre en què es pot atendre les sol·licituds d'E/S del disc.

Comunicacions i treball en xarxa

La comunicació per ponts de xarxes, commutadors i encaminadors (routers) utilitzats a xarxes informàtiques utilitzen FIFO per mantenir paquets de dades en ruta cap al següent destí. Normalment s'utilitza almenys una estructura FIFO per connexió de xarxa. Alguns dispositius disposen de múltiples FIFO per a la cua simultània i independent dels diferents tipus d'informació.

Comptabilitat

En comptabilitat FIFO és un mètode per registrar el valor d'un inventari. El seu ús és apropiat quan es compta amb diversos lots d'un mateix producte, de forma que és molt difícil identificar-los individualment. Aquest mètode presumeix que el primer producte ingressat al magatzem serà el primer a sortir per efectes de l'inventari.[3]

El criteri FIFO és molt recurrent a l'hora de valorar inventaris compostos per productes caducs o peribles; en altres paraules, se seguirà l'ordre necessari perquè les peces a les que primer es doni sortida siguin les més pròximes a caducar o assolir una obsolescència.[4]

Electrònica

Els FIFO s'usen comunament en circuits de electrònica per a emmagatzematge i fer control de flux. Parlant de maquinari, un FIFO consisteix bàsicament en un conjunt de punters de lectura/escriptura, emmagatzematge i lògica de control. L'emmagatzematge pot ser SRAM, flip-flops, latches o qualsevol altra forma adequada d'emmagatzematge. Per FIFO d'una mida important s'usa usualment una SRAM de doble port, on un dels ports s'usa per a l'escriptura i l'altre per a la lectura.

Un « FIFO sincrònic» fa servir el mateix rellotge tant per a les lectures com per a les escriptures. Un « FIFO asicrònic» és aquell que utilitza diferents rellotges, un per lectura i un altre per a l'escriptura. Quan es parla de FIFO asincrònic s'introdueix el tema de la meta-estabilitat.

Una implementació comuna d'un FIFO asincrònic fa servir un codi Gray (o qualsevol codi d'unitat de distància) per als punters de lectura i escriptura de manera d'assegurar-se una generació de banderes (flag) segures/estables.

Una altra nota addicional respecte de la generació de banderes és que un ha de necessàriament usar punters aritmètics per generar banderes per implementacions asincròniques de FIFO.

D'altra banda, un pot usar tant un acostament leaky bucket o punters aritmètics per generar banderes en una implementació FIFO sincrònica.

En FIFO, es poden enumerar:

  • Full (ple),
  • Empty (buida),
  • Almost full (gairebé ple),
  • Almost empty (gairebé buit).

FIFO ple / buit

En maquinari, un FIFO s'usa per a propòsits de sincronització. Comportant-se com una cua circular i, per tant, conté dos punters:

  • Punter de lectura / registre de direcció de lectura.
  • Punter d'escriptura / registre de direcció d'escriptura.

Les adreces de lectura i escriptura estan ambdues inicialment en la primera ubicació de la memòria i la cua FIFO està buida.

FIFO buida (empty)

Quan el registre de direcció de lectura aconsegueix al registre de direcció d'escriptura, la cua FIFO dispara el senyal o bandera buit.

FIFO plena (full)

Quan el registre de direcció d'escriptura aconsegueix al registre de direcció de lectura, la cua FIFO dispara el senyal o bandera ple.

Vegeu també

  • Last in, first out o LIFO, el contrari de FIFO. Guarda analogia amb una pila de plats, en què els plats van posant un sobre l'altre, i si es vol treure un, es treu primer l'últim que s'ha posat.
  • GIGO, acrònim de Garbage In, Garbage Out, es pot traduir per brossa entra, brossa surt. Emprada per a posar en relleu que els ordinadors, a diferència dels éssers humans, processen incondicionalment dades d'entrada encara que siguin absurdes i aportaran dades de sortida sense sentit.[5]

Referències

  1. Definició de FIFO a computerhope.com
  2. Fatos Xhafa; Jordi Marco. «Programació i bases de dades. Pràctiques». UPC, 2007. [Consulta: 22 octubre 2011].
  3. «Valoració d'existències» (pdf). [Consulta: 22 octubre 2011].
  4. Definició a economipedia.com
  5. «World Wide Words: Garbage in, garbage out» (en anglès). [Consulta: 12 agost 2018].

Bibliografia

  • Knuth, Donald E. The Art of Computer Programming (en anglès). vol I. Fundamental Algorithms. 3. Addison Wesley, 1997. 


Read other articles:

Eka Wijaya Permana Wakil Komandan Pusat Polisi Militer Angkatan DaratPetahanaMulai menjabat 16 Januari 2023 PendahuluEkoyatma ParnowoPenggantiPetahanaKepala Oditurat Militer Tinggi IV MakassarMasa jabatan27 Juni 2022 – 16 Januari 2023 PendahuluSudardiPenggantiSafrin RachmanKapuslemasmil Babinkum TNIMasa jabatan21 Januari 2022 – 27 Juni 2022 PendahuluSalidinPenggantiSafrin RachmanDanpom Kodam V/BrawijayaMasa jabatan2018–2021 PendahuluSubiaktoPenggantiMohammad Sawi I...

 

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada November 2022. Emin XhinovciNama lahirEmin XhinovciJulukanHitlerLahirc. 1959 (umur 64–65)Kosovska Mitrovica, Provinsi Otonomi Sosialis Kosovo, RFS YugoslaviaPengabdian Tentara Pembebasan KosovoLama dinas1998–99Perang/pertempuranPerang Kosovo  ...

 

Bagian dari seri tentang:Islamisme Dasar Islam Sejarah Budaya Ekonomi Politik Sekularisme Ideologi Islamisme Qutbisme Salafisme Islamisme Syiah Fundamentalisme Islam Konsep Kekhalifahan Demokrasi Islam Sosialisme Islam Negara Islam Monarki Islam Republik Islam Islamisasi (pengetahuan) Jihad Pan-Islamisme Pasca-Islamisme Syariah Syura Perbudakan Teori dua bangsa Umat Pengaruh Anti-imperialisme Anti-Zionisme Kebangkitan Islam Zaman Kejayaan Islam GerakanMazhab Ahl-i Hadith Deobandi Madkhal...

Expansion of the EU   EU member states in 2004  New EU member states admitted in 2004 Part of a series on the History of theEuropean Union Timeline Pre-1948 ideas 1948–1957 1958–1972 1973–1993 1993–2004 2004–present Organisation European Communities (1958–2009) European Coal and Steel Community (1952–2002) European Economic Community (1958–1993) European Atomic Energy Community (1958–present) European Community (1993–2009) Justice and Home Affairs (1993...

 

Masjid SaadahMasjid SaadahAgamaAfiliasiIslam – SunniProvinsi Sumatera BaratLokasiLokasiTanah DatarNegara IndonesiaArsitekturTipeMasjidGaya arsitekturMinangkabauPeletakan batu pertama1910Rampung1917KubahTidak ada Masjid Saadah atau Masjid As-Saadah adalah salah satu masjid tertua di Indonesia yang terletak di Nagari Gurun, Kecamatan Sungai Tarab, Kabupaten Tanah Datar, Sumatera Barat. Masjid yang mulai dipergunakan pada tahun 1917 ini dibangun pada tahun 1910 dengan arsitektur yang...

 

2008 EP by The AlchemistThe Alchemist's CookbookEP by The AlchemistReleasedNovember 18, 2008Recorded2008GenreHip hopLength20:31LabelKochProducerThe AlchemistThe Alchemist chronology 1st Infantry(2004) The Alchemist's Cookbook(2008) Chemical Warfare(2009) Singles from The Alchemist's Cookbook Key to the CityReleased: July 28, 2008 Professional ratingsReview scoresSourceRatingHipHopDX[1] The Alchemist's Cookbook is an EP by producer The Alchemist. The EP was digitally released o...

Indonesiadalam tahun1993 ← 1991 1992 1993 1994 1995 → Dekade :1990-anAbad :ke-20Milenium :ke-2Lihat juga Sejarah Indonesia Garis waktu sejarah Indonesia Indonesia menurut tahun Bagian dari seri mengenai Sejarah Indonesia Prasejarah Manusia Jawa 1.000.000 BP Manusia Flores 94.000–12.000 BP Bencana alam Toba 75.000 BP Kebudayaan Buni 400 SM Kerajaan Hindu-Buddha Kerajaan Kutai 400–1635 Kerajaan Tarumanagara 450–900 Kerajaan Kalingga 594–782 Kerajaa...

 

  لمعانٍ أخرى، طالع الوحدات (توضيح). غلاف كتيب النظام الدولي للوحدات. النظام العالمي للوحدات أو النظام الدولي للوحدات (بالإنجليزية: International System of Units) (اختصارا SI ) نظام وحدات القياس الأوسع انتشارًا في العالم، وهو يستخدم في كل بلدان العالم باستثناء الولايات المتحدة الأمر�...

 

Insolvent development company embroiled in scandals 1MDB redirects here. Not to be confused with IMDb or 1Malaysia. 1Malaysia Development BerhadFormerlyTerengganu Investment AuthorityCompany typeState-owned enterpriseIndustryStrategic developmentFoundedJune 25, 2009; 14 years ago (2009-06-25)HeadquartersMenara IMC, No 8 Jalan Sultan Ismail, Kuala Lumpur, MalaysiaKey peopleAsri Hamidon (Chairman), Jho Low (Consultant)RevenueNon-disclosedOwnerMinister of Finance (Incorporated)...

この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)出典検索?: コルク – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL(2017年4月) コルクを打ち抜いて作った瓶の栓 コルク(木栓、�...

 

Isn't Life WonderfulKartu lobiSutradaraD. W. GriffithProduserD. W. GriffithDitulis olehD. W. GriffithBerdasarkanNovel:Geoffrey MossPemeranCarol DempsterNeil HamiltonPenata musikLouis SilversCesare SoderoSinematograferHendrik SartovHarold S. SintzenichDistributorUnited ArtistsTanggal rilis 23 November 1924 (1924-11-23) Durasi120 menitNegaraAmerika Serikat Film lengkap Isn't Life Wonderful (1924) adalah sebuah film bisu garapan D. W. Griffith untuk perusahaannya D. W. Griffith Produc...

 

Vous lisez un « article de qualité » labellisé en 2012. Six personnalités de l'histoire de la relativité : 1. Isaac Newton 2. James Clerk Maxwell 3. Hendrik Lorentz 4. Henri Poincaré 5. Albert Einstein 6. Hermann Minkowski L’histoire de la relativité restreinte décrit le développement de propositions et constatations empiriques et conceptuelles, au sein de la physique théorique, qui ont permis d’aboutir à une nouvelle compréhension de l’espace et du temps. C...

مستشفى حورس التخصصي إحداثيات 25°36′35″N 32°30′17″E / 25.609665724029°N 32.504789422287°E / 25.609665724029; 32.504789422287   معلومات عامة الدولة مصر  تاريخ الافتتاح الرسمي يناير 2018  معلومات أخرى تعديل مصدري - تعديل   مستشفي حورس التخصصي أو أرمنت المركزي هي مستشفي تقع في مدينة أرمنت، ا�...

 

1866-1868 famine in Finland, Russian Empire You can help expand this article with text translated from the corresponding article in Finnish. (June 2023) Click [show] for important translation instructions. Machine translation, like DeepL or Google Translate, is a useful starting point for translations, but translators must revise errors as necessary and confirm that the translation is accurate, rather than simply copy-pasting machine-translated text into the English Wikipedia. Do not tra...

 

Genre of traditional music from Scotland Lonach Pipe band, Edinburgh Scotland, 2009. Pipe bands are among the most recognizable forms of traditional Scottish music. Scottish folk music (also Scottish traditional music) is a genre of folk music that uses forms that are identified as part of the Scottish musical tradition. There is evidence that there was a flourishing culture of popular music in Scotland during the late Middle Ages, but the only song with a melody to survive from this period i...

2009 UK local government election 2009 Oxfordshire County Council election ← 2005 4 June 2009 2013 → All 74 seats to Oxfordshire County Council38 seats needed for a majority   Majority party Minority party Third party   Party Conservative Liberal Democrats Labour Last election 43 16 8 Seats won 51 10 9 Seat change 8 5 1 Percentage 42.81% 23.87% 15.09%   Fourth party Fifth party   Party Green Independent Last election 5 2 Seats ...

 

Halaman ini berisi artikel tentang novel. Untuk film, lihat The Hobbit (seri film). The Hobbit Sampul buku The Hobbit versi bahasa IndonesiaPengarangJ. R. R. TolkienJudul asliThe HobbitNegaraInggrisBahasaIndonesiaSeriThe Lord of The RingsGenreFantasiPenerbitGramedia Pustaka UtamaTanggal terbitJanuari 2002Tgl. terbit (bhs. Inggris)1937Halaman348 halamanISBNISBN [[Special:BookSources/979-686-767-2|979-686-767-2]] Invalid ISBNDiikuti olehThe Lord of The Ri...

 

Narrative of history promoted by Kemalism This article may relate to a different subject or has undue weight on an aspect of the subject. Please help relocate relevant information and remove irrelevant ones. (January 2022)Kemalist history textbook, used between 1931 and 1941.Mustafa Kemal Atatürk, founder of the Republic of Turkey, whose cult of personality is the main influence on Kemalist historiography. This article is part of a series aboutMustafa Kemal Atatürk Timeline Personal life Cu...

Il venerdì nero del 1869 (Black Friday), nella storia degli Stati Uniti, è stato un panico sui mercati finanziari che è avvenuto il 24 settembre 1869, a seguito del crollo dei prezzi dell'oro. Il crollo è stato una conseguenza di un tentativo da parte del finanziere Jason Gould e del magnate delle ferrovie James Fisk di monopolizzare il mercato dell'oro e farne aumentare il prezzo. Lo schema si basava sulla messa fuori dal mercato dell'oro governativo, che i manipolatori avevano organizza...

 

(We're Gonna) Rock Around the Clock by Bill Haley & His Comets was the first single to sell 1 million copies in the UK. The definition of a million-selling single, as regarded by the Official Charts Company (OCC), has changed in line with new technology for music consumption. Originally only physical record sales were counted since the start of the UK Singles Chart in November 1952. Digital downloads of a track were included from 2004 onwards and from 2014 onwards BPI-certified awards (S...