फीफो (कंप्यूटिंग और इलेक्ट्रॉनिक्स): Difference between revisions

From Vigyanwiki
(Created page with "{{Short description|Scheduling algorithm, the first piece of data inserted into a queue is processed first}} {{more citations needed|date=March 2015}} file:Data Queue.svg|th...")
 
No edit summary
Line 1: Line 1:
{{Short description|Scheduling algorithm, the first piece of data inserted into a queue is processed first}}
{{Short description|Scheduling algorithm, the first piece of data inserted into a queue is processed first}}
{{more citations needed|date=March 2015}}
[[file:Data Queue.svg|thumb|एक फीफो कतार का प्रतिनिधित्व]]कंप्यूटिंग और [[ सिस्टम सिद्धांत ]] में, '''फीफो फर्स्ट इन, फर्स्ट आउट''' (फर्स्ट इन द फर्स्ट आउट) के लिए एक संक्षिप्त शब्द है, डेटा संरचना (अक्सर, विशेष रूप से [[डेटा बफर]]) के हेरफेर को व्यवस्थित करने के लिए एक विधि जहां सबसे पुराना (पहला) ) प्रविष्टि, या कतार के प्रमुख (डेटा संरचना), को पहले संसाधित किया जाता है।
[[file:Data Queue.svg|thumb|एक फीफो कतार का प्रतिनिधित्व]]कंप्यूटिंग और [[ सिस्टम सिद्धांत ]] में, फीफो फर्स्ट इन, फर्स्ट आउट (फर्स्ट इन द फर्स्ट आउट) के लिए एक संक्षिप्त शब्द है, डेटा संरचना (अक्सर, विशेष रूप से [[डेटा बफर]]) के हेरफेर को व्यवस्थित करने के लिए एक विधि जहां सबसे पुराना (पहला) ) प्रविष्टि, या कतार के प्रमुख (डेटा संरचना), को पहले संसाधित किया जाता है।


इस तरह की प्रोसेसिंग पहले आओ, पहले पाओ (FCFS) के आधार पर [[कतार क्षेत्र]] में लोगों की सेवा करने के अनुरूप है, यानी उसी क्रम में जिसमें वे कतार की पूंछ पर पहुंचते हैं।
इस तरह की प्रोसेसिंग पहले आओ, पहले पाओ (एफसीएफएस ) के आधार पर [[कतार क्षेत्र]] में लोगों की सेवा करने के अनुरूप है, यानी उसी क्रम में जिसमें वे कतार की पूंछ पर पहुंचते हैं।


एफसीएफएस फीफो [[ निर्धारण (कंप्यूटिंग) ]] एल्गोरिथम के लिए [[शब्दजाल]] शब्द भी है, जो प्रत्येक प्रक्रिया को [[सेंट्रल प्रोसेसिंग यूनिट]] (सीपीयू) समय उस क्रम में देता है जिसमें इसकी मांग की जाती है।<ref name="TanenbaumBos2015">{{cite book|author1=Andrew S. Tanenbaum|author2=Herbert Bos|title=आधुनिक ऑपरेटिंग सिस्टम|url=https://books.google.com/books?id=9gqnngEACAAJ|year=2015|publisher=Pearson|isbn=978-0-13-359162-0}}</ref> FIFO का विपरीत है LIFO (कंप्यूटिंग), लास्ट-इन-फर्स्ट-आउट, जहां सबसे कम उम्र की प्रविष्टि या स्टैक के शीर्ष को पहले संसाधित किया जाता है।<ref name="Kruse">{{ cite book | last = Kruse | first = Robert L. | title = डेटा संरचनाएं और कार्यक्रम डिजाइन (दूसरा संस्करण)| edition = second (hc) textbook | orig-year = 1984 | year = 1987 | others = Joan L. Stone, Kenny Beck, Ed O'Dougherty (production process staff workers) | publisher = Prentice-Hall, Inc. div. of Simon & Schuster | location = Englewood Cliffs, New Jersey 07632 | isbn = 0-13-195884-4 | pages = 150 | url-access = registration | url = https://archive.org/details/datastructurespr0000krus_n1p0/page/150 }}</ref> एक [[प्राथमिकता कतार]] न तो FIFO या LIFO है, बल्कि अस्थायी रूप से या डिफ़ॉल्ट रूप से समान व्यवहार अपना सकती है। कतारबद्ध सिद्धांत डेटा संरचनाओं को संसाधित करने के साथ-साथ सख्त-फीफो कतारों के बीच बातचीत के लिए इन विधियों को शामिल करता है।
एफसीएफएस फीफो [[ निर्धारण (कंप्यूटिंग) ]] एल्गोरिथम के लिए [[शब्दजाल]] शब्द भी है, जो प्रत्येक प्रक्रिया को [[सेंट्रल प्रोसेसिंग यूनिट]] (सीपीयू) समय में उस क्रम में देता है जिसमें इसकी मांग की जाती है।<ref name="TanenbaumBos2015">{{cite book|author1=Andrew S. Tanenbaum|author2=Herbert Bos|title=आधुनिक ऑपरेटिंग सिस्टम|url=https://books.google.com/books?id=9gqnngEACAAJ|year=2015|publisher=Pearson|isbn=978-0-13-359162-0}}</ref> एफआईएफओ का विपरीत है एलआईएफओ (कंप्यूटिंग), लास्ट-इन-फर्स्ट-आउट, जहां सबसे कम उम्र की प्रविष्टि या स्टैक के शीर्ष को पहले संसाधित किया जाता है।<ref name="Kruse">{{ cite book | last = Kruse | first = Robert L. | title = डेटा संरचनाएं और कार्यक्रम डिजाइन (दूसरा संस्करण)| edition = second (hc) textbook | orig-year = 1984 | year = 1987 | others = Joan L. Stone, Kenny Beck, Ed O'Dougherty (production process staff workers) | publisher = Prentice-Hall, Inc. div. of Simon & Schuster | location = Englewood Cliffs, New Jersey 07632 | isbn = 0-13-195884-4 | pages = 150 | url-access = registration | url = https://archive.org/details/datastructurespr0000krus_n1p0/page/150 }}</ref> एक [[प्राथमिकता कतार]] न तो एफआईएफओ या एलआईएफओ है, जोकि अस्थायी रूप से या डिफ़ॉल्ट रूप से समान व्यवहार अपना सकती है। कतारबद्ध सिद्धांत डेटा संरचनाओं को संसाधित करने के साथ-साथ सख्त-एफआईएफओ कतारों के बीच बातचीत के लिए इन विधियों को सम्मलित करता है।


== कंप्यूटर विज्ञान ==
== कंप्यूटर विज्ञान ==
[[file:Fifo queue.png|thumb|300px|एनक्यू और डीक्यू ऑपरेशंस के साथ एक फीफो कतार का प्रतिनिधित्व।]]आवेदन के आधार पर, एक फीफो को हार्डवेयर शिफ्ट रजिस्टर के रूप में या विभिन्न मेमोरी संरचनाओं का उपयोग करके, आमतौर पर एक परिपत्र बफर या एक प्रकार की [[सूची (सार डेटा प्रकार)]] के रूप में लागू किया जा सकता है। अमूर्त डेटा संरचना के बारे में जानकारी के लिए, कतार (डेटा संरचना) देखें। FIFO कतार के अधिकांश सॉफ़्टवेयर कार्यान्वयन थ्रेड सुरक्षित नहीं हैं और डेटा संरचना श्रृंखला को एक समय में केवल एक थ्रेड द्वारा हेरफेर किया जा रहा है, यह सत्यापित करने के लिए लॉकिंग तंत्र की आवश्यकता होती है।
[[file:Fifo queue.png|thumb|300px|एनक्यू और डीक्यू ऑपरेशंस के साथ एक फीफो कतार का प्रतिनिधित्व।]]आवेदन के आधार पर, एक एफआईएफओ को हार्डवेयर शिफ्ट रजिस्टर के रूप में या विभिन्न मेमोरी संरचनाओं का उपयोग करके, आमतौर पर एक परिपत्र बफर या एक प्रकार की [[सूची (सार डेटा प्रकार)]] के रूप में लागू किया जा सकता है। अमूर्त डेटा संरचना के बारे में सूचना के लिए, कतार (डेटा संरचना) को देखें। एफआईएफओ कतार के अधिकांश सॉफ़्टवेयर कार्यान्वयन थ्रेड सुरक्षित नहीं होते हैं और डेटा संरचना श्रृंखला को एक समय में केवल एक थ्रेड द्वारा हेरफेर कि जाता है, यह सत्यापित करने के लिए लॉकिंग प्रणाली की आवश्यकता होती है।


निम्न कोड एक लिंक की गई सूची FIFO [[C++]] भाषा कार्यान्वयन दिखाता है। व्यवहार में, लोकप्रिय यूनिक्स सिस्टम C sys/queue.h मैक्रोज़ या C++ [[मानक टेम्पलेट लाइब्रेरी]] std::list टेम्प्लेट सहित कई सूची कार्यान्वयन मौजूद हैं, जो डेटा संरचना को स्क्रैच से लागू करने की आवश्यकता से बचते हैं।
निम्न कोड एक लिंक की गई सूची एफआईएफओ [[C++|सी ++]] भाषा का कार्यान्वयन दिखाता है। व्यवहार में, लोकप्रिय यूनिक्स सिस्टम सी  एसवाईएस /क्यू एच  मैक्रोज़ या सी ++ [[मानक टेम्पलेट लाइब्रेरी]] एसटीडी::लिस्ट  टेम्प्लेट सहित कई सूची कार्यान्वयन में मौजूद होती  हैं, जो डेटा संरचना को स्क्रैच से लागू करने की आवश्यकता से बचते हैं।


<syntaxhighlight lang="cpp">
कंप्यूटिंग वातावरण में जो [[पाइप और फिल्टर]] का समर्थन करते हैं। इंटरप्रोसेस संचार के लिए पाइप-एंड-फिल्टर मॉडल, एक एफआईएफओ [[नामित पाइप]] का दूसरा नाम  होता है।
#include <memory>
#include <stdexcept>


using namespace std;
डिस्क नियंत्रक एफआईएफओ को आई/शेड्यूलिंग एल्गोरिथम के रूप में उपयोग करते हैं जिससे की  डिस्क इनपुट/आउटपुट आई/अनुरोधों को सेवा देने का क्रम निर्धारित करता है, जहां इसे एफसीएफएस इनिशियलिज़्म द्वारा भी जाना जाता है जैसा कि पहले सीपीयू शेड्यूलिंग के लिए उल्लेखित किया गया था।<ref name="TanenbaumBos2015"/>
 
template <typename T>
class FIFO {
    struct Node {
        T value;
        shared_ptr<Node> next = nullptr;
 
        Node(T _value): value(_value) {}
    };
 
    shared_ptr<Node> front = nullptr;
    shared_ptr<Node> back  = nullptr;
 
public:
    void enqueue(T _value) {
        if (front == nullptr) {
            front = make_shared<Node>(_value);
            back = front;
        } else {
            back->next = make_shared<Node>(_value);
            back = back->next;
        }
    }
 
    T dequeue() {
        if (front == nullptr)
            throw underflow_error("Nothing to dequeue");
 
        T value = front->value;
        front = move(front->next);
       
        return value;
    }
};
</syntaxhighlight>
कंप्यूटिंग वातावरण में जो [[पाइप और फिल्टर]] का समर्थन करते हैं। इंटरप्रोसेस संचार के लिए पाइप-एंड-फिल्टर मॉडल, एक FIFO [[नामित पाइप]] का दूसरा नाम है।
 
डिस्क नियंत्रक FIFO को I/O शेड्यूलिंग एल्गोरिथम के रूप में उपयोग कर सकते हैं ताकि डिस्क इनपुट/आउटपुट|I/O अनुरोधों को सेवा देने का क्रम निर्धारित किया जा सके, जहां इसे उसी FCFS इनिशियलिज़्म द्वारा भी जाना जाता है जैसा कि पहले उल्लेखित CPU शेड्यूलिंग के लिए है।<ref name="TanenbaumBos2015"/>
 
[[ संगणक संजाल ]] में उपयोग किए जाने वाले संचार [[नेटवर्क ब्रिज]], [[ प्रसार बदलना ]] और [[नेटवर्क राउटर]] अपने अगले गंतव्य के मार्ग में डेटा पैकेट रखने के लिए FIFO का उपयोग करते हैं। आमतौर पर प्रति नेटवर्क कनेक्शन में कम से कम एक फीफो संरचना का उपयोग किया जाता है। कुछ डिवाइस एक साथ और स्वतंत्र रूप से विभिन्न प्रकार की सूचनाओं को कतारबद्ध करने के लिए कई FIFO की सुविधा देते हैं।<ref name="KuroseRoss2006">{{cite book|author1=James F. Kurose|author2=Keith W. Ross|title=Computer Networking: A Top-Down Approach|url=https://books.google.com/books?id=QXIwPwAACAAJ|date=July 2006|publisher=Addison-Wesley|isbn=978-0-321-41849-4}}</ref>


[[ संगणक संजाल ]] में उपयोग किए जाने वाले संचार [[नेटवर्क ब्रिज]], [[ प्रसार बदलना ]] और [[नेटवर्क राउटर]] अपने अगले गंतव्य के मार्ग में डेटा पैकेट रखने के लिए एफआईएफओ का उपयोग करते हैं। सामान्यतः  प्रति नेटवर्क कनेक्शन में कम से कम एक एफआईएफओ संरचना का उपयोग किया जाता है। कुछ डिवाइस एक साथ और स्वतंत्र रूप से विभिन्न प्रकार की सूचनाओं को कतारबद्ध करने के लिए कई एफआईएफओ की सुविधा देते हैं।<ref name="KuroseRoss2006">{{cite book|author1=James F. Kurose|author2=Keith W. Ross|title=Computer Networking: A Top-Down Approach|url=https://books.google.com/books?id=QXIwPwAACAAJ|date=July 2006|publisher=Addison-Wesley|isbn=978-0-321-41849-4}}</ref>


== इलेक्ट्रॉनिक्स ==
== इलेक्ट्रॉनिक्स ==
[[file:Fifo schedule.png|thumb|400px|एक फीफो अनुसूची]]हार्डवेयर और सॉफ्टवेयर के बीच बफरिंग और प्रवाह नियंत्रण के लिए आमतौर पर FIFO का उपयोग [[ इलेक्ट्रानिक्स ]] सर्किट में किया जाता है। अपने हार्डवेयर रूप में, एक फीफो में मुख्य रूप से पठन और लेखन [[सूचक (कंप्यूटर प्रोग्रामिंग)]], भंडारण और नियंत्रण तर्क का एक सेट होता है। स्टोरेज [[स्थिर रैंडम एक्सेस मेमोरी]] (SRAM), [[फ्लिप-फ्लॉप (इलेक्ट्रॉनिक्स)]] | फ्लिप-फ्लॉप, लैचेस या स्टोरेज का कोई अन्य उपयुक्त रूप हो सकता है। गैर-तुच्छ आकार के FIFO के लिए, एक दोहरे पोर्ट SRAM का आमतौर पर उपयोग किया जाता है, जहां एक पोर्ट लिखने के लिए और दूसरा पढ़ने के लिए समर्पित होता है।
[[file:Fifo schedule.png|thumb|400px|एक फीफो अनुसूची]]हार्डवेयर और सॉफ्टवेयर के बीच बफरिंग और प्रवाह नियंत्रण के लिए सामान्यतः  एफआईएफओ का उपयोग [[ इलेक्ट्रानिक्स ]] परिपथ  में किया जाता है। अपने हार्डवेयर रूप में, एक एफआईएफओ में मुख्य रूप से पठन और लेखन [[सूचक (कंप्यूटर प्रोग्रामिंग)]], भंडारण और नियंत्रण तर्क का एक समूह होता है। स्टोरेज [[स्थिर रैंडम एक्सेस मेमोरी]] (SRAM), [[फ्लिप-फ्लॉप (इलेक्ट्रॉनिक्स)]], लैचेस या स्टोरेज के कोई अन्य उपयुक्त रूप हो सकते  है। गैर-तुच्छ आकार के एफआईएफओ के लिए, एक दोहरे पोर्ट एस रैम  का सामान्यतः उपयोग किया जाता है, जहां एक पोर्ट लिखने के लिए और दूसरा पढ़ने के लिए समर्पित होता है।


इलेक्ट्रॉनिक्स में लागू किया गया पहला ज्ञात FIFO 1969 में [[फेयरचाइल्ड सेमीकंडक्टर]] में पीटर अल्फके द्वारा किया गया था।<ref name="Alfke">{{cite web| url = http://www.fpga-faq.com/archives/10775.html#10794| title = Peter Alfke's post at comp.arch.fpga on 19 Jun 1998}}</ref> अल्फ्के बाद में [[Xilinx]] में निदेशक थे।
इलेक्ट्रॉनिक्स में लागू किया गया पहला ज्ञात एफआईएफओ 1969 में [[फेयरचाइल्ड सेमीकंडक्टर]] में पीटर अल्फके द्वारा किया गया था।<ref name="Alfke">{{cite web| url = http://www.fpga-faq.com/archives/10775.html#10794| title = Peter Alfke's post at comp.arch.fpga on 19 Jun 1998}}</ref> पिटर अल्फ्के बाद में [[Xilinx]] में निदेशक थे।


=== समकालिकता ===
=== समकालिकता ===
एक तुल्यकालिक फीफो एक फीफो है जहां पढ़ने और लिखने दोनों के लिए एक ही घड़ी का उपयोग किया जाता है। एक अतुल्यकालिक फीफो पढ़ने और लिखने के लिए अलग-अलग घड़ियों का उपयोग करता है और वे [[ metastability ]] मुद्दों को पेश कर सकते हैं। अतुल्यकालिक फीफो का एक सामान्य कार्यान्वयन विश्वसनीय ध्वज निर्माण सुनिश्चित करने के लिए पढ़ने और लिखने के संकेतकों के लिए एक [[ग्रे कोड]] (या किसी इकाई दूरी कोड) का उपयोग करता है। फ़्लैग जनरेशन से संबंधित एक और नोट यह है कि अतुल्यकालिक FIFO कार्यान्वयन के लिए फ़्लैग उत्पन्न करने के लिए आवश्यक रूप से पॉइंटर अंकगणित का उपयोग करना चाहिए। इसके विपरीत, सिंक्रोनस फीफो कार्यान्वयन में झंडे उत्पन्न करने के लिए या तो एक टपका हुआ बाल्टी दृष्टिकोण या सूचक अंकगणित का उपयोग कर सकता है।
एक तुल्यकालिक फीफो एक फीफो है जहां पढ़ने और लिखने दोनों के लिए एक ही घड़ी का उपयोग किया जाता है। एक अतुल्यकालिक फीफो पढ़ने और लिखने के लिए अलग-अलग घड़ियों का उपयोग करता है और वे [[ metastability | metastability]] अभिप्रायो  को प्रस्तुत करते हैं। अतुल्यकालिक फीफो का एक सामान्य कार्यान्वयन विश्वसनीय फ़्लैग निर्माण सुनिश्चित करने के लिए पढ़ने और लिखने के संकेतकों के लिए एक [[ग्रे कोड]] (या किसी इकाई दूरी कोड) का उपयोग करता है। फ़्लैग जनरेशन से संबंधित एक और नोट यह है कि अतुल्यकालिक एफआईएफओ कार्यान्वयन के लिए फ़्लैग उत्पन्न करने के लिए आवश्यक रूप से एक अंकगणित संकेतक  का उपयोग किया जाता है। इसके विपरीत, सिंक्रोनस फीफो कार्यान्वयन में झंडे उत्पन्न करने के लिए या तो एक लीक बकेट  दृष्टिकोण या सूचक अंकगणित का उपयोग करता है।


एक हार्डवेयर FIFO का उपयोग तुल्यकालन उद्देश्यों के लिए किया जाता है। इसे अक्सर एक [[गोलाकार कतार]] के रूप में कार्यान्वित किया जाता है, और इस प्रकार दो पॉइंटर (कंप्यूटर प्रोग्रामिंग) होते हैं:
एक हार्डवेयर एफआईएफओ का उपयोग तुल्यकालन उद्देश्यों के लिए किया जाता है। इसे अक्सर एक [[गोलाकार कतार]] के रूप में कार्यान्वित किया जाता है, और इस प्रकार दो पॉइंटर (कंप्यूटर प्रोग्रामिंग) होते हैं:
* सूचक पढ़ें / पता रजिस्टर पढ़ें
* सूचक पढ़ें / पता रजिस्टर पढ़ें
* सूचक लिखें / पता रजिस्टर लिखें
* सूचक लिखें / पता रजिस्टर लिखें
Line 73: Line 31:
=== स्थिति झंडे ===
=== स्थिति झंडे ===


फीफो स्थिति झंडे के उदाहरणों में शामिल हैं: पूर्ण, खाली, लगभग भरा हुआ और लगभग खाली। जब रीड एड्रेस रजिस्टर राइट एड्रेस रजिस्टर तक पहुंचता है तो एक FIFO खाली होता है। एक FIFO तब भर जाता है जब राइट एड्रेस रजिस्टर रीड एड्रेस रजिस्टर तक पहुँच जाता है। पढ़ने और लिखने के पते प्रारंभ में पहले स्मृति स्थान पर होते हैं और FIFO कतार खाली होती है।
फीफो स्थिति झंडे के उदाहरणों में शामिल हैं: पूर्ण, खाली, लगभग भरा हुआ और लगभग खाली। जब रीड एड्रेस रजिस्टर राइट एड्रेस रजिस्टर तक पहुंचता है तो एक एफआईएफओ खाली होता है। एक एफआईएफओ तब भर जाता है जब राइट एड्रेस रजिस्टर रीड एड्रेस रजिस्टर तक पहुँच जाता है। पढ़ने और लिखने के पते प्रारंभ में पहले मेमोरी स्थान पर होते हैं और एफआईएफओ कतार खाली होती है।


दोनों ही मामलों में, पढ़ने और लिखने के पते बराबर होते हैं। दो स्थितियों के बीच अंतर करने के लिए, एक सरल और मजबूत समाधान प्रत्येक पढ़ने और लिखने के पते के लिए एक अतिरिक्त [[ अंश ]] जोड़ना है जो हर बार पता लपेटने पर उलटा होता है। इस सेट अप के साथ, असंबद्धता शर्तें हैं:
दोनों ही मामलों में, पढ़ने और लिखने के पते बराबर होते हैं। दो स्थितियों के बीच अंतर करने के लिए, एक सरल और मजबूत समाधान प्रत्येक पढ़ने और लिखने के पते के लिए एक अतिरिक्त [[ अंश | अंश]] को जोड़ता  है जो हर बार पता इन्वर्ट होने पर उलटा होता है। इस सेट अप के साथ, असंबद्धता शर्तें होती हैं:
* जब रीड एड्रेस रजिस्टर राइट एड्रेस रजिस्टर के बराबर होता है, तो FIFO खाली होता है।
* जब रीड एड्रेस रजिस्टर राइट एड्रेस रजिस्टर के बराबर होता है, तो एफआईएफओ खाली होता है।
* जब पढ़ने और लिखने का [[पता रजिस्टर]] केवल अतिरिक्त बिट नंबरिंग # सबसे महत्वपूर्ण बिट में भिन्न होता है और बाकी समान होते हैं, तो FIFO भरा हुआ होता है।
* जब पढ़ने और लिखने के  [[पता रजिस्टर|पते के रजिस्टर]] केवल अतिरिक्त सबसे महत्वपूर्ण बिट में भिन्न होते  है और बाकी समान होते हैं, तो एफआईएफओ भरा होता है।


== यह भी देखें ==
== यह भी देखें ==
Line 90: Line 48:
== बाहरी संबंध ==
== बाहरी संबंध ==
 
 
* [http://www.sunburst-design.com/papers/CummingsSNUG2002SJ_FIFO2.pdf Cummings et al.,  Simulation and Synthesis Techniques for Asynchronous FIFO Design with Asynchronous Pointer Comparisons, SNUG San Jose 2002]
* [http://www.sunburst-design.com/papers/CummingsSNUG2002SJ_FIFO2.pdf Cummings et al.,  Simulation and Synthesis Techniques for Asynchronous एफआईएफओ Design with Asynchronous Pointer Comparisons, SNUG San Jose 2002]


{{Authority control}}
{{Authority control}}

Revision as of 01:32, 17 June 2023

एक फीफो कतार का प्रतिनिधित्व

कंप्यूटिंग और सिस्टम सिद्धांत में, फीफो फर्स्ट इन, फर्स्ट आउट (फर्स्ट इन द फर्स्ट आउट) के लिए एक संक्षिप्त शब्द है, डेटा संरचना (अक्सर, विशेष रूप से डेटा बफर) के हेरफेर को व्यवस्थित करने के लिए एक विधि जहां सबसे पुराना (पहला) ) प्रविष्टि, या कतार के प्रमुख (डेटा संरचना), को पहले संसाधित किया जाता है।

इस तरह की प्रोसेसिंग पहले आओ, पहले पाओ (एफसीएफएस ) के आधार पर कतार क्षेत्र में लोगों की सेवा करने के अनुरूप है, यानी उसी क्रम में जिसमें वे कतार की पूंछ पर पहुंचते हैं।

एफसीएफएस फीफो निर्धारण (कंप्यूटिंग) एल्गोरिथम के लिए शब्दजाल शब्द भी है, जो प्रत्येक प्रक्रिया को सेंट्रल प्रोसेसिंग यूनिट (सीपीयू) समय में उस क्रम में देता है जिसमें इसकी मांग की जाती है।[1] एफआईएफओ का विपरीत है एलआईएफओ (कंप्यूटिंग), लास्ट-इन-फर्स्ट-आउट, जहां सबसे कम उम्र की प्रविष्टि या स्टैक के शीर्ष को पहले संसाधित किया जाता है।[2] एक प्राथमिकता कतार न तो एफआईएफओ या एलआईएफओ है, जोकि अस्थायी रूप से या डिफ़ॉल्ट रूप से समान व्यवहार अपना सकती है। कतारबद्ध सिद्धांत डेटा संरचनाओं को संसाधित करने के साथ-साथ सख्त-एफआईएफओ कतारों के बीच बातचीत के लिए इन विधियों को सम्मलित करता है।

कंप्यूटर विज्ञान

एनक्यू और डीक्यू ऑपरेशंस के साथ एक फीफो कतार का प्रतिनिधित्व।

आवेदन के आधार पर, एक एफआईएफओ को हार्डवेयर शिफ्ट रजिस्टर के रूप में या विभिन्न मेमोरी संरचनाओं का उपयोग करके, आमतौर पर एक परिपत्र बफर या एक प्रकार की सूची (सार डेटा प्रकार) के रूप में लागू किया जा सकता है। अमूर्त डेटा संरचना के बारे में सूचना के लिए, कतार (डेटा संरचना) को देखें। एफआईएफओ कतार के अधिकांश सॉफ़्टवेयर कार्यान्वयन थ्रेड सुरक्षित नहीं होते हैं और डेटा संरचना श्रृंखला को एक समय में केवल एक थ्रेड द्वारा हेरफेर कि जाता है, यह सत्यापित करने के लिए लॉकिंग प्रणाली की आवश्यकता होती है।

निम्न कोड एक लिंक की गई सूची एफआईएफओ सी ++ भाषा का कार्यान्वयन दिखाता है। व्यवहार में, लोकप्रिय यूनिक्स सिस्टम सी एसवाईएस /क्यू एच मैक्रोज़ या सी ++ मानक टेम्पलेट लाइब्रेरी एसटीडी::लिस्ट टेम्प्लेट सहित कई सूची कार्यान्वयन में मौजूद होती हैं, जो डेटा संरचना को स्क्रैच से लागू करने की आवश्यकता से बचते हैं।

कंप्यूटिंग वातावरण में जो पाइप और फिल्टर का समर्थन करते हैं। इंटरप्रोसेस संचार के लिए पाइप-एंड-फिल्टर मॉडल, एक एफआईएफओ नामित पाइप का दूसरा नाम होता है।

डिस्क नियंत्रक एफआईएफओ को आई/ओ शेड्यूलिंग एल्गोरिथम के रूप में उपयोग करते हैं जिससे की डिस्क इनपुट/आउटपुट आई/ओ अनुरोधों को सेवा देने का क्रम निर्धारित करता है, जहां इसे एफसीएफएस इनिशियलिज़्म द्वारा भी जाना जाता है जैसा कि पहले सीपीयू शेड्यूलिंग के लिए उल्लेखित किया गया था।[1]

संगणक संजाल में उपयोग किए जाने वाले संचार नेटवर्क ब्रिज, प्रसार बदलना और नेटवर्क राउटर अपने अगले गंतव्य के मार्ग में डेटा पैकेट रखने के लिए एफआईएफओ का उपयोग करते हैं। सामान्यतः प्रति नेटवर्क कनेक्शन में कम से कम एक एफआईएफओ संरचना का उपयोग किया जाता है। कुछ डिवाइस एक साथ और स्वतंत्र रूप से विभिन्न प्रकार की सूचनाओं को कतारबद्ध करने के लिए कई एफआईएफओ की सुविधा देते हैं।[3]

इलेक्ट्रॉनिक्स

एक फीफो अनुसूची

हार्डवेयर और सॉफ्टवेयर के बीच बफरिंग और प्रवाह नियंत्रण के लिए सामान्यतः एफआईएफओ का उपयोग इलेक्ट्रानिक्स परिपथ में किया जाता है। अपने हार्डवेयर रूप में, एक एफआईएफओ में मुख्य रूप से पठन और लेखन सूचक (कंप्यूटर प्रोग्रामिंग), भंडारण और नियंत्रण तर्क का एक समूह होता है। स्टोरेज स्थिर रैंडम एक्सेस मेमोरी (SRAM), फ्लिप-फ्लॉप (इलेक्ट्रॉनिक्स), लैचेस या स्टोरेज के कोई अन्य उपयुक्त रूप हो सकते है। गैर-तुच्छ आकार के एफआईएफओ के लिए, एक दोहरे पोर्ट एस रैम का सामान्यतः उपयोग किया जाता है, जहां एक पोर्ट लिखने के लिए और दूसरा पढ़ने के लिए समर्पित होता है।

इलेक्ट्रॉनिक्स में लागू किया गया पहला ज्ञात एफआईएफओ 1969 में फेयरचाइल्ड सेमीकंडक्टर में पीटर अल्फके द्वारा किया गया था।[4] पिटर अल्फ्के बाद में Xilinx में निदेशक थे।

समकालिकता

एक तुल्यकालिक फीफो एक फीफो है जहां पढ़ने और लिखने दोनों के लिए एक ही घड़ी का उपयोग किया जाता है। एक अतुल्यकालिक फीफो पढ़ने और लिखने के लिए अलग-अलग घड़ियों का उपयोग करता है और वे metastability अभिप्रायो को प्रस्तुत करते हैं। अतुल्यकालिक फीफो का एक सामान्य कार्यान्वयन विश्वसनीय फ़्लैग निर्माण सुनिश्चित करने के लिए पढ़ने और लिखने के संकेतकों के लिए एक ग्रे कोड (या किसी इकाई दूरी कोड) का उपयोग करता है। फ़्लैग जनरेशन से संबंधित एक और नोट यह है कि अतुल्यकालिक एफआईएफओ कार्यान्वयन के लिए फ़्लैग उत्पन्न करने के लिए आवश्यक रूप से एक अंकगणित संकेतक का उपयोग किया जाता है। इसके विपरीत, सिंक्रोनस फीफो कार्यान्वयन में झंडे उत्पन्न करने के लिए या तो एक लीक बकेट दृष्टिकोण या सूचक अंकगणित का उपयोग करता है।

एक हार्डवेयर एफआईएफओ का उपयोग तुल्यकालन उद्देश्यों के लिए किया जाता है। इसे अक्सर एक गोलाकार कतार के रूप में कार्यान्वित किया जाता है, और इस प्रकार दो पॉइंटर (कंप्यूटर प्रोग्रामिंग) होते हैं:

  • सूचक पढ़ें / पता रजिस्टर पढ़ें
  • सूचक लिखें / पता रजिस्टर लिखें

स्थिति झंडे

फीफो स्थिति झंडे के उदाहरणों में शामिल हैं: पूर्ण, खाली, लगभग भरा हुआ और लगभग खाली। जब रीड एड्रेस रजिस्टर राइट एड्रेस रजिस्टर तक पहुंचता है तो एक एफआईएफओ खाली होता है। एक एफआईएफओ तब भर जाता है जब राइट एड्रेस रजिस्टर रीड एड्रेस रजिस्टर तक पहुँच जाता है। पढ़ने और लिखने के पते प्रारंभ में पहले मेमोरी स्थान पर होते हैं और एफआईएफओ कतार खाली होती है।

दोनों ही मामलों में, पढ़ने और लिखने के पते बराबर होते हैं। दो स्थितियों के बीच अंतर करने के लिए, एक सरल और मजबूत समाधान प्रत्येक पढ़ने और लिखने के पते के लिए एक अतिरिक्त अंश को जोड़ता है जो हर बार पता इन्वर्ट होने पर उलटा होता है। इस सेट अप के साथ, असंबद्धता शर्तें होती हैं:

  • जब रीड एड्रेस रजिस्टर राइट एड्रेस रजिस्टर के बराबर होता है, तो एफआईएफओ खाली होता है।
  • जब पढ़ने और लिखने के पते के रजिस्टर केवल अतिरिक्त सबसे महत्वपूर्ण बिट में भिन्न होते है और बाकी समान होते हैं, तो एफआईएफओ भरा होता है।

यह भी देखें

संदर्भ

  1. 1.0 1.1 Andrew S. Tanenbaum; Herbert Bos (2015). आधुनिक ऑपरेटिंग सिस्टम. Pearson. ISBN 978-0-13-359162-0.
  2. Kruse, Robert L. (1987) [1984]. डेटा संरचनाएं और कार्यक्रम डिजाइन (दूसरा संस्करण). Joan L. Stone, Kenny Beck, Ed O'Dougherty (production process staff workers) (second (hc) textbook ed.). Englewood Cliffs, New Jersey 07632: Prentice-Hall, Inc. div. of Simon & Schuster. p. 150. ISBN 0-13-195884-4.{{cite book}}: CS1 maint: location (link)
  3. James F. Kurose; Keith W. Ross (July 2006). Computer Networking: A Top-Down Approach. Addison-Wesley. ISBN 978-0-321-41849-4.
  4. "Peter Alfke's post at comp.arch.fpga on 19 Jun 1998".


बाहरी संबंध