Система FIFO
FIFO (First In, First Out — «первым пришёл — первым ушёл») — это метод организации и управления очередью, при котором объект, поступивший в систему раньше других, обрабатывается или используется первым. FIFO является одним из фундаментальных принципов работы с данными, учёта материальных запасов и организации производственных процессов. В информатике FIFO — это абстрактный тип данных (очередь), реализующий дисциплину обслуживания без приоритетов. В бухгалтерии и логистике — метод списания стоимости товарно-материальных ценностей (ТМЦ), при котором первыми списываются запасы, поступившие ранее всего. Принцип FIFO противопоставляется методу LIFO (Last In, First Out — «последним пришёл — первым ушёл»).
История и происхождение
Идея упорядочивания по времени появления восходит к древним практикам управления складами и очередями. В античных храмах и государственных амбарах зерно хранили в силосах, где засыпка нового зерна поверх старого приводила к его порче. Для предотвращения этого использовался принцип «первый вошёл — первый вышел»: сначала расходовали старые запасы, затем новые. В средневековой торговле при складировании скоропортящихся товаров (вино, сыр, рыба) продавцы стремились отпускать покупателям товар, поступивший раньше, чтобы избежать убытков.
Формализация FIFO как математической модели произошла в середине XX века с развитием теории массового обслуживания. В 1950—1960-х годах, когда началось массовое внедрение компьютеров, принцип FIFO стал основой для построения очередей процессов в операционных системах. В СССР метод FIFO активно применялся в плановой экономике для учёта материальных ресурсов, хотя официально он был закреплён в нормативных документах лишь в 1990-х годах, после перехода к рыночным отношениям.
FIFO в информатике
Определение и реализация
В программировании FIFO реализуется через структуру данных очередь (queue). Основные операции:
- enqueue (push) — добавление элемента в конец очереди;
- dequeue (pop) — извлечение элемента из начала очереди.
Очередь FIFO может быть реализована на основе массива (кольцевой буфер) или связного списка. В языках высокого уровня существуют встроенные реализации: queue.Queue в Python, java.util.LinkedList в Java, std::queue в C++.
Применение в вычислительных системах
- Планирование процессов в операционных системах — алгоритм FCFS (First-Come, First-Served). Задачи выполняются в порядке поступления. Прост в реализации, но неэффективен при наличии длительных процессов (эффект конвоя).
- Буферизация данных — FIFO-буферы используются в сетевых картах, контроллерах жёстких дисков, аудио- и видеоустройствах. Например, FIFO-буфер в принтере хранит команды печати в порядке их отправки.
- Асинхронная обработка сообщений — очереди сообщений (RabbitMQ, Apache Kafka, Redis) работают по принципу FIFO, гарантируя порядок доставки.
- Кэширование — алгоритм FIFO используется в кэшах процессора и веб-серверов для вытеснения старых данных при переполнении.
Ограничения
- Отсутствие приоритетов. Если в очереди есть срочная задача, она будет обработана только после всех предыдущих.
- Возможность «зависания» длительных процессов (starvation) — короткие задачи вынуждены ждать.
FIFO в бухгалтерском учёте и логистике
Метод оценки запасов
В бухгалтерии FIFO — один из методов оценки стоимости материально-производственных запасов (МПЗ) при их выбытии. Согласно принципу, первыми списываются те единицы товара, которые поступили на склад раньше всего. Метод применяется как в России (ПБУ 5/01 «Учёт материально-производственных запасов»), так и в международных стандартах (МСФО (IAS) 2 «Запасы»).
Пример расчёта:
- Остаток на начало: 10 единиц по 100 руб.
- Поступление 1: 5 единиц по 120 руб.
- Поступление 2: 5 единиц по 130 руб.
- Продано: 12 единиц.
При методе FIFO себестоимость проданных товаров составит:
- 10 × 100 = 1000 руб.
- 2 × 120 = 240 руб.
- Итого: 1240 руб.
Остаток на складе: 3 единицы по 120 руб. и 5 единиц по 130 руб.
Преимущества и недостатки
- Преимущества: себестоимость реализованной продукции приближена к текущим рыночным ценам (при росте цен — занижает прибыль, при падении — завышает). Остаток на складе оценивается по последним ценам, что более реалистично.
- Недостатки: в условиях инфляции налог на прибыль оказывается выше, чем при методе LIFO (запрещён в РФ с 2008 года). Возможны искажения финансовых результатов при частых колебаниях цен.
Логистика и управление складом
На складах FIFO реализуется через физическое размещение товаров: новые партии ставятся позади старых, или используется система адресного хранения с учётом даты поступления. Это особенно важно для скоропортящихся продуктов (продукты питания, лекарства, химические реактивы). В России требования к соблюдению FIFO для лекарственных средств закреплены в приказе Минздравсоцразвития № 706н.
FIFO в других областях
Производство
В производственных системах (Lean, Toyota Production System) FIFO применяется для организации потоков деталей между операциями. Суть: каждая операция забирает деталь из предыдущей в порядке поступления. Это предотвращает накопление незавершённого производства и упрощает контроль качества (проблемная партия легко отслеживается).
Торговля и обслуживание
- Кассы и очереди — принцип «первый пришёл — первым обслужен» используется в магазинах, банках, аэропортах.
- Биржевая торговля — FIFO применяется для исполнения заявок на некоторых биржах (например, Московская биржа — для заявок с одинаковой ценой).
- Электронная коммерция — обработка заказов в порядке поступления.
Критика и альтернативы
- FIFO неэффективен при высокой вариативности времени обработки (например, в колл-центрах). Для таких случаев применяются алгоритмы с приоритетами (Priority Queue) или Shortest Job First.
- В учёте запасов альтернативами являются метод средней себестоимости и метод ФИФО (в России — только ФИФО и средняя; LIFO запрещён).
- В некоторых системах (например, в распределённых базах данных) строгий FIFO может быть заменён на «примерно FIFO» (best-effort ordering) для повышения производительности.
Интересные факты
- В русском языке термин «ФИФО» (от англ. FIFO) часто используется как калька, хотя в бухгалтерских документах пишется латиницей.
- В операционных системах реального времени (RTOS) FIFO-очереди часто используются для передачи данных между задачами, но с возможностью установки приоритетов.
- В 2023 году в России обсуждался переход на метод средней себестоимости для всех предприятий, но окончательное решение не принято.
- FIFO — один из немногих алгоритмов, который гарантирует отсутствие «голодания» процессов (каждый процесс рано или поздно будет обслужен).
Источники
- Положение по бухгалтерскому учёту «Учёт материально-производственных запасов» (ПБУ 5/01), утверждённое приказом Минфина России от 09.06.2001 № 44н.
- Международный стандарт финансовой отчётности (IAS) 2 «Запасы».
- Таненбаум Э., Бос Х. «Современные операционные системы». — 4-е изд. — СПб.: Питер, 2015.
- Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. «Алгоритмы: построение и анализ». — 3-е изд. — М.: Вильямс, 2013.
- Приказ Минздравсоцразвития РФ от 23.08.2010 № 706н «Об утверждении Правил хранения лекарственных средств».
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →