Блок как единица данных в информатике¶
Блок — в информатике и программировании обобщённое обозначение непрерывного участка данных, памяти или физического хранилища, выделенного под определённую задачу. Термин широко используется в разных контекстах: блоки памяти, блоки на диске, блоки в базах данных, блоки в сетевых протоколах, блоки в блокчейне, а также блоки как синтаксические конструкции в языках программирования. Общая идея — логически или физически обособленная единица, имеющая фиксированный размер или границы и обрабатываемая как единое целое.
¶Блоки в файловых системах и на дисках
В дисковых накопителях блок (также сектор, кластер) — наименьшая единица адресации данных. Файловая система выделяет место под файл блоками фиксированного размера: типичные значения — 512 байт, 4 КБ, 8 КБ, 16 КБ и более. Например, в NTFS кластер по умолчанию составляет 4 КБ, в ext4 на Linux размер блока задаётся при создании файловой системы и может достигать 64 КБ. Файл, размер которого не кратен размеру блока, занимает последний блок частично, и разница называется «фрагментацией внутренней». Совокупность блоков, отведённых под файл, не обязана быть физически непрерывной — отсюда фрагментация файлов на HDD.
¶Блоки оперативной памяти
В контексте управления памятью блок — непрерывный участок адресного пространства, выделяемый процессу планировщиком памяти. В ранних операционных системах (например, IBM OS/360) память делилась на фиксированные блоки, а аллокация выполнялась по алгоритмам «первая подходящая» или «лучшая подходящая». В современных системах абстракция блока сохраняется в понятии страницы (обычно 4 КБ) и сегмента. Механизм виртуальной памяти разбивает адресное пространство процесса на страницы, которые могут храниться в оперативной памяти или выгружаться на диск (свопинг).
¶Блоки в языках программирования
В большинстве императивных языков (C, C++, Java, C#, Go, Rust) блок — конструкция вида { ... }, объединяющая набор операторов и задающая область видимости локальных переменных. Переменная, объявленная внутри блока, обычно недоступна за его пределами. В Go блоки определяют видимость переменных и управляют временем жизни объектов через механизм defer. В Python вместо фигурных скобок блок определяется отступом, в Ruby — ключевыми словами do ... end.
¶Блоки в сетевых протоколах
В коммуникационных протоколах блок — единица передачи данных с фиксированной или переменной длиной. В протоколе Ethernet минимальный кадр (блок данных) составляет 64 байта, максимальный — 1518 байт (без учёта VLAN-тегов). В протоколах хранения (iSCSI, Fibre Channel) данные передаются блоками, что отличает блочные устройства от файловых. В телекоммуникации термин «блок» применяется в ATM-сетях, где ячейка имеет фиксированный размер 53 байта.
¶Блоки в базах данных
СУБД разбирают данные на блоки — минимальные единицы ввода-вывода между диском и буферным пулом. Размер блока (страницы) в PostgreSQL по умолчанию составляет 8 КБ, в Oracle — от 2 КБ до 16 КБ. Индексы, журналы повторного выполнения и таблицы хранятся блоками. Алгоритмы буферного пулла (LRU, CLOCK) управляют кэшированием блоков в оперативной памяти.
¶Блоки в блокчейне
В технологии распределённого реестра блок — структура данных, содержащая набор транзакций, метку времени, хеш предыдущего блока и собственный хеш. Цепочка блоков образует неизменяемый журнал операций. Размер блока в Bitcoin ограничен 4 МБ (после обновления SegWit), в Ethereum зависит от лимита газа. Майнинг или валидация обеспечивают консенсус при добавлении новых блоков.
¶Блоки в электронике и логике
В цифровой технике логический блок — функционально законченная часть схемы: регистровый блок, блок управления, арифметико-логический блок (АЛУ). В программируемых логических интегральных схемах (ПЛИС) базовый элемент называется логическим блоком (logic block), а совокупность таких блоков с программируемыми связями образует архитектуру CLB (Complex Logic Block) в FPGA Xilinx или LE (Logic Element) в Altera.
¶Смежные понятия
Слово «блок» используется и в других областях: блок-схема — графическое представление алгоритма из прямоугольников-блоков; блок управления — подсистема, координирующая работу модулей; монолитный блок — программа, собранная как единое целое в противовес микросервисам.
¶Примечания
Термин «блок» не имеет единого формального определения: значение уточняется контекстом. Общей чертой остаётся идея ограниченного участка данных или функциональной единицы, обрабатываемой как целое.
Источники:
- Таненбаум Э., Бос Х. Современные операционные системы. — 4-е изд.
- Стоунбрейкер М., Чен Л. Внутреннее устройство систем баз данных.
- Гарсия-Молина Х., Ульман Дж., Видом Д. Системы баз данных: полный курс.
- Кормен Т. и др. Алгоритмы: построение и анализ.
- RFC 894, RFC 791 — стандарты передачи данных в IP-сетях.
