~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 3B47277D6D32323EBE452281EB3377B5__1712353860 ✰
Заголовок документа оригинал.:
✰ FIFO (computing and electronics) - Wikipedia ✰
Заголовок документа перевод.:
✰ ФИФО (вычисления и электроника) — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/FIFO_(computing_and_electronics) ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/3b/b5/3b47277d6d32323ebe452281eb3377b5.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/3b/b5/3b47277d6d32323ebe452281eb3377b5__translat.html ✰
Дата и время сохранения документа:
✰ 20.06.2024 18:42:12 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 6 April 2024, at 00:51 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

ФИФО (вычисления и электроника) — Википедия Jump to content

ФИФО (вычисления и электроника)

Из Википедии, бесплатной энциклопедии
Представление очереди FIFO

В вычислительной технике и в теории систем « first in, first out» первым пришел — первым вышел), сокращенно FIFO ( , — это метод организации манипуляций со структурой данных (часто, конкретно с буфером данных ), где самый старый (первый) ) запись, или «голова» очереди , обрабатывается первой.

Такая обработка аналогична обслуживанию людей в зоне очереди в порядке очереди (FCFS), т.е. в той же последовательности, в которой они достигают хвоста очереди.

FCFS — это также жаргонный FIFO термин, обозначающий алгоритм планирования операционной системы , который выделяет время центральному процессору (ЦП) каждому процессу в том порядке, в котором оно требуется. [1] Противоположностью FIFO является LIFO , «последним пришел — первым обслужен», где самая младшая запись или «верхушка стека» обрабатывается первой. [2] Очередь с приоритетами не является ни FIFO, ни LIFO, но может временно или по умолчанию действовать аналогично. Теория массового обслуживания охватывает эти методы обработки структур данных , а также взаимодействие между очередями строгого FIFO.

Информатика [ править ]

Представление очереди FIFO с операциями постановки и удаления из очереди.

В зависимости от приложения FIFO может быть реализован как аппаратный регистр сдвига или использовать различные структуры памяти, обычно кольцевой буфер или своего рода список . Информацию об абстрактной структуре данных см. в разделе Очередь (структура данных) . Большинство программных реализаций очереди FIFO не являются потокобезопасными и требуют механизма блокировки для проверки того, что цепочкой структур данных управляет только один поток за раз.

В следующем коде показана реализация связанного списка FIFO на языке C++ . На практике существует ряд реализаций списков, включая популярные макросы C sys/queue.h систем Unix или шаблон стандартной библиотеки C++ std::list, что позволяет избежать необходимости реализации структуры данных с нуля.

#include   <memory> 
 #include   <stdException> 

 с использованием   пространства имен   std  ; 

  шаблон   <  имя типа   T  > 
 класс   FIFO   { 
     struct   Node   { 
         T   значение  ; 
          shared_ptr  <  узел  >   next   =   nullptr  ; 

          Узел  (  T   _value  )  :   значение  (  _value  )   {} 
     }; 

      shared_ptr  <  узел  >   front   =   nullptr  ; 
      shared_ptr  <  узел  >   назад    =   nullptr  ; 

  public  : 
     void   enqueue  (  T   _value  )   { 
         if   (  front   ==   nullptr  )   { 
             front   =   make_shared  <Node>  _value  (  )  ; 
              сзади   =   спереди  ; 
          }   Еще   { 
             назад  ->  следующий   =   make_shared  <  узел  >  (  _value  ); 
              назад   =   назад  ->  дальше  ; 
          } 
     } 

     T   dequeue  ()   { 
         if   (  front   ==   nullptr  ) 
             throw   underflow_error  (  «Нечего удалять из очереди»  ); 

         Т    Значение   =   передняя часть  ->  значение  ; 
          вперед   =   двигаться  (  вперед  ->  следующий  ); 
        
          возвращаемое   значение  ; 
      } 
 }; 

В вычислительных средах, которые поддерживают модель каналов и фильтров для межпроцессного взаимодействия , FIFO — это другое название именованного канала .

Контроллеры дисков могут использовать FIFO в качестве алгоритма планирования диска для определения порядка обслуживания дисковых запросов ввода-вывода , где это также известно тем же инициализмом FCFS, что и для планирования ЦП, упомянутого ранее. [1]

связи Мосты сетей , коммутаторы и маршрутизаторы , используемые в компьютерных сетях, используют FIFO для хранения пакетов данных на пути к следующему пункту назначения. Обычно для каждого сетевого соединения используется по крайней мере одна структура FIFO. Некоторые устройства имеют несколько FIFO для одновременной и независимой организации очереди различных типов информации. [3]

Электроника [ править ]

График ФИФО

FIFO обычно используются в электронных схемах для буферизации и управления потоками между аппаратным и программным обеспечением. В своей аппаратной форме FIFO в основном состоит из набора указателей чтения и записи , логики хранения и управления. Хранилищем может быть статическая оперативная память (SRAM), триггеры , защелки или любая другая подходящая форма хранения. Для FIFO нетривиального размера обычно используется двухпортовая SRAM, где один порт предназначен для записи, а другой — для чтения.

Первый известный метод FIFO, реализованный в электронике, был предложен Питером Альфке в 1969 году в компании Fairchild Semiconductor . [4] Позже Альфке был директором Xilinx .

Синхронность [ править ]

Синхронный FIFO — это FIFO, в котором одни и те же часы используются как для чтения, так и для записи. Асинхронный FIFO использует разные такты для чтения и записи, и они могут создавать проблемы с метастабильностью . Общая реализация асинхронного FIFO использует код Грея (или любой код единичного расстояния) для указателей чтения и записи, чтобы гарантировать надежную генерацию флагов. Еще одно замечание относительно генерации флагов: для генерации флагов для асинхронных реализаций FIFO необходимо обязательно использовать арифметику указателей. И наоборот, для генерации флагов в синхронных реализациях FIFO можно использовать либо подход с дырявым ведерком , либо арифметику указателей.

Аппаратный FIFO используется для целей синхронизации. Она часто реализуется как циклическая очередь и, таким образом, имеет два указателя :

  • Чтение указателя/чтение адресного регистра
  • Указатель записи/регистр адреса записи

Флаги статуса [ править ]

Примеры флагов состояния FIFO: полный, пустой, почти полный и почти пустой. FIFO пуст, когда регистр адреса чтения достигает регистра адреса записи. FIFO заполняется, когда регистр адреса записи достигает регистра адреса чтения. Адреса чтения и записи изначально находятся в первой ячейке памяти, а очередь FIFO пуста .

В обоих случаях адреса чтения и записи оказываются равными. Чтобы различать эти две ситуации, простым и надежным решением является добавление одного дополнительного бита для каждого адреса чтения и записи, который инвертируется каждый раз при переносе адреса. При такой настройке условия устранения неоднозначности таковы:

  • Когда регистр адреса чтения равен регистру адреса записи, FIFO пуст.
  • Когда регистры адреса чтения и записи различаются только дополнительным старшим битом , а остальные равны, FIFO заполнен.

См. также [ править ]

Ссылки [ править ]

  1. ^ Перейти обратно: а б Эндрю С. Таненбаум; Герберт Бос (2015). Современные операционные системы . Пирсон. ISBN  978-0-13-359162-0 .
  2. ^ Крузе, Роберт Л. (1987) [1984]. Структуры данных и проектирование программ (второе издание) . Джоан Л. Стоун, Кенни Бек, Эд О'Догерти (работники производственного процесса) (второе (hc) издание учебника). Энглвуд Клиффс, Нью-Джерси: Prentice-Hall, Inc., подразделение. Саймон и Шустер. п. 150. ИСБН  0-13-195884-4 .
  3. ^ Джеймс Ф. Куроуз; Кейт В. Росс (июль 2006 г.). Компьютерные сети: нисходящий подход . Аддисон-Уэсли. ISBN  978-0-321-41849-4 .
  4. ^ «Сообщение Питера Альфке на comp.arch.fpga от 19 июня 1998 г.» .

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 3B47277D6D32323EBE452281EB3377B5__1712353860
URL1:https://en.wikipedia.org/wiki/FIFO_(computing_and_electronics)
Заголовок, (Title) документа по адресу, URL1:
FIFO (computing and electronics) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)