Він досить часто пов'язаний з кешем сторінок .
Перший раз дані потрібно читати (фізично) з диска.
Вдруге (для не надто великих файлів), ймовірно, він буде сидіти в кеш-пам'яті сторінки.
Таким чином, ви можете видати спочатку таку команду, як cat (1), щоб внести (не занадто великий) файл у кеш сторінки (тобто в оперативній пам'яті), тоді другий греп (1) (або будь-яка програма, що читає файл), як правило, працює швидше .
(однак, дані все-таки потрібно прочитати з диска на деякий час)
Дивіться також (іноді корисне у ваших прикладних програмах, але практично рідко) читати (2) та posix_fadvise (2) та, можливо, madvise (2) та синхронізувати (2) та fsync (2) тощо.
Читайте також LinuxAteMyRAM .
BTW, тому рекомендується при порівняльному оцінюванні програми запускати її кілька разів. Крім того, саме тому може бути корисним придбати більше оперативної пам’яті (навіть якщо ви не запускаєте програми, використовуючи все це для своїх даних).
Якщо ви хочете зрозуміти більше, прочитайте книгу, наприклад, Операційні системи: Три простих п’єси
TL;DR
відповідь - "[блок очікування] I / O".