Современные операционные системы — это сложные экосистемы, обеспечивающие безопасность и стабильность работы множества пользователей и сервисов. Одним из важнейших компонентов, обеспечивающих контроль доступа, является PAM (Pluggable Authentication Modules), или модульная система аутентификации. Этот фреймворк лежит в основе процесса идентификации пользователей в Linux и UNIX-подобных системах, начиная с ввода логина и заканчивая получением доступа к системным сервисам. читать далее
Архив Категории: Общие вопросы ОС
Общие вопросы ОС Общие вопросы ОСКак работает initrd и зачем нужен stage 1 загрузки
Современные операционные системы, особенно семейства Linux, обладают сложной структурой запуска. Пользователю может показаться, что после включения компьютера система сразу же начинает работать, но на самом деле за кулисами происходит множество промежуточных этапов. Один из таких ключевых моментов — это стадия загрузки системы, называемая stage 1, и использование специального компонента под названием initrd (initial ramdisk). Чтобы понять, как функционирует процесс загрузки и почему он разбивается на этапы, важно рассмотреть, что именно происходит с момента включения питания до загрузки полноценной операционной системы. читать далее
Разница между preemptible и non-preemptible ядром в реальном времени
Разработка систем реального времени требует особого подхода к архитектуре операционной системы, особенно в вопросах планирования задач и обработки прерываний. Одной из ключевых характеристик таких систем является возможность или невозможность прерывания выполнения ядра. Эта особенность отражается в понятиях preemptible (прерываемое) и non-preemptible (непрерываемое) ядро. Чтобы понять, почему это так важно для реального времени, следует рассмотреть различия между этими двумя подходами более подробно. читать далее
Как работает systemd-oomd и почему он важен в настольных дистрибутивах
Современные операционные системы должны уметь грамотно управлять системными ресурсами, особенно памятью. Пользовательские задачи, браузеры, фоновые службы — всё это конкурирует за доступ к оперативной памяти, и при её исчерпании система может вести себя непредсказуемо. Ранее на Linux-системах этой проблемой занимался встроенный механизм OOM Killer, который активируется при остром дефиците памяти. Однако этот подход часто срабатывал слишком поздно, вызывая «заморозку» (freezing) системы и недовольство пользователей. Именно здесь на сцену выходит systemd-oomd — современный и более предсказуемый способ борьбы с нехваткой памяти в Linux. читать далее
Как работает Link Time Optimization (LTO) в GCC и Clang
Современная разработка программного обеспечения требует не только правильного кода, но и максимально эффективного его выполнения. Одним из инструментов, позволяющих добиться высокой производительности итоговых программ, является оптимизация на этапе компоновки — Link Time Optimization, или сокращённо LTO. Этот механизм реализован в таких популярных компиляторах, как GCC и Clang, и позволяет выполнять оптимизации, которые невозможны в пределах отдельного исходного файла. читать далее
Профилирование системных вызовов с помощью strace и ltrace
Оптимизация и отладка программного обеспечения на уровне взаимодействия с операционной системой — задача, требующая глубокого понимания внутренних процессов. Одним из наиболее доступных и мощных инструментов для анализа поведения приложений на уровне системных вызовов являются утилиты strace и ltrace. Эти инструменты позволяют разработчикам и системным администраторам видеть, какие именно вызовы выполняет приложение, сколько времени тратится на каждый из них и какова их последовательность. читать далее
Namespace unsharing: запуск процессов с минимальной изоляцией
Современные операционные системы на базе Linux предоставляют богатый инструментарий для изоляции процессов с целью повышения безопасности и управляемости. Одним из ключевых механизмов в этом арсенале являются пространства имён (namespaces), которые позволяют изолировать различные аспекты среды выполнения, такие как файловая система, сетевая подсистема, идентификаторы пользователей и процессов. Однако в некоторых случаях полной изоляции оказывается избыточной — тогда в ход идёт частичное разобщение пространств имён. Этот подход известен как namespace unsharing, или запуск процессов с минимальной изоляцией. читать далее
Как работает TCP BBR congestion control и когда его стоит использовать?
Современные сети передачи данных требуют более эффективных способов управления трафиком. Одним из таких решений стало управление перегрузками TCP BBR (Bottleneck Bandwidth and Round-trip propagation time), разработанное в Google. В отличие от традиционных алгоритмов, таких как Reno или Cubic, которые полагаются на потери пакетов как сигнал перегрузки, BBR использует совершенно другой подход — он моделирует доступную пропускную способность и задержку, чтобы максимально эффективно передавать данные. Разберемся, как работает этот алгоритм и в каких случаях он дает наилучшие результаты. читать далее
SELinux vs AppArmor: сравнение политик доступа на примерах
В современном мире информационной безопасности, где каждая уязвимость может стоить дорого, контроль доступа к ресурсам системы выходит на первый план. Одними из ключевых инструментов обеспечения безопасности на уровне ядра Linux являются системы мандатного контроля доступа SELinux и AppArmor. Несмотря на общую цель — ограничение доступа процессов к ресурсам — эти две технологии существенно различаются в подходах, механизмах и применении. Рассмотрим, в чем заключаются эти отличия, как они реализуются на практике и какой инструмент выбрать в зависимости от сценария использования. читать далее
Nftables vs iptables: почему стоит перейти и как начать?
В мире системного администрирования и информационной безопасности инструменты управления сетевыми фильтрами играют ключевую роль. В течение многих лет основным инструментом для настройки брандмауэра в Linux был iptables
. Он стал стандартом де-факто для контроля над трафиком на уровне ядра, предоставляя мощные механизмы фильтрации, трансляции и маршрутизации пакетов. Однако время не стоит на месте, и с выходом Linux Kernel 3.13 на арену вышел его преемник — nftables
. Новый инструмент не просто замена, а полноценная эволюция подхода к управлению сетевыми фильтрами. Разберёмся, в чём заключаются его преимущества и как правильно осуществить переход. читать далее