Месячный Архив: Июнь 2025

Linux

Как работает механизм Integrity Measurement Architecture (IMA) в Linux

Современные операционные системы становятся все более сложными, а вместе с этим растет и угроза несанкционированных изменений в их ядре, библиотеках и пользовательских приложениях. Особенно остро стоит вопрос доверия к программному обеспечению в корпоративной и критически важной инфраструктуре. Одним из ответов Linux на эти вызовы стал механизм Integrity Measurement Architecture (IMA) — технология, обеспечивающая контроль целостности исполняемых файлов, конфигураций и данных в реальном времени. читать далее »

Unix

Что происходит при execve: путь запуска программы пошагово

В операционных системах семейства UNIX (и подобных, включая Linux) системный вызов execve играет ключевую роль в запуске новых программ. Этот механизм не просто открывает или копирует исполняемый файл — он полностью заменяет текущий образ процесса в памяти новым, загружая указанную программу. Чтобы понять, что именно происходит при вызове execve, важно пошагово разобрать его работу, начиная с пользовательского уровня и заканчивая глубокими внутренними преобразованиями в ядре операционной системы. читать далее »

Общие вопросы ОС

Как работает Link Time Optimization (LTO) в GCC и Clang

Современная разработка программного обеспечения требует не только правильного кода, но и максимально эффективного его выполнения. Одним из инструментов, позволяющих добиться высокой производительности итоговых программ, является оптимизация на этапе компоновки — Link Time Optimization, или сокращённо LTO. Этот механизм реализован в таких популярных компиляторах, как GCC и Clang, и позволяет выполнять оптимизации, которые невозможны в пределах отдельного исходного файла. читать далее »

Общие вопросы ОС

Профилирование системных вызовов с помощью strace и ltrace

Оптимизация и отладка программного обеспечения на уровне взаимодействия с операционной системой — задача, требующая глубокого понимания внутренних процессов. Одним из наиболее доступных и мощных инструментов для анализа поведения приложений на уровне системных вызовов являются утилиты strace и ltrace. Эти инструменты позволяют разработчикам и системным администраторам видеть, какие именно вызовы выполняет приложение, сколько времени тратится на каждый из них и какова их последовательность. читать далее »

Linux

Как работает preload в Linux и когда он действительно ускоряет запуск

Современные операционные системы стараются сделать взаимодействие с компьютером максимально быстрым и комфортным. Одним из инструментов, помогающих в этом, является утилита preload в Linux. Этот небольшой, но весьма умный демон может значительно сократить время запуска часто используемых программ. Но работает ли он всегда? Как он устроен? И когда его действительно стоит использовать? Разберем всё по порядку. читать далее »

Linux

Использование perf для анализа узких мест в производительности ядра

Анализ производительности ядра Linux — одна из ключевых задач системных администраторов, разработчиков низкоуровневого программного обеспечения и инженеров, работающих с высоконагруженными системами. Для эффективного выявления узких мест в работе ядра существует множество инструментов, однако среди них особенно выделяется perf — мощный профилировщик, предоставляющий детальную информацию о поведении ядра и пользовательских приложений. Эта утилита входит в состав Linux Performance Counters и позволяет получить точную картину происходящего внутри системы. читать далее »

Виртуализация

Запуск GUI-приложений в контейнерах: проблемы и решения

Контейнеризация за последние годы стала одной из самых популярных технологий в области разработки и развертывания программного обеспечения. Docker, Podman и другие инструменты предоставляют изолированную среду для запуска приложений, упрощая управление зависимостями и обеспечивая совместимость между различными системами. Однако, когда речь заходит о графических интерфейсах, контейнеризация сталкивается с рядом трудностей, выходящих за рамки типичного CLI-приложения. Запуск GUI-приложений в контейнерах — это задача, требующая особого подхода, и в этой статье мы подробно разберём, с какими проблемами сталкиваются разработчики и как эти проблемы решаются на практике. читать далее »

Виртуализация

Как работает memory ballooning в KVM-гипервизорах

Современные виртуализационные технологии играют ключевую роль в эффективном использовании ресурсов серверов. Одним из важнейших инструментов, позволяющих динамически управлять оперативной памятью виртуальных машин, является технология memory ballooning. Особенно важной она становится в гипервизорах на базе KVM (Kernel-based Virtual Machine), активно применяемых в корпоративных и облачных инфраструктурах. Понимание механизма работы ballooning-а необходимо системным администраторам и инженерам виртуализации для оптимальной настройки рабочих нагрузок и обеспечения стабильности хост-системы. читать далее »

Виртуализация

CRI-O vs containerd: выбор рантайма для Kubernetes в продакшене

Выбор контейнерного рантайма для Kubernetes может оказаться решающим фактором для стабильности, производительности и безопасности продакшн-кластера. После ухода Docker из официального стека Kubernetes, внимание DevOps-инженеров и архитекторов сосредоточилось на двух ключевых альтернативах — CRI-O и containerd. Оба решения соответствуют интерфейсу Container Runtime Interface (CRI), поддерживаются сообществом и широко используются, но между ними есть принципиальные различия, которые необходимо учитывать при построении продакшн-инфраструктуры. читать далее »

Общие вопросы ОС

Namespace unsharing: запуск процессов с минимальной изоляцией

Современные операционные системы на базе Linux предоставляют богатый инструментарий для изоляции процессов с целью повышения безопасности и управляемости. Одним из ключевых механизмов в этом арсенале являются пространства имён (namespaces), которые позволяют изолировать различные аспекты среды выполнения, такие как файловая система, сетевая подсистема, идентификаторы пользователей и процессов. Однако в некоторых случаях полной изоляции оказывается избыточной — тогда в ход идёт частичное разобщение пространств имён. Этот подход известен как namespace unsharing, или запуск процессов с минимальной изоляцией. читать далее »