FIFO (first-in, first-out; ilk giren ilk çıkar) algoritmasının mantığı basittir. Bellek yöneticisinin yeni bir sayfaya yer açmak için, hangi sayfayı dışarıda bırakacağını karar veren algoritmalardan biridir.Yönlendiriciye gelen ilk paket, iletilecek ilk pakettir.
FIFO kuyruğuna ilk gelen, ilk hizmet (first-come, first-served; FCFS) kuyruğu olarak da anıldığı unutmamalıdır. FCFS aynı zamanda FIFO işletim sistemi çizelgeleme algoritması için bir jargon terimidir. Ayrıca her işlem için merkezi işlem birimi (CPU) zamanını talep edildiği sırada vermektedir.
En basit algoritmalardan olan FIFO'nun uygulanması kolaydır ve yazılım tabanlı yönlendiriciler için düşük bir sistem yükü sunmaktadır. FIFO'nun tam tersi, en geç girişin veya "yığının tepesinin" ilk önce işlendiği, en son giren ilk çıkar algoritması olarak bilinen LIFO'dur (last-in-first-out).
Bilgisayar bilimi
Uygulamaya bağlı olarak, bir FIFO, bir donanım kaydırma yazmacı olarak veya farklı bellek yapıları, tipik olarak dairesel bir tampon veya bir tür liste kullanarak uygulanabilmektedir. Bir FIFO kuyruğunun çoğu yazılım uygulaması iş parçacığı açısından güvenli değildir ve veri yapısı zincirinin aynı anda yalnızca bir iş parçacığı tarafından değiştirildiğini doğrulamak için bir kilitleme mekanizması gerektirmektedir.
FIFO algoritması farklı programlama dillerinde yazılabilmektedir. Örneğin;
// FIFO sayfa değiştirmenin C ++ uygulaması // İşletim Sistemlerinde. #include<bits/stdc++.h> using namespace std; // FIFO kullanarak sayfa hatalarını bulma işlevi int pageFaults(int pages[], int n, int capacity) { // Mevcut sayfalar kümesini temsil etmek için. // Bir sayfanın kümede olup olmadığını hızlı bir şekilde kontrol etmek için // unordered_set kullanıyoruz unordered_set<int> s; // Sayfaları FIFO tarzında saklamak için queue<int> indexes; // İlk sayfadan başlayın int page_faults = 0; for (int i=0; i<n; i++) { // Setin daha fazla sayfa tutup tutamayacağını kontrol edin if (s.size() < capacity) { // Zaten yoksa, sayfa hatasını temsil eden sete ekleyin if (s.find(pages[i])==s.end()) { // Mevcut sayfayı sete ekle s.insert(pages[i]); // artan sayfa hatası page_faults++; // Mevcut sayfayı kuyruğa itin indexes.push(pages[i]); } } //Küme doluysa, FIFO gerçekleştirmeniz gerekir, //yani kuyruğun ilk sayfasını kümeden kaldırın //ve her ikisini de sıraya koyun ve geçerli sayfayı ekleyin else { // Mevcut sayfanın sette zaten mevcut olup olmadığını kontrol edin if (s.find(pages[i]) == s.end()) { // Sayfayı gruptan bulmak ve // silmek için kullanılmak üzere sıradaki ilk sayfayı saklayın int val = indexes.front(); // Sıradan ilk sayfayı aç indexes.pop(); // Dizinler sayfasını kümeden kaldırın s.erase(val); // mevcut sayfayı sete ekle s.insert(pages[i]); //mevcut sayfayı kuyruğa it indexes.push(pages[i]); // artan sayfa hatası page_faults++; } } } return page_faults; } // Kodları çalıştıralım int main() { int pages[] = {7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2}; int n = sizeof(pages)/sizeof(pages[0]); int capacity = 4; cout << pageFaults(pages, n, capacity); return 0; }
# FIFO sayfasının Python3 uygulaması # İşletim Sistemlerinde değiştirme. from queue import Queue # FIFO kullanarak sayfa hatalarını bulma işlevi def pageFaults(pages, n, capacity): # Mevcut sayfaları temsil etmek için. # Bir sayfanın kümede olup olmadığını hızlı bir şekilde kontrol etmek # için set kullanıyoruz s = set() # Sayfaları FIFO tarzında saklamak için indexes = Queue() # İlk sayfadan başlayın page_faults = 0 for i in range(n): #Setin daha fazla sayfa tutup tutamayacağını kontrol edin if (len(s) < capacity): # Zaten yoksa, sayfa hatasını temsil eden sete ekleyin if (pages[i] not in s): s.add(pages[i]) # Sayfa hatalarını artırın page_faults += 1 # Mevcut sayfayı kuyruğa itin indexes.put(pages[i]) # Küme doluysa, FIFO gerçekleştirmeniz gerekir, # yani kuyruğun ilk sayfasını kümeden kaldırın # ve her ikisini de sıraya koyun ve geçerli sayfayı ekleyin else: # Mevcut sayfanın sette zaten mevcut olup olmadığını kontrol edin if (pages[i] not in s): # Sıradan ilk sayfayı aç val = indexes.queue[0] indexes.get() # Dizinler sayfasını kaldırın s.remove(val) # mevcut sayfayı ekle s.add(pages[i]) # mevcut sayfayı kuyruğa it indexes.put(pages[i]) # Sayfa hatalarını artırın page_faults += 1 return page_faults # Kodu çalıştırın if __name__ == '__main__': pages = [7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2] n = len(pages) capacity = 4 print(pageFaults(pages, n, capacity))
Disk denetleyicileri, FIFO'yu disk (I/O) isteklerine hizmet verilecek sırayı belirlemek için bir disk zamanlama algoritması olarak kullanabilmektedir. Burada, daha önce bahsedilen CPU zamanlamasında olduğu gibi aynı FCFS başlatması ile de bilinmektedir.
Bilgisayar ağlarında kullanılan iletişim ağı köprüleri, anahtarları ve yönlendiricileri, veri paketlerini bir sonraki hedeflerine doğru yolda tutmak için FIFO'ları kullanmaktadır. Tipik olarak ağ bağlantısı başına en az bir FIFO yapısı kullanılmaktadır. Bazı cihazlarda, farklı bilgi türlerini eşzamanlı ve bağımsız olarak sıraya koymak için birden çok FIFO bulunmaktadır.
Kaynakça
- ^ . www.omurserdar.com. 25 Mayıs 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 25 Mayıs 2021.
- ^ Packet Queueing and Scheduling (İngilizce). Morgan Kaufmann. 1 Ocak 2018. ISBN . 25 Mayıs 2021 tarihinde kaynağından . Erişim tarihi: 25 Mayıs 2021.
- ^ a b Tanenbaum, Andrew S. (2015). Modern operating systems. Fourth edition. Boston. ISBN . OCLC 870646449. 26 Ağustos 2022 tarihinde kaynağından . Erişim tarihi: 25 Mayıs 2021.
- ^ Kruse, Robert L. (1987). Data structures and program design. 2nd ed. Englewood Cliffs, N.J.: Prentice-Hall. ISBN . OCLC 13823328.
- ^ a b . GeeksforGeeks (İngilizce). 17 Haziran 2017. 20 Haziran 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 25 Mayıs 2021.
- ^ Kurose, James F. (2006). Computer networking : complete package. 3rd ed. rev. Keith W. Ross. Harlow: Addison-Wesley. ISBN . OCLC 70403052.
wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar
FIFO first in first out ilk giren ilk cikar algoritmasinin mantigi basittir Bellek yoneticisinin yeni bir sayfaya yer acmak icin hangi sayfayi disarida birakacagini karar veren algoritmalardan biridir Yonlendiriciye gelen ilk paket iletilecek ilk pakettir FIFO algoritmasinin temsili resmi FIFO kuyruguna ilk gelen ilk hizmet first come first served FCFS kuyrugu olarak da anildigi unutmamalidir FCFS ayni zamanda FIFO isletim sistemi cizelgeleme algoritmasi icin bir jargon terimidir Ayrica her islem icin merkezi islem birimi CPU zamanini talep edildigi sirada vermektedir En basit algoritmalardan olan FIFO nun uygulanmasi kolaydir ve yazilim tabanli yonlendiriciler icin dusuk bir sistem yuku sunmaktadir FIFO nun tam tersi en gec girisin veya yiginin tepesinin ilk once islendigi en son giren ilk cikar algoritmasi olarak bilinen LIFO dur last in first out Bilgisayar bilimiKuyruga koyma ve kuyruktan cikarma islemleriyle bir FIFO kuyrugunun temsili Uygulamaya bagli olarak bir FIFO bir donanim kaydirma yazmaci olarak veya farkli bellek yapilari tipik olarak dairesel bir tampon veya bir tur liste kullanarak uygulanabilmektedir Bir FIFO kuyrugunun cogu yazilim uygulamasi is parcacigi acisindan guvenli degildir ve veri yapisi zincirinin ayni anda yalnizca bir is parcacigi tarafindan degistirildigini dogrulamak icin bir kilitleme mekanizmasi gerektirmektedir FIFO algoritmasi farkli programlama dillerinde yazilabilmektedir Ornegin C FIFO sayfa degistirmenin C uygulamasi Isletim Sistemlerinde include lt bits stdc h gt using namespace std FIFO kullanarak sayfa hatalarini bulma islevi int pageFaults int pages int n int capacity Mevcut sayfalar kumesini temsil etmek icin Bir sayfanin kumede olup olmadigini hizli bir sekilde kontrol etmek icin unordered set kullaniyoruz unordered set lt int gt s Sayfalari FIFO tarzinda saklamak icin queue lt int gt indexes Ilk sayfadan baslayin int page faults 0 for int i 0 i lt n i Setin daha fazla sayfa tutup tutamayacagini kontrol edin if s size lt capacity Zaten yoksa sayfa hatasini temsil eden sete ekleyin if s find pages i s end Mevcut sayfayi sete ekle s insert pages i artan sayfa hatasi page faults Mevcut sayfayi kuyruga itin indexes push pages i Kume doluysa FIFO gerceklestirmeniz gerekir yani kuyrugun ilk sayfasini kumeden kaldirin ve her ikisini de siraya koyun ve gecerli sayfayi ekleyin else Mevcut sayfanin sette zaten mevcut olup olmadigini kontrol edin if s find pages i s end Sayfayi gruptan bulmak ve silmek icin kullanilmak uzere siradaki ilk sayfayi saklayin int val indexes front Siradan ilk sayfayi ac indexes pop Dizinler sayfasini kumeden kaldirin s erase val mevcut sayfayi sete ekle s insert pages i mevcut sayfayi kuyruga it indexes push pages i artan sayfa hatasi page faults return page faults Kodlari calistiralim int main int pages 7 0 1 2 0 3 0 4 2 3 0 3 2 int n sizeof pages sizeof pages 0 int capacity 4 cout lt lt pageFaults pages n capacity return 0 Python FIFO sayfasinin Python3 uygulamasi Isletim Sistemlerinde degistirme from queue import Queue FIFO kullanarak sayfa hatalarini bulma islevi def pageFaults pages n capacity Mevcut sayfalari temsil etmek icin Bir sayfanin kumede olup olmadigini hizli bir sekilde kontrol etmek icin set kullaniyoruz s set Sayfalari FIFO tarzinda saklamak icin indexes Queue Ilk sayfadan baslayin page faults 0 for i in range n Setin daha fazla sayfa tutup tutamayacagini kontrol edin if len s lt capacity Zaten yoksa sayfa hatasini temsil eden sete ekleyin if pages i not in s s add pages i Sayfa hatalarini artirin page faults 1 Mevcut sayfayi kuyruga itin indexes put pages i Kume doluysa FIFO gerceklestirmeniz gerekir yani kuyrugun ilk sayfasini kumeden kaldirin ve her ikisini de siraya koyun ve gecerli sayfayi ekleyin else Mevcut sayfanin sette zaten mevcut olup olmadigini kontrol edin if pages i not in s Siradan ilk sayfayi ac val indexes queue 0 indexes get Dizinler sayfasini kaldirin s remove val mevcut sayfayi ekle s add pages i mevcut sayfayi kuyruga it indexes put pages i Sayfa hatalarini artirin page faults 1 return page faults Kodu calistirin if name main pages 7 0 1 2 0 3 0 4 2 3 0 3 2 n len pages capacity 4 print pageFaults pages n capacity Disk denetleyicileri FIFO yu disk I O isteklerine hizmet verilecek sirayi belirlemek icin bir disk zamanlama algoritmasi olarak kullanabilmektedir Burada daha once bahsedilen CPU zamanlamasinda oldugu gibi ayni FCFS baslatmasi ile de bilinmektedir Bilgisayar aglarinda kullanilan iletisim agi kopruleri anahtarlari ve yonlendiricileri veri paketlerini bir sonraki hedeflerine dogru yolda tutmak icin FIFO lari kullanmaktadir Tipik olarak ag baglantisi basina en az bir FIFO yapisi kullanilmaktadir Bazi cihazlarda farkli bilgi turlerini eszamanli ve bagimsiz olarak siraya koymak icin birden cok FIFO bulunmaktadir Kaynakca www omurserdar com 25 Mayis 2021 tarihinde kaynagindan arsivlendi Erisim tarihi 25 Mayis 2021 Packet Queueing and Scheduling Ingilizce Morgan Kaufmann 1 Ocak 2018 ISBN 978 0 12 800737 2 25 Mayis 2021 tarihinde kaynagindan Erisim tarihi 25 Mayis 2021 a b Tanenbaum Andrew S 2015 Modern operating systems Fourth edition Boston ISBN 978 0 13 359162 0 OCLC 870646449 26 Agustos 2022 tarihinde kaynagindan Erisim tarihi 25 Mayis 2021 Kruse Robert L 1987 Data structures and program design 2nd ed Englewood Cliffs N J Prentice Hall ISBN 0 13 195884 4 OCLC 13823328 a b GeeksforGeeks Ingilizce 17 Haziran 2017 20 Haziran 2017 tarihinde kaynagindan arsivlendi Erisim tarihi 25 Mayis 2021 Kurose James F 2006 Computer networking complete package 3rd ed rev Keith W Ross Harlow Addison Wesley ISBN 0 321 41849 2 OCLC 70403052