Skip to main content

Чому I/O-операції вважаються повільними?

I/O-операції вважаються "повільними", тому що вони залежать від зовнішніх пристроїв чи мереж, а не від процесора. Тобто "повільними" - у порівнянні з операціями в оперативній пам'яті чи CPU.

1. Що відбувається під час I/O

Коли програма виконує, наприклад, читання файлу:

  1. Процесор передає запит операційній системі: «прочитай дані з диска».
  2. ОС передає задачу драйверу пристрою.
  3. Фізичний диск (SSD чи HDD) має:
  • знайти потрібний сектор,
  • зчитати дані,
  • передати їх назад через системну шину в пам'ять.
  1. Тільки потім програма отримує результат.

Це може займати мілісекунди, а для CPU - цілу "вічність" (адже процесор оперує в наносекундах).

2. Типові приклади "повільного" I/O

Тип I/OСередня затримкаЧому повільно
Диск (HDD/SSD)мілісекундипотрібне фізичне читання даних з носія
Мережа (HTTP, TCP)мілісекунди → секундиочікування передачі мережею, відповідь сервера
База данихмілісекундимережеві затримки + виконання запиту на боці БД
Файлова системамілісекундивзаємодія з ОС, доступ до файлових дескрипторів

3. Порівняння з CPU і пам'яттю

Тип операціїЧас (приблизно)
CPU (арифметика, пам'ять)наносекунди (10⁻⁹ с)
Операції з RAMдесятки наносекунд
SSD-дисксотні мікросекунд → мілісекунди
HTTP-запитмілісекунди → сотні мілісекунд

Різниця в мільйони разів між обчисленням у пам'яті й читанням із диска/мережі.

4. Чому це критично в Node.js

Node.js - однопоточний. Якби I/O-операції виконувалися синхронно (блокуюче), то:

  • потік був би зайнятий очікуванням диска чи мережі;
  • інші запити зависали б, поки операція не завершиться.

Тому Node.js використовує неблокуючий асинхронний I/O - операції виконуються у фоні, а коли готові - викликають callback (через Event Loop).

Підсумок

I/O-операції вважаються повільними, тому що вони потребують взаємодії із зовнішніми пристроями чи мережами, де затримки (мілісекунди) на порядки більші за операції в пам'яті (наносекунди). Node.js вирішує цю проблему за допомогою асинхронного неблокуючого введення-виведення, щоб не простоювати під час очікування.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.