
- •25. Лекция: Обзор архитектуры и возможностей системы Linux: архитектура, ядро, распространение и лицензирование, принципы проектирования, управление процессами
- •Планирование задач ядра и синхронизация в ядре
- •Ключевые термины
- •Краткие итоги
- •Набор для практики Вопросы
- •Упражнения
- •Темы для курсовых работ, рефератов, эссе
Ключевые термины
GNU General Public License (GPL) – лицензия, согласно которой используется и распространяется Linux: программист, использующий Linux, либо создающий свои собственные системы на базе Linux, не имеет права превращать свой продукт в коммерческий; программное обеспечение, распространяемое на основе GPL, не может распространяться только в виде двоичного кода (т.е. в поставку Linux должен быть включен исходный код).
Загружаемый модуль ядра (loadable kernel module, LKM) – механизм Linux, обеспечивающий возможность компиляции, загрузки и выгрузки отдельных модулей кода ядра, независимо от остальной части ядра.
Идентификатор процесса (PID) - уникальный идентификатор процесса (число), используемое для указания процессов в операционной системе.
Контекст процесса – состояние исполняемой программы в любой момент времени; состоит из контекста планирования, контекста системы файлов, таблицы обработчиков сигналов и контекста виртуальной памяти.
Окружение процесса – системная структура, состоящая из двух векторов, завершающихся нулями: вектор аргументов командной строки процесса и вектор (переменных) окружения процесса.
Краткие итоги
Система Linux – популярная ОС, созданная в начале 1990-х гг. с целью разработки UNIX-совместимой ОС с открытым исходным кодом. Создатель Linux – Линус Торвальдс. Основная часть Linux полностью оригинальна и не содержит ведомственного конфиденциального кода.
Linux использует разработки BSD UNIX, AT&T UNIX, библиотеку X Windows. Разработка Linux поддерживается сетью разработчиков, связанных через Интернет.
Дистрибутивы Linux имеют стандартный формат (RPM), что обеспечивает совместимость между многочисленными диалектами Linux.
Ядро Linux распространяется на условиях GNU General Public License, суть которых в том, что разработки на основе кода Linux нельзя использовать для коммерческих целей, и распространение ПО, разработанного на основе Linux, должно включать исходные коды.
Linux в основном используется как серверная ОС. Доля ее использования как клиентской ОС очень мала.
Linux – свободно распространяемая полнофункциональная ОС с полным набором UNIX-совместимых инструментов. Обеспечивается совместимость с POSIX. Linux API соответствует UNIX SVR4, но не UNIX BSD.
Linux состоит из ядра, системных библиотек и системных утилит. Код ядра исполняется в привилегированном режиме. Системные библиотеки и утилиты исполняются в пользовательском режиме.
Важное новшество в Linux – механизм динамически загружаемых модулей ядра, который дает возможность отдельно компилировать, загружать, запускать и выгружать модули ядра. Компоненты модуля ядра – управление загрузкой модуля, регистрация драйверов и разрешение конфликтов.
Для управления процессами в Linux для каждого процесса создаются и используются его идентификация, окружение и контекст.
Для поддержки многопоточности в Linux используется системный вызов clone, который создает новый процесс в адресном пространстве процесса-родителя.
В отличие от многих ОС, планирование в Linux включает также и планирование задач ядра. Синхронизация в ядре требует, чтобы критическая секция одной части ядра не прерывалась другими критическими секциями.
При обработке прерываний все прерывания разделены на верхнюю половину (обычная обработка прерываний, с отключением рекурсивных прерываний) и нижнюю половину, исполняемую при включенном режиме прерываний с использованием мини-планировщика.
При планировании процессов в Linux учитываются кредиты и приоритеты. Используются классы планирования FIFO и round-robin.
Linux поддерживает симметричное мультипроцессирование (SMP).