Развитие и использование Linux
Система Linux, как активно используемая и изучаемая, используется также для известных разработок. Например, все большую популярность приобретает ОС Google Android – ОС для мобильных устройств на основе ядра Linux (разработка фирмы Google).
Кроме того, в России на основе Linux разработана отечественная ОС для школьников - Альт- Линукс.
В целом, перспективы Linux мы считаем весьма многообещающими.
Ключевые термины
ELF (Executable and Linkage Format)– популярный формат файла исполняемого кода в UNIX и в Linux, основанный на представлении файла в виде совокупности секций.
Ext2FS– файловая система в Linux, основанная на использовании блоков небольшого размера и многоуровневой косвенной адресации.
Linux proc– файловая системы в Linux, основанная на отсутствии явного хранения данных и вычислении данных при выполнении запросов на ввод-вывод.
TTY– традиционное обозначение терминальных устройств в UNIX и Linux.
Конвейер (pipe) -механизм взаимодействия процессов в UNIX и Linux, позволяющий дочернему процессу наследовать коммуникационный канал от процесса-родителя.
Партнерская куча (buddy-heap) -метод распределения физической памяти в Linux, основанный на расщеплении блоков памяти и объединении соседних свободных блоков.
Подключаемые аутентификационные модули (pluggable authentication modules - PAM) –динамически подключаемые модули аутентификации пользователей, используемые в Linux.
Краткие итоги
Система распределения физической памяти в Linux использует механизм партнерской кучи, основанный на расщеплении свободных блоков и на объединении соседних свободных блоков памяти.
Виртуальная память в Linux основана на таблице страниц каждого процесса и логической точке зрения на память как совокупность непересекающихся смежных областей.
При создании нового процесса его адресное пространство пусто и наполняется регионами виртуальной памяти по мере загрузки программ. Системный вызов fork полностью копирует в дочерний процесс адресное пространство процесса-родителя.
Для управления страницами используется механизм откачки и подкачки.
Ядро Linux резервирует один регион виртуальной памяти каждого процесса для его собственных нужд, в частности, для размещения статической памяти.
Linux поддерживает как a.out- , так и ELF-форматы файлов исполняемого кода; статическую и динамическую линковку.
В Linux реализована виртуальная файловая система (VFS), скрывающая различие между разными системами файлов. Основная файловая система Linux – Ext2fs, основанная на использовании блоков небольшого размера, битовой карты блоков и многоуровневой косвенной адресации. Другая файловая система – Linux proc – не хранит данные явно, а генерирует их при выполнении запросов на ввод-вывод.
Система ввода-вывода Linux использует кэш страниц и буферный кэш. Устройства разбиты на три класса – блочные, символьные и сетевые. Для блочных устройств используется блочный буферный кэш. Длясимвольных устройств поддерживаются специфические операции ввода-вывода и не поддерживается произвольный доступ к блокам данных. Особым образом организованы драйверы терминальных устройств(TTY), для которых ядро поддерживает стандартный интерфейс.
Как и в UNIX, в Linux сигнализация о событиях для пользовательских процессов реализуется с помощью сигналов. Процессы ядра не используют сигналы и взаимодействуют с помощью системных структурпланировщика.
Для взаимодействия процессов используются конвейер (pipe) и разделяемые объекты в общей памяти.
Сетевая система Linux поддерживает как сетевые протоколы связи UNIX – UNIX, так и протоколы ОС, отличных от UNIX. Реализация сетевой системы Linux имеет три уровня абстракции: сокетный интерфейс, драйверы протоколов и драйверы сетевых устройств. Поддерживается набор протоколов Интернета. Обеспечивается маршрутизация пакетов на любом участке сети. На верхнем уровне протокола маршрутизацииподдерживаются протоколы UDP, TCP, ICMP.
Безопасность в Linux реализована на основе динамически подключаемых аутентификационных модулей. Управление доступом, как и в UNIX, осуществляется с помощью уникальных идентификаторов пользователяи группы и масок защиты. Реализована совместимость с POSIX – возможность многократно освобождать и получать uid процесса. Кроме того, реализована возможность выборочно передавать доступ к файлу любому серверному процессу.
Направления развития и использования Linux: новые ОС на основе ядра Linux (например, ОС для мобильных устройств Google Android) и обучение на основе Linux (российская ОС для школьников Альт Линукс).
Вопросы для самопроверки:
1. На каких принципах основана система распределения физической памяти в Linux?
2. Что такое партнерская куча?
3. Как организована виртуальная память в Linux?
4. Что такое регион виртуальной памяти?
5. Какие форматы файлов исполняемого кода поддекрживает Linux?
6. Каковы основные особенности формата ELF?
7. Что такое статическая и динамическая линковка и в чем их сравнительные достоинства и недостатки?
8. Что такое Linux VFS?
9. По каким принципам организована файловая система Ext2FS?
10. В чем особенность файловой системы Linux proc?
11. На какие три класса подразделяются устройства ввода-вывода в Linux?
12. Каковы особенности блочных устройств?
13. Каковы особенности символьных устройств?
14. Каковы особенности сетевых устройств?
15. Какими способами взаимодействуют в Linux пользовательские процессы и процессы ядра?
16. Что такое конвейер (pipe)?
17. Какие три уровня абстракции реализованы в сетевой системе Linux?
18. Что такое подключаемый аутентификационный модуль?
19. Какая информация используется в Linux для защиты файлов?
20. Какая ОС для мобильных устройств разработана на основе ядра Linux?
21. Какая ОС для школьников разработана в России на основе Linux?
Упражнения
1. Сравните и сформулируйте, в чем особенности системы управления физической памяти в Linux, по сравнению с методами управления памятью, рассмотренными в курсе.
2. Сравните и сформулируйте, в чем особенности системы управления виртуальной памяти в Linux, по сравнению с методами управления памятью, рассмотренными в курсе.
3. Сравните и сформулируйте, в чем особенности системы управления процессами в Linux, по сравнению с методами, рассмотренными в курсе.
4. Смоделируйте файловую систему Ext2fs, ее основные структуры данных и операции.